FC2ブログ

TreeViewコントロールに挑戦

POSレジソフトも開発・使用中ですが、それに連携する商品管理ソフトも作成しています。

かなり完成に近づいてきました。
商品管理

画面左側に商品分類ツリーを設けているところが”ミソ”です。
Access VBAのTreeViewコントロールを使いましたが、だいぶ苦労しました。

商品分類テーブルから分類名を取出し、NodesコレクションのAddメソッドを使って”ノード”を登録していくのですが、
TreeView.Nodes.Add [Relative], [Relationship], [Key], [Text], [Image], [SelectedImage]
の式の中の[Text]が登録するノードの表示名で、[Key]がノードを識別する名前になります。
このKeyをTextと同じ内容にしている例があるのですが、Key値は重複が許されません。
分類ツリーが細分化していくと、どうしても同じ分類名が出てくる(例えば、LANケーブルにも2mがあるし、USBケーブルにも2mがある)可能性があるので、Text値は重複しますが、Key値は一意の値にしないといけないのです。
そこで、同じ親の中には重複する子供の名前は無いので、[親名]&[子名]をKey値としました。
また、分類の親子関係が必要になるので、分類テーブルには親分類のフィールドを設定しています。
分類は5階層まで設定したので、Do~Loopを5重の”入れ子”にし、登録部分のコードが出来上がりました。

このツリー・ビューの目的は、分類名をクリックするだけでフィルタをかける(商品を絞り込む)ことです。
画面右下の[検索]タブでも複合検索はできるのですが、分類だけで絞り込み、価格を比較するということはよくやるので、この機能があると大変便利です。
ノードをクリックしたときのイベントが、TreeViewのNodeClickイベントなのですが、
ここで失敗したのは、このイベント・プロシージャを一から入力して記述してしまい、エラーが出てしまったことです。
この原因を見つけるまでかなり苦労しました。
単語一字一字何度も見直しましたが、構文には間違いはありません。
プロシージャの中に何も記述しなくてもエラーになり、プロシージャ全体をコメントアウトするとエラーがでません。
フォームのTreeViewのプロパティのイベントの中にクリック時が無いので、「そもそもクリック時イベントはAccess2010で非対応になったのかな?」とか思ったり、2010にTreeViewに関するバグがあるような情報を見つけたので、更新をかけたりしましたが解決しませんでした。
そこで、このプロシージャ部分を一旦削除し、VBAウィンドウのオブジェクト欄からTreeViewを選択し、プロシージャ欄からNodeClickを選択して作成しました。
そうしたら、エラーが出なくなりました!
非常に単純で基本的なことなのですが、同様の原因でコードがうまく実行できないことがありました。
プログラミングに慣れてくると陥りやすい”落とし穴”だと思います。

ノードをクリックしたときに得られるプロパティの中に[FullPathプロパティ]があり、そのノードまでのフルパスを返します。
例えば、「インク」を選択すると、「分類¥在庫管理商品¥消耗品¥インク」という文字列が得られます。
この文字列を操作することによって、その分類の親分類名を全て得ることができます。
検索をかけるための条件は整ったので、NodeClickイベントの中身を書いていくわけですが、商品テーブルと分類テーブルを結合して検索する必要があるので、SQL文の”SELECT~JOIN~”を使ったのですが、ここでまたつまずきました。
「JOIN式はサポートされません。」と叱られてしまったのです(;_;)
これも原因が分かるまで苦労しましたが、その原因は”ずぼら”でした。
単純なSELECT文の中では、各フィールド名の記述だけでよいのですが、複数のテーブルを結合する場合は、[テーブル名].[フィールド名]というように記述しないといけないのに、フィールド名が重複していなければよいと思い、テーブル名を省略していたのです。
これも基本的なことなので、面倒でもちゃんと基本に則らないとダメですね。

検索部分も、If~Then~Else構文を入れ子で何重にもし、ついにTreeViewコントロールの完成です!
スポンサーサイト



theme : プログラミング
genre : コンピュータ

プロフィール

tasys

Author:tasys
FC2ブログへようこそ!

カレンダー
プルダウン 降順 昇順 年別

06月 | 2016年07月 | 08月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -


最新記事
最新コメント
カテゴリ
天気予報

-天気予報コム- -FC2-
フリーエリア
検索フォーム
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード