よろしくお願いします。
下記のようなSQLでFORM上のTEXTBOXの値を抽出条件に指定しています。
mySql = " SELECT AA.NAME From AA where AA.NO = '" & Form1.txtNO.Text & "'"
このFORM1の部分を可変にしたいと思い、
Dim ObjF as string
でForm名を格納したものを上記SQLで指定したいのですが、
'" & '" + ObjF + "'&.txtNO.Text & "'"
とやってみたところ、やはりうまく指定できていません。
どのように書けばいいのでしょうか???
そのような設計にするのであれば、「フォーム名」を渡すのではなく、
「フォーム」その物を渡した方が手っ取り早いかも。
たとえば、
Private Function GetSQL(ByVal F As Form) As String
GetSQL = "SELECT 〜 WHERE 項目名 = '" & F.txtNO.Text & "'"
End Function
のように宣言しておいて
Dim SQL As String
SQL = GetSQL(Form2)
のように呼び出すとか。
# なお、この場合、テキストボックスに「' OR 1=1 OR ''='」などと
# 書かれた時に、WHERE句が「項目名='' OR 1=1 OR ''=''」のように
# なってしまうので、実際には、「'」などの処理も必要になるでしょう。
どうもありがとうございます。
なるほど、このような方法もあるのですね。。。
勉強になります。
ただ後学の為、「FORM1」という文字列を格納した変数(ObjF)を
SQL上で指定するにはどのような記述をすればいいのか、
これについてもお教えいただけないでしょうか。
>ただ後学の為、「FORM1」という文字列を格納した変数(ObjF)を
>SQL上で指定するにはどのような記述をすればいいのか、
魔界の仮面弁士さんのレスでいけないの?
たとえば、
Private Function GetSQL(ByVal F As Form) As String
GetSQL = "SELECT 〜 WHERE 項目名 = '" & F.txtNO.Text & "'"
End Function
のように宣言しておいて
Dim SQL As String
SQL = GetSQL(Form1)
のように呼び出すとか。
ご指摘いただきありがとうございます。
確かにこの方法でも十分可能と思います。
ただ、GetSQL(Form1)のFORM1を明示的に指定するのでなく
変動する呼び出し元FORMをSETしていきたいので
GetSQL(Form1)のFORM1の部分を変数にせざるを得ません。
SQL分の使いまわしはできるのですが、変化するFORM名を
扱うにはどこかで変数に格納しないといけないのかな、と
考えています。
素人ですので、考えが誤っておりましたら、またご指摘願います。
フォーム名が変動するのであれば
meキーワードを使用して呼出すようにしてはいかがでしょう?
例えば
GetSQL(me)
試してみてください。
[VB.NET]だと↓こーゆー問題になると思ったんだけど[VB6.0]だとそうですよねぇ。いけますねぇ(汗)。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200408/04080006.txt
↑実行時バインディングとかでできたかも?でも Object 型とか使うのもなぁ。…どうなんでしょ?(別スレ立てようかな?)
クラスタ准尉さんの補足…各 Form で自分自身ならクラスタ准尉さんの
おっしゃる通り、Me で十分いけます。
>GetSQL(Form1)のFORM1の部分を変数にせざるを得ません。
> Private Function GetSQL(ByVal F As Form) As String
F は既に変数です。Form1 も Form2 も受け取ります。呼び出し側
でも Form クラスの参照変数を使えばいいだけではないですか?
[VB6.0]
Private Sub Form_Load()
Dim FormX As Form
Set FormX = Me
Call GetSQL(FormX)
Set FormX = Form1
Call GetSQL(FormX)
Set FormX = Form2
Call GetSQL(FormX)
End Sub
Private Function GetSQL(ByVal F As Form) As String
Debug.Print F.Text1.Text
End Function
過去ログを『Load Form1』とかで検索すると…
…ってこのキーワードは常連でないと思い浮かばないでしょうが(^^;)
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200309/03090039.txt
とか参考になるんじゃないですか?。
ツイート | ![]() |