JavaScriptを使って、バイパス的な処理を作ってるのだが、非常に面倒くさい。
他のシステムで定義された変数をFlashの項目名に設定するのであるが、それぞれ記号的な名前、それも体系が違うのでバグを孕みやすい。
そこで、それぞれを関連付けるテーブルを作成して間違いを起こさないようにしてみようと試みた。
しかし、テーブルを数字で定義するとそれはそれでややこしい。
tbl[1].DispID = "AA0451"; // 画面の項目名
tbl[1].MemID = "toroku1520"; // 他のシステムの項目名
てなように定義して対応させる。プログラム内での呼称も定義して
tbl[1].ItemName = "KokyakuName"; // プログラム内での項目名
としたとしても、[1]とか、数字でアクセスするか、ItemNameを検索して、という効率の悪いことをしなければならない。数字じゃなくて名前とかでアクセスできないのか?
調べるとあった!それが連想配列というもので、
tbl['KokyakuName'].DispID = "AA0451"; // 画面の項目名
tbl['KokyakuName'].MemID = "toroku1520"; // 他のシステムの項目名
というように書ける。
(上記は動く例ではありません。)
さて、こういうことってVBAでできるのかな?と調べた。ちょっと見た限り、VBAで連想配列を紹介されているのは実務で使えない。上記で言う[]内をキーとして、従属するデータを抜き出したいのだ。そう、JavaでいうHushMapのようなもの、汎用機のVSAMみたいなもの、RDBのキーでのアクセスみたいたもの、である。
試行錯誤の結果、うまくできた。ただ、これは順を追って解説しないと分からないだろう。
合間を見て、スタックやキューを説明し、その後に連想配列を解説してみたいと思う。
他のシステムで定義された変数をFlashの項目名に設定するのであるが、それぞれ記号的な名前、それも体系が違うのでバグを孕みやすい。
そこで、それぞれを関連付けるテーブルを作成して間違いを起こさないようにしてみようと試みた。
しかし、テーブルを数字で定義するとそれはそれでややこしい。
tbl[1].DispID = "AA0451"; // 画面の項目名
tbl[1].MemID = "toroku1520"; // 他のシステムの項目名
てなように定義して対応させる。プログラム内での呼称も定義して
tbl[1].ItemName = "KokyakuName"; // プログラム内での項目名
としたとしても、[1]とか、数字でアクセスするか、ItemNameを検索して、という効率の悪いことをしなければならない。数字じゃなくて名前とかでアクセスできないのか?
調べるとあった!それが連想配列というもので、
tbl['KokyakuName'].DispID = "AA0451"; // 画面の項目名
tbl['KokyakuName'].MemID = "toroku1520"; // 他のシステムの項目名
というように書ける。
(上記は動く例ではありません。)
さて、こういうことってVBAでできるのかな?と調べた。ちょっと見た限り、VBAで連想配列を紹介されているのは実務で使えない。上記で言う[]内をキーとして、従属するデータを抜き出したいのだ。そう、JavaでいうHushMapのようなもの、汎用機のVSAMみたいなもの、RDBのキーでのアクセスみたいたもの、である。
試行錯誤の結果、うまくできた。ただ、これは順を追って解説しないと分からないだろう。
合間を見て、スタックやキューを説明し、その後に連想配列を解説してみたいと思う。