- ベストアンサー
データの抽出で
VB6.0 SQLSERVER ID 品名 数量 コード 1 りんご 5 A-1 2 りんご 8 A-2 3 りんご 3 B-1 4 みかん 5 A-2 済みません。うまく説明できないのですが IDとコードの二つを抽出条件にしたいのです。 例えば1とコードA-1なら 1りんご5A-1を IDだけとかコードだけを条件にしたら うまく抽出できるのですが 2つになると「型が一致しません」とエラーになってしまいます。 お願いします。 教えてください。 Public Sub GetYukouzaiSuu(Optional Result As Boolean = True) Dim sSQL As String Dim dYukouzaiSuu As Double sSQL = ("品番=" + pvBase.CvtSQL(txtHinban.Text)) AND ("棚番=" + pvBase.CvtSQL(txtTanaban.Text)) dYukouzaiSuu = pvBase.CvtDbl(pbAdo.Lookup("m_zaiko", "isnull(実在庫数,0)-isnull(引当数,0)", sSQL)) numYukouzaiSuu.Value = MaxValueCheck(dYukouzaiSuu, numYukouzaiSuu.MaxValue) If pvBase.CvtLng(txtSeihinID.Text) = 0 Then If pvBase.StrLen(txtHinban.Text) > 0 Then labHinbanSt.Caption = "!" End If Else labHinbanSt.Caption = "" End If End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
いまいちソースから処理が読み取れないけど、 sSQL = "品番 = " & pvBase.CvtSQL(txtHinban.Text) & " AND " & "棚番 = " & pvBase.CvtSQL(txtTanaban.Text) とすればいいんじゃないのかな、。 pvBase.CvtSQL()が何をしてくれる関数かわからないけど…。('→''とかにコンバートしてくれるとか?) もし品番や棚番が文字型のカラムだったら sSQL = "品番 = '" & pvBase.CvtSQL(txtHinban.Text) & "' AND " & "棚番 = '" & pvBase.CvtSQL(txtTanaban.Text) & "'" 余談ですが、文字列の連結は"+"ではなく"&"を使ったほうがよいです。
その他の回答 (2)
- MySalt
- ベストアンサー率25% (1/4)
sSQL = ("品番=" + pvBase.CvtSQL(txtHinban.Text)) AND ("棚番=" + pvBase.CvtSQL(txtTanaban.Text)) の「AND」のところですが、VB6のエディタでは青色で「And」と表示されていませんか? 正しくは、 sSQL = "品番=" + pvBase.CvtSQL(txtHinban.Text) + "AND " + "棚番=" + pvBase.CvtSQL(txtTanaban.Text) なのではないかと思います。pvBaseやCvtSQLが何者なのかわからないので断定はできませんが。 書いているコードの、どこまでがSQL文でどこまでがVBのコードなのかに気をつけて見直して みるといいと思います。
お礼
ありがとうございます うまく出来ました 感謝です。
- SUPER-NEO
- ベストアンサー率38% (706/1857)
コードからは、どのようなSQL文が発行されているか、 判断できません。 「型が一致しない」というのは、例えば数値フィールドの検索条件に 文字を指定した場合などに起きますし、文字フィールドをLong型などに 変換しようとした場合でも起きます。 「コード」と呼ばれるフィールドは、文字フィールドになりますから、 数値としての処理をしているとエラーとなります。
お礼
ありがとうございます。 うまくいきました。 感謝です。