system.data.dllで発生しました。プログラムをリファクタリングしていたら起動時にコンソールへ上記のエラーが表示されるようになった。思い当たる節がないんだが・・・。sqlのinsert文を手直ししたけれど、起動時に引っかかる箇所じゃないし、DBのテーブルにフィールドを一個追加したことはしたけれど、起動時に見るテーブルとは無関係だし・・・。バックアップを作業前に念のためとっていたため、どこが引っかかるか再現させてみようとしたら、今度は現れない・・・。system.data.dllで発生しました。いうエラーがまた出た。studioを終了して、プロジェクトを開きなおしたら出なくなった。推測だけれど、デバッグでDB接続関連のエラーが一度出たらその後もずっとで続けるのだろうか。それとも私のvisualstudioが壊れてるか。vb.net謎のエラーが発生した・・・にコメントメモ2構文の備忘録。下記のコードは拙作のシンプルな家計簿(仮)で使っているコードです。if文if文のコードサンプル。下記のコードは時間によって挨拶文を変化させる分岐。Iffor文for文のコードサンプル。下記のコードはデータグリッド内の数値がプラスかマイナスかを一行ずつ判断例。'データグリッド内の金額を取得。vb.netメモ2にコメントmenustripのショートカットキーが効かないまた嵌ってしまったので備忘録。vb.netのmenustripコントロールに配置されたアイテムにshortcutkeysプロパティでキーを割り当てても、ショートカットが機能しない現象について。shortcutkeysプロパティでは色々と複雑なキーを割り当てることができるようになっているけれど、menustripの項目に設置しても何の反応もない・・・。あのファイル(F)や編集(E)や表示(V)といったお決まりの項目。ショートカットキーを設定して、設定したショートカットキーを押したときにはmenustripの項目がプルダウンするというか、メソッドとしてはshow()の動作をしてもらいたいのだけれど、効かない。なんでだ?としばらく考え込んでみたところ、menustripの項目にショートカットを割り当てるには&(アンパサンド)使わなければならない模様。テキストプロパティに、例えばファイルのメニュー項目ならば”ファイル(&F)”という風に入力すると、altキー+Fキーでプルダウンするようになる。こんな単純なことだとは知らずに、危うくkeypressイベントでkeycharを拾ってshowメソッドを呼ぶしかないかと実行するところだった。vb.netmenustripのショートカットキーが効かないにコメント進捗状況を表示するプログレスバープログレスバーの使い方プログレスバーは、アプリケーションが何かの処理中であることをユーザに知らせてあげるという役割を持っている。時間がかかる処理などの場合にその進行状況をプログレスバーのアニメーションで明示することで、ユーザに安心感を与えることができる・・・かもしれない。自分なりにプログレスバーの使い方を調べてみたところ、どうやらプログレスバーはプロパティの初期値と最大値、増加率を設定し、増加するタイミングにメソッドを呼び出すことで進捗率を表現する模様。具体的なプロパティ名は下記の通り。Me.progressBar.PerformStep()使い方によっては上手いやりかたがありそう。データベースに関わるプログラムを作る場合などで、プログレスバーの最大値をdatasetのレコード件数にして、プログレスバーの増加率を1にし、ループ処理中にPerformStep()を組み込むとか・・・・思いつきでやったことはないけれども。サンプルコードプログレスバーを使ったサンプルコードを下記に記してみる。使い方としては大体こんなイメージだろうと思う。vb.net進捗状況を表示するプログレスバーにコメントメモ現在改良中の家計簿ソフトのデータモデルを変更するかどうかについてのメモ。今のところはmicrosoftのaccessのjetという名前のデータベースでデータを管理している。作る前まではデータを保存する方法といえばこれ一択だった。技術と知識があまりないためだけれども。多少慣れてきたのでxml形式でのデータ保存に変更しようかどうか考え中。accessを使うことのデメリットファイルが破損した場合全てのデータが失われる可能性があるファイルサイズが大きくなった場合に処理速度が低下する可能性オフィスのバージョンアップ毎に機能の変更をチェックしなければならない(?)今のところ、accessのデメリットというものはあまり感じてない。accessに限ったことではないし、そうそう壊れるものでもないだろう・・・という楽観的な考えで、バックアップ機能を実装することで最低限これで良しとかいいかげんに考えているからなわけで。それで、accessを使うことをやめてxml形式にした場合にどうなるか考えてみた。2003以降で開くことができるメモ帳でも開くことができる別のプログラムで加工して利用するというようなこともできる(かも)mdbに比べてファイルサイズを小さくすることができる(かも)windows以外のコンピュータでも開くことができるxmlファイルをデータ保存に使うことのデメリットsqlを発行するデータベースに比べてデータの検索や追加などの処理速度が遅くなる可能性があるコード量が割り増ししそうで疲れそう(開発者にとって)データの秘匿・機密性というものがない(私が知らないだけかも・・・)パソコン初心者にはとっつきにくい。結論あまり、xmlを使うことのメリットらしいものは思いつかなかった。そもそも初心者向けの家計簿ソフトでxml形式のデータがどうしても欲しいなんていうことはないだろうしなぁ。処理速度が速くなってファイルサイズが小さくなるならxmlファイル形式にすぐにでも変更したいところだけど、そうとも言えないどころかパフォーマンスは悪化しそうだ。excelで開けるといっても年に1回するかどうかもわからない機能のためにこだわるわけにもいかんし。家計簿ソフトのxmlファイル形式への変更は、中止。今のままaccessのmdbで運用して、xmlファイル形式に出力できる機能を追加するというのがベストの予感。vb.netメモにコメントdatasetの内容をxmlファイルに出力するdatasetの内容をxmlに出力するのにはたった一行、writexmlという関数を使うだけでできあがる模様。datagridにバインドされたデータを一生懸命xml化するためにコードを考えていたのが馬鹿らしくなった。datasetの内容をxmlに変換できるというのは知らないとわからないけれど、xmlデータをdatagridにバインドできるのを知ってたのに逆を想像できなかったのが鈍すぎる。'datasetのテーブルからレコードの各値を取り出してノードを作成。レコード件数分ループ。訳の分からない現象が現れた。accessのmdbへselect文を発行して取得したテーブルをdatagridコントロールにバインドするようにプログラムした。デバッグで表示を確かめようとしたところ、一定時間経つとdatagridに一覧表示されていたレコードがフッと消えてしまう。一応時間を計ってみたところ120秒、2分ちょうどで消える・・・。datagridのプロパティをいじりすぎてぶっ壊してしまったんだろうか。新規にdatagridコントロールを作り直して、みたところ訳の分からない現象は出なくなった。プログラミングのミスではないところのトラブルが対処法がないだけに一番困る。monthcarendarコントロールのdatechangeイベントが悪さをしていた模様。私のプログラムミスでした。vb.netdatagridにバインドしたデータが120秒経つと消える・・・にコメントdatagridの選択した行のセルの値を取得する備忘。.netframeworks2.0のコントロールであるdatagridコントロールで、バインドされたデータ一覧から選択された行のセル値を取得する方法。datagridのSelectedRowsプロパティを使うとセルの値を取得することができるようになる。SelectedRowsという風に複数形になっているところに気づかなくてしばらく嵌ってしまった。行を複数選択された場合のことも想定されているようなのでインデックスを指定しなければセルの値は取得できない。SelectedRows(0)という風に。交差運転日記datagridの選択した行のセルの値を取得するにコメント今月の年月の値を取得するsqlのwhere句に使うための検索条件を作るときに迷ってしまったので覚え書き。出来てしまえばなんてことは無かったけれど、フォーマットとか関数とか調べても年月のみを取得するメソッドが見当たらなかったので自分で加工するしかなく、datetimeオブジェクトのtoday関数から日付を取得して、それをtostringして、余計な部分をremoveすることで年月のできあがり。下記にサンプルコード。(昔は文字列の加工やループとかいうものがアレルギーだったけれど、今はもう何の抵抗もなくなっている自分に驚き。'今日の日付から年の部分を取り出し。'今日の日付から月の部分を取り出し。format関数で形式を二桁に加工。