Rakuten

  • 楽天ダウンロード

おすすめ本

天気予報

最近のトラックバック

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

カウンタ

VC

admax

カテゴリ「パソコン・インターネット」の77件の記事 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月25日 (金)

EXCEL:CSVファイル読込で、先頭ゼロのデータをそのまま表示させる方法

エクセルでCSVファイルを読込む場合、先頭がゼロのデータが消されてしまい左寄せの様な表示になります。 例えば電場番号や商品コードなどでは、先頭にゼロが存在することは自然なことなので、 ゼロがサプレスされてしまうと不都合が在ります。

以下の様なCSVファイルをエクセルに読込んでみます。

Test1edit


エクセルの結果はやはり先頭ゼロが在りません。

Test1exl



そこで先頭ゼロのカラムデータは値をダブルコーテーションで囲んで先頭に = イコール)を 置いてやります。 以下の様にCSVファイルを変更してやります。

Test2edit


エクセルの結果は先頭ゼロが表示される様になりました。

Test2exl


上図のセルの値からも分かるように、値が ="0012345" とCSVファイルの値そのものになるので 注意が必要です。これをそのまま印刷しても 0012345 とちゃんと表示されます。

たった1日で即戦力になるExcelの教科書【電子書籍】[ 吉田拳 ]

価格: 1,922円
(2016/09/29 14:06時点 )

感想: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:プライマリディスプレイの上でフォームの表示位置設定する方法

今回の記事は、パソコンの画面上で、タスクバーを除いた部分でどの位置に表示するかを制御する簡単な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日 (金)

Windows7でのデスクトップの表示方法について

以前のWindowsXPでは、クイック起動バーに「デスクトップの表示」アイコンが在ったのですが、 Windows7では無いのかなと思い、今まで探してもみませんでした。

WindowsXPでは、クイック起動バーに「デスクトップの表示」アイコンが無い場合には、 以下のフォルダの中にある、「デスクトップの表示」アイコンをコピーして貼り付けたりしていました。
C:\Documents and Settings\Default User\Application Data\Microsoft\Internet Explorer\Quick Launch

Windows7では画面の右隅の小さいボタンの様なものが「デスクトップの表示」アイコンに該当します。 下の図の赤い枠で囲った部分です。

Desk1


この部分をクリックすれば、開いているウインドウは全て最小化されて、デスクトップ画面が表示されます。 今まで知らずにいたことが恥ずかしい限りです。
デル株式会社

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日 (月)

Oracleでのログインエラーでアカウントがロックされた場合の、強制ログインを使った対処方法

オラクルでログイン処理で何回もエラーを起こした場合には、既定回数を超えるとアカウントがロックされてしまいます。

以下のSQLの実行を見てください。(SQLコマンドラインから実行しています)
なお、既定回数はデフォルトでは10回の様です。10回目の「CONNECT」でアカウントがロックされました。


このTESTユーザのアカウントのロックを解除する為に、強制的にログインします。 「/ AS SYSDBA」でのログインはOS認証で「SYSDBA」の権限を持つログインになります。


「ALTER USER」命令によりアカウントをアンロックしています。
尚、強制ログインの方法は「CONNECT SYSTEM/MANAGER AS SYSDBA」などもあります。

新・門外不出のOracle現場ワザ ?エキスパートが明かす運用・管理の極意【電子書籍】[ 五十嵐建平, 大塚信男, 小田圭二, 村方仁, 谷敦雄, 宮崎博之, 神田達成 ]

価格: 2,894円
(2016/09/29 14:00時点 )

感想:0件

デル株式会社

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」キー入力時にイベント処理のキャンセルを行うことです。
デル株式会社