おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

カテゴリ「VB.NET」の82件の記事 Feed

2016年3月26日 (土)

VB.NET:ADO.NETを使用したSQL-ServerのテーブルのCSV出力

ADO.NET を使用した SQL-Server のテーブルをCSVファイルに出力する簡単な関数を作成してみました。

CSVファイルを作成する関数への引数は、データベース名とデータソース名と、SQL文、それとCSVファイル名とCSV内のカラムヘッダを 出力するかのフラグになります。

CSV出力処理関数内では SQL-Server への接続をオープンし、指定されたSELECT文を実行します。 SELECT文の結果の行が在れば、1行づつデータを取得します。 初回の行の処理の場合には、リーダーオブジェクトからカラム名を取得しヘッダ行を書き込みます。 その後、各データ行をCSVファイルに書き込みます。 CSVの各データは強制的にダブルクォートで囲む様にしていますので、 データ内のダブルクォートはエスケープ処理しています。


尚、今回のテーブルは以下の生成文で生成しました。

結果的にCSVファイル内容は以下の様になります。


■関連記事
BCPコマンドでUnicode文字形式を使用したデータのインポート及びエクスポート(SQL Server)について
ADO.NET での DataReader の入れ子エラー
ADO.NET を使用した SQL-Server へのアクセス・クラス
SQL-Serverの自動採番(IDENTITY値)の取得・リセット
SQL-Serverのストアド・ファンクションではUPDATEなどが実行できない
SQL-Serverのユーティリティ(BCPコマンド)を利用したテーブルへのインポート・エキスポート
SQL-Serverのプロシージャ生成のバッチ実行
SQL-Serverの関数・プロシージャのVB.NETでの実行

デル株式会社

楽天市場

2016年3月23日 (水)

VB.NET:Spreadのチェックボックス型セルにはCheckChangedイベントを、ボタン型セルにはClickイベントの発生方法

以前のSPREADの以下の記事では、ボタンクリックのイベントとして FpSpread1.ButtonClicked で処理していたため、 ボタンもチェックボックスもボタンイベントとして処理されてしまいました。

■VB.NET:Spreadのセルのボタンクリック時のイベント処理

それで、ボタンはクリックイベントで処理をし、チェックボックスは値が変化したイベントで処理する様にします。
チェックボックス型セルでは編集中のエディタとして FpCheckBox クラスが、 ボタン型セルでは編集中のエディタとして FpButton クラスが使用されます。 それで、それぞれのセルタイプのセルが編集モードに入った時点で、  FpCheckBox  CheckChanged イベントにハンドラを設定し、 さらに FpButton  Click イベントにハンドラを設定します。


下図は、最初、フォームが表示され[Button1]をクリックした時の様子です。

Edit1


その後、Spread上のボタンをクリックした結果が以下の図です。

Edit2


チェックボックスをクリックした結果が以下の図です。

Edit3

■関連記事
VB.NET:SpreadでのEnter時にセルを右移動させる方法
VB.NET:Spreadでフォーカスを持っていない時にセル枠を表示しない設定
VB.NET:Spreadのヘッダカラム及び、通常のカラムの連結
VB.NET:Spreadのシートへの簡単な一覧データの設定について
VB.NET:Spreadのシートのセルにボタン、テキスト、チェックボックスのセルタイプの設定
VB.NET:Spreadのセルのボタンクリック時のイベント処理
VB.NET:Spreadのセルへのデータ設定の描画速度アップ
VB.NET:Spreadのセルのチップウインドウで別に設定された文字列を表示する
VB.NET:Spreadでデータ一覧表示を簡単に行う方法について
VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)
VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)その2
VB.NET:Spreadデータ一覧表示での自動ソート実行時に複数のソート条件を指定する方法について
VB.NET:Spreadで異なるSPREADコントロール間でシートデータのコピーを行う方法
VB.NET:SpreadでのCSV出力とCSV入力を使って、異なるSPREADコントロール間でシートデータのコピーを行う方法
VB.NET:SpreadシートのPDF出力と表示を行う方法
VB.NET:2個のSpread間での[Enter]キー、矢印キーなどでフォーカス移動を行う方法
VB.NET:Spreadの数値セルタイプを使ってデータメンテナンスのプログラムに使う方法
VB.NET:Spreadのテキストセルでバイト数入力制限を掛ける方法

