VB2005で作成しています。
DBはAccess2000です。
T_TESTというテーブルに、IDというフィールドがあり、
VBのフォームにはコンボボックスとDataGridViewがあります。
IDフィールドの値はそのままではコンボボックスの値と比較できないので
自作関数(SetDesignID)で加工し、返り値と比較します。
一致したレコードのみをDataGridViewに表示します。
このSQLはどう作成したら良いでしょうか?
Accessだと、下記でもうまくいくのですが、
VBだとどう書けばいいのかわかりません。
strSQL = "SELECT * FROM T_TEST
strSQL = strSQL & "WHERE SetDesignID([ID]) = コンボボックスの値"
宜しくお願い致します。
セキュリティ対策のため、基本的には、
Access内で定義されたVBA関数をSQL文に含めてVBから実行することはできません。
関数をVB内で作成してSQLで抽出後に加工されるか、
もしくは、SQLServer等に移行してユーザ定義関数を利用するか、
SandBoxモードについて調べてみてください。(多くは魔界の仮面弁士殿の投稿と思われますが)
http://support.microsoft.com/default.aspx?scid=kb;ja;239482
http://www.trusnet.com/advisories/jetshell/jetshell.txt
もげ様ありがとうございます。
書き方が悪かったですね。
Access内で定義しているのではなく、
VBでクラスを作成し、その中にある関数をSQLで使用したいのです。
失礼しました。
>Accessだと、下記でもうまくいくのですが、
ということで勝手にAccess内で定義しているものと誤解してました。
>VBでクラスを作成し、その中にある関数をSQLで使用したいのです。
(SQLServerをSQLと称する人も居るので一応)
Jetに対するSQLと解釈しますと、回答も理由も同じでして、
VB内に定義したユーザ定義関数をJetのSQLに含めることはできません。
関数をVB内で作成して、SQLで抽出してから関数をかまして加工されるか、
もしくは、SQLServer等に移行してユーザ定義関数を利用するか、
SandBoxモードについて調べてみてください。
http://support.microsoft.com/default.aspx?scid=kb;ja;239482
http://www.trusnet.com/advisories/jetshell/jetshell.txt
もげ様ありがとうございます。
調べてみたところ、無理なようなので
他の方法を探したいと思います。
ツイート | ![]() |