|
真っ先に思ったのが、
ODBCテーブルの商品番号フィールドを二つに分けて、
つまり、ハイフンの左と右に分けてそれぞれ別フィールドにすれば良かったのに、
ということです。
そうすれば、ODBCテーブルと「検索」テーブルとを簡単に結合できますね。
可能であれば、今からでも、ODBCテーブルのテーブル構成をそのように直すべきです。
アクセスでは、計算方法や処理方法に合わせて、テーブルを構成する必要があるからです。
この点、エクセルでは、まずワークシートの構成を決めてしまい、決めてしまったら、ワークシート構成を変えることはまずありません。
その後、ああいう計算をしたいとかこういう処理をしたいという要望が出てきたら、
豊富な関数をうまく組み合わせて、それら計算や処理をできるようにします。
これに対し、アクセスは、計算方法や処理方法はエクセルに比べると少ないです。
そのため、アクセスでは、限られた計算方法や処理方法に合わせて、テーブルを構成しなければなりません。
なので、ODBCテーブルのテーブル構成を直すのが、ベスト・チョイスです。
なお、アクセスにおいて、不適当なテーブル構成でも、
VBAを駆使すれば、やりたい計算や処理を実現することは不可能ではありません。
しかし、それらの計算や処理自体が無駄に複雑になります。
また、その後、さらなる機能を盛り込もうとした場合、きちんとしたテーブル構成をしている場合よりも、十数倍の手間がかかることになります。
その上、掲示板などで質問したとしても、「テーブル構成を直せ」というアドヴァイスしかもらえないことが多いです。
そうすると、全くの独力で、無駄に複雑な処理を組み立てることになります。
その覚悟があるのであれば、不適当なテーブル構成でもいいと思います。
次にセカンド・チョイスの話です。
ODBCテーブルのテーブル構成を直せないならば、その商品番号フィールドを二つに分ける、
つまり、その値のうち、「001234」部分と「***」部分とに分けたクエリを作ればいいと思います。
Left 関数、Instr 関数、Mid 関数あたりを研究してみてください。
最後に、サード・チョイスです。
>「先頭一致」したものだけを抽出したいのですが、
とのことですが、
OBDCテーブルの商品番号フィールドの値に Left 関数などを使うと、
ハイフンの右側、例えば、000000が取り出せるわけですから、
抽出条件は、この関数の結果と、検索テーブルのHCフィールドとを比較するようにすれば、いいです。
この抽出条件は、
Left(ODBC.商品番号,ごにょごにょ) = 検索.HC
というものになります。
クエリをSQLビューで作るなら、この抽出条件をそのまま WHERE 句に入れるだけですが、
クエリ・デザイナで作るなら、この抽出条件は左辺に関数が使われているので、
このままでは使えません。
クエリ・デザイナで作るなら、一工夫が必要となります。
|
|