Visual Basic 2013逆引き大全 555の極意【電子書籍】[ 増田智明 ]

価格: 2,527円
(2016/09/29 14:32時点 )

感想:0件

デル株式会社


楽天市場

2016年3月22日 (火)

VB.NET:コンボボックスへの項目設定、設定値の取り扱うクラスを作成してみました

標準コントロールのコンボボックス(ComboBox)ですが、このコントロールへの設定値は Items で行います。 フォームのデザイナ上でプロパティウインドウの中から設定してもいいのですが、 今回は Items に設定する項目をクラスとして定義し、 それを指定のコンボボックスに設定するクラスを作成してみました。

 Items に設定できるデータ型は Object 型の配列として宣言されていますので、 クラスの値の配列を設定が可能です。

以下のソースでは、全体のクラス名を ClsCombo として宣言し、 コンボの Items に設定されるデータを ComboItem として宣言しています。
このクラスを使用する場合は、 ComboItem で項目値を配列として宣言し、  ClsCombo のコンストラクタに渡す様にします。


■プロパティ

プロパティ名 内容
ComboDivision 選択区分値(数値)を取得
ComboDivString 選択区分値(文字列)を取得
ComboText 選択区分名(Text)を取得


■メソッド

メソッド名 引数 内容
SetComboSeletedIndex 区分値(Long) 区分値を選択状態に設定
SetComboSeletedIndex 区分値(文字列) 区分値を選択状態に設定



このクラスを使う例として以下のソースを示します。

プライベート変数で今回のクラスの変数と、コンボに設定する項目値の配列を宣言します。 その後、フォームロード時イベントでクラス変数の生成を行い、初期選択値を設定します。

Combo1


ボタンクリック時イベントで選択されている区分値とコンボボックスに表示されているテキスト文字列を クラスより取得し表示しています。

Combo2

Visual Basic 2013逆引き大全 555の極意【電子書籍】[ 増田智明 ]

価格: 2,527円
(2016/09/29 14:32時点 )

感想:0件

デル株式会社


楽天市場

2016年3月19日 (土)

VB.NET:Spreadのテキストセルでバイト数入力制限を掛ける方法

Spreadのテキストセルで入力する文字数をバイト数で制限する方法について、 Shift-JISエンコーディングのバイト配列処理メソッドを使って行います。

バイト数制限というのは、ほぼShift-JISに由来する考え方で、 データベースの文字列定義をShift-JISにしておくと オラクルのVARCHAR2のデータ型でもバイト数制限は必要でした。

以下にソースを示しますが、少し説明します。
最初にフォームロード時に、Shift-JISの文字エンコーディングを生成し、 Spreadの編集モードセルのテキスト変更時イベント処理と、 データモデルに変更時イベント処理を宣言しています。
また、両方のイベントで使う、文字列の最後の漢字の泣き別れを防ぐ関数導入しました。 既に入力された文字が"あいうえ1"の場合に、さらに漢字で"お"と入力されても "お"の文字の前半分が残らない様にしています。
Spreadbyte


最後の「漢字の泣き別れ」処理関数ですが、 上の例で既入力が"あいうえ1"でさらに漢字で"お"と入力した場合は、 2行目の str "あいうえ1・"となり、 最後の文字が漢字の中点になってしまいます。

結果 GetByteCount すると1バイト増えて  nLen よりも必ず大きい値になります。 それでこの場合に、最初にバイト配列化した長さを nLen-1 にして文字列化することで "あいうえ1"となります。

■関連記事
.NET開発テクノロジ入門2016年版Visual Studio 2015対応版
VB.NET:SpreadでのEnter時にセルを右移動させる方法
VB.NET:Spreadでフォーカスを持っていない時にセル枠を表示しない設定
VB.NET:Spreadのヘッダカラム及び、通常のカラムの連結
VB.NET:Spreadのシートへの簡単な一覧データの設定について
VB.NET:Spreadのシートのセルにボタン、テキスト、チェックボックスのセルタイプの設定
VB.NET:Spreadのセルのボタンクリック時のイベント処理
VB.NET:Spreadのセルへのデータ設定の描画速度アップ
VB.NET:Spreadのセルのチップウインドウで別に設定された文字列を表示する
VB.NET:Spreadでデータ一覧表示を簡単に行う方法について
VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)
VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)その2
VB.NET:Spreadデータ一覧表示での自動ソート実行時に複数のソート条件を指定する方法について
VB.NET:Spreadで異なるSPREADコントロール間でシートデータのコピーを行う方法
VB.NET:SpreadでのCSV出力とCSV入力を使って、異なるSPREADコントロール間でシートデータのコピーを行う方法
VB.NET:SpreadシートのPDF出力と表示を行う方法
VB.NET:2個のSpread間での[Enter]キー、矢印キーなどでフォーカス移動を行う方法
VB.NET:Spreadの数値セルタイプを使ってデータメンテナンスのプログラムに使う方法
VB.NET:Spreadのチェックボックス型セルにはCheckChangedイベントを、ボタン型セルにはClickイベントの発生方法


デル株式会社
楽天市場

VB.NET:プライマリディスプレイの上でフォームの表示位置設定する方法

今回の記事は、パソコンの画面上で、タスクバーを除いた部分でどの位置に表示するかを制御する簡単なTIPSです。
通常パソコンのディスプレイは1台なのでプライマリディスプレイと言えば表示画面そのものですが、 System.Windows.Forms.Screenクラスのプロパティ PrimaryScreen から画面の情報を取得できます。
 PrimaryScreen プロパティはSystem.Windows.Forms.Screenクラスで以下の様なプロパティを持っています。
プロパティ 内容
BitsPerPixel 1 ピクセルのデータに関連付けられているメモリのビット数を取得
Bounds ディスプレイの範囲を取得
WorkingArea ディスプレイの作業領域を取得。作業領域とは、ディスプレイのデスクトップ領域からタスクバー、ドッキングされたウィンドウ、およびドッキングされたツール バーを除いた部分


画面の表示は以下の様になります。 Form1_2
以下の今回のソースを示しますが、画面中央、左上、右上、左下、右下のラジオボタンをクリックし ボタンをクリックすると、指定位置にフォームが移動します。
タスクバーの領域を除いた部分での画面位置ですので、 WorkingArea プロパティを使います。

この例の関数ですが、仕事で普通に使う場合は、画面中央に表示する場合がほとんどでした。
基礎Visual Basic 2015 基礎シリーズ
デル株式会社

2016年3月18日 (金)

VB.NET:Spreadの数値セルタイプを使ってデータメンテナンスのプログラムに使う方法

マスタのメンテテンス用プログラムとしては、1個のウインドウでいろんな項目を入力するのですが、 基本的には項目名とそれに対応するデータ入力コントロールとしてテキストボックス等を設置します。
このテキストボックスには入力の書式や、キーデータの選択等を自分で組んでやる必要があります。 市販の入力用コントロールを使えばいいのですが、自分で組むと結構大変です。
そこで、SPREADの出番なのですが、SPREAD自身には既に入力コントロールが備わっています。 これを使わない手はありません。SPREADなので表形式になってしまいますが、 この形が許されるのであれば、SPREADを使っていいのではと思います。

SPREADには、数値セルタイプとして CurrencyCellType , NumberCellType がありますが、 今回は NumberCellType を使って数値用のメンテナンスを行う場合を想定した例を紹介します。

画面の表示は以下の様になります。 Num1
以下の今回のソースを示しますが、フォームのロード時に全ての数値セルの CellType を設定しています。 尚、最後のコード的なセルは、通常では編集入力後の表示で先頭ゼロを行う様に、  NumberCellType を拡張したクラスを定義しています。
また、セルの編集時には背景色と文字色を変更して入力を分かりやすくしています。


下図は、「Button1」をクリックした時の表示です。 Num2_2

■SPREADをコントロールを何個も設置

SPREADの表形式が気に入らないのであれば、テキストボックスを何個も設置する様に1セルしかないSPREADを個別に設置し、 それぞれのSPREADのセルにCellTypeを設定してやれば テキストボックス的に使えます。
この方法だと、SPREADコントロールを何個も設置するのでプログラムの動きが重くなるかも しれませんが、意外と使える方法だと思いますが、如何でしょうか?

■関連記事
VB.NET:SpreadでのEnter時にセルを右移動させる方法
VB.NET:Spreadでフォーカスを持っていない時にセル枠を表示しない設定
VB.NET:Spreadのヘッダカラム及び、通常のカラムの連結
VB.NET:Spreadのシートへの簡単な一覧データの設定について
VB.NET:Spreadのシートのセルにボタン、テキスト、チェックボックスのセルタイプの設定
VB.NET:Spreadのセルのボタンクリック時のイベント処理
VB.NET:Spreadのセルへのデータ設定の描画速度アップ
VB.NET:Spreadのセルのチップウインドウで別に設定された文字列を表示する
VB.NET:Spreadでデータ一覧表示を簡単に行う方法について
VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)
VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)その2
VB.NET:Spreadデータ一覧表示での自動ソート実行時に複数のソート条件を指定する方法について
VB.NET:Spreadで異なるSPREADコントロール間でシートデータのコピーを行う方法
VB.NET:SpreadでのCSV出力とCSV入力を使って、異なるSPREADコントロール間でシートデータのコピーを行う方法
VB.NET:SpreadシートのPDF出力と表示を行う方法
VB.NET:2個のSpread間での[Enter]キー、矢印キーなどでフォーカス移動を行う方法
VB.NET:Spreadのテキストセルでバイト数入力制限を掛ける方法
VB.NET:Spreadのチェックボックス型セルにはCheckChangedイベントを、ボタン型セルにはClickイベントの発生方法

デル株式会社
楽天市場

2016年3月17日 (木)

VB.NETのComboBoxに枠線(ボーダー)を表示する様に拡張したクラス(Border/BorderStyle/BorderWidth)

VB.NETの ComboBox には枠線(ボーダー)を表示するプロパティが標準ではありません。
 ComboBox  FlatStyle  Flat に設定すると、 枠線が白色になりよく見えなくなります。 そこで、 ComboBox の拡張クラスを、 枠線の色、枠線の種類、枠線の幅を追加のプロパティとして作成しました。 クラス名は名前は ComboBoxFrm とします。

以下に ComboBoxFrm クラスのソースを示します。

ウインドウメッセージの処理の中で、 WM_PAINT のタイミングで コンボボックスコントロールの枠を描画しています。
描画にはControlPaintクラスの静的メンバとして用意されている DrawBorder メソッドを使います。
尚、枠線の幅は大きすぎても変な表示になりますので、3までに抑えてあります。

このクラスをフォームに張り付けた時のプロパティのウインドウは以下の様な表示になります。 Cbo1
このクラスをフォームに張り付けたプログラムを実行すると以下の様な表示になります。 Cbo2
世界でいちばん簡単なVisualBasicのe本[最新第4版] VisualBasicの基本と考え方がわかる本
基礎Visual Basic 2015 基礎シリーズ

楽天市場

2016年3月16日 (水)

VB.NETでのXMLファイルをINIファイル風に使う方法について

INIファイルは簡単にプログラムの動作パラメータなどを保存しておくには便利な機能です。 この機能をXMLファイルで出来る様にクラスを作成してみました。 「VB.NETでのINIファイルからのデータ取得・書込について」の記事で作成したINIファイル用クラスにほぼ似せています。

XMLファイルの構造は以下の様になります。
Xml1

以下にXMLファイルを取り扱うクラスのソースを示します。

このクラスを利用する例を以下に記します。 尚、このクラスですが各関数でエラーが発生した時には Throw ex で返していますので、 呼び出し元では Try...Catch でエラー処理の記述が必要です。
(以下の例ではそれはしていませんが…)
このプログラムを実行すると、XMLファイルは以下の様に変更されます。 Xml2
デル株式会社
■関連記事
VB.NETでのINIファイルからのデータ取得・書込について

世界でいちばん簡単なVisualBasicのe本[最新第4版] VisualBasicの基本と考え方がわかる本
.NET開発テクノロジ入門2016年版Visual Studio 2015対応版

2016年3月15日 (火)

VB.NETでのINIファイルからのデータ取得・書込について

INIファイルというと今更感がありますが、 簡単にプログラムの動作パラメータなどを保存しておくには便利な機能です。 私もプログラムの変更なしに、外からタイミングの時間の値を後から少し変えたい場合によく使います。

INIファイルの構造は以下の様になります。
----------
[SECTION1]
KEY1=keydata1
KEY2=keydata2

[SECTION2]
KEYA=keydataA
...
----------

■セクション

[] で囲まれた部分がセクションで、各セクションの中にキー文字列を宣言します。

■キー 各セクションの中に宣言される文字列で、その値を = で定義します。
セクションが異なれば、同じキーが在ってもOKです。

■コメント

先頭に ;(セミコロン) を置くとその行はコメント行とみなされます。
また、行の途中に ;(セミコロン) が在ると、それ以降はコメントであるとみなされます。

■エスケープシーケンス

キーの値の文字列として ;(セミコロン) :(コロン) =(等号) #(シャープ)  の各文字を含めたい場合があります。その時には各文字の前に \(円マーク) を置きエスケープしてやります。
(以下のソースのクラスではエスケープシーケンスの設定と解除を関数化しています)

以下にINIファイルを取り扱うクラスのソースを示します。


このクラスを利用する例を以下に記します。

INIファイルへの書込みでエスケープしないといけない文字を含んでいますので、 このプログラムを実行し「TEST.INI」をテキストエディタで確認すると、  \(円マーク) が付加されて書き込まれているのがわかるはずです。

Ini1


デル株式会社

■関連記事
VB.NETでのXMLファイルをINIファイル風に使う方法について

Visual Basic 2013逆引き大全 555の極意【電子書籍】[ 増田智明 ]

価格: 2,527円
(2016/09/29 14:32時点 )

感想:0件

2016年3月14日 (月)

VB.NETの入力コントロールのフォーカス移動を「Enter」キーで行う

VB.NETのフォームに張り付けた入力コントロールの遷移は通常は「Tab」キーで行えますが、 「Enter」キーでも次の入力コントロールへフォーカスを移動したい要求は少なからずあります。

普通の人はテキストボックスに何かを入力し、入力の最後に「Enter」を押したくなります。 キーボードの配置(形)からしても1個の入力後は「Enter」を押すことが前提の様な感じがします。

さて、複数のTextBoxを並べたFormを例にしますが、画面的には以下の様な感じです。 この画面で、各TextBoxで「Enter」キーを押下した時に、次のコントロールにフォーカスを移動させます。

Enter1



次のコントロールにフォーカスを移動させるためのメソッドが、Formコントロールのメソッドとして在ります。 以下のメソッドがそうです。
-----
SelectNextControl(ctl As System.Windows.Forms.Control, forward As Boolean, tabStopOnly As Boolean, nested As Boolean, wrap As Boolean) As Boolean
-----

引数内容
ctl 検索を開始する位置にある System.Windows.Forms.Control
forward タブ オーダー内を前方に移動する場合は true、後方に移動する場合は false
tabStopOnly System.Windows.Forms.Control.TabStop プロパティが false に設定されているコントロールを無視する場合は true、それ以外の場合は false
nested 入れ子になった (子コントロールの子) 子コントロールを含める場合は true、それ以外の場合は false
wrap タブ オーダーの最後のコントロールに到達した後、タブ オーダーの最初のコントロールから検索を続行する場合は true、それ以外の場合は false



このメソッドをKeyDownイベントで呼出せる形でメソッド化し、 FormのKeyDownで呼出してやるか、または、フォームのコンストラクタでKeyDownイベントにハンドラとして追加してやります。
以下のソースでは、コンストラクタでKeyDownイベントにハンドラを追加しています。



■「Enter」キーによるコントロールの移動メソッド時にビープ音の消音

入力コントロールで「Enter」キーを押下するとビーとBeep音がなります。 これを止めるには、KeyDownイベントで「Enter」の次のコントロール移動をした様に、 KeyPressイベントで、「Enter」キー入力時にイベント処理のキャンセルを行うことです。
デル株式会社