投稿日 | : 2006/06/30(Fri) 14:50 |
投稿者 | : まっち |
Eメール | : |
URL | : |
タイトル | : Re^4: 条件が合わなければクリアーにするには |
> > strSQL = "SELECT 客TBL.客ID, 客TBL.客かな, 取引TBL.種類, 取引TBL.番号 FROM 客TBL
> _
> > & INNER JOIN取引TBL ON 客TBL.客ID = 取引TBL.客ID "
> >
> > If txtx.Text <> "" Then
> > strSQL = strSQL & " where 客TBL.客ID = " & txtx.Text
> >
> > End If
> >
> > If txtn.Text <> "" Then
> > strSQL = strSQL & " where 客TBL.客かな like '*" & txtn.Tex
> t & "*'"
> >
> > End If
> >
> > If txtm.Text <> "" Then
> > strSQL = strSQL & " where 取引TBL.番号 like '*" & txtm.Tex
> t & "*'"
> >
> > End If
>
> このままだと、条件を記入した分だけWhere句ができてしまいますよね?
> 二つ以上条件を記入させなくするか、二つ目以降の条件の場合は
> "where" ではなく"and" で始まるようにする工夫が必要です。
uc0079さんありがとうございます。
早速 "and"を使い作成してみました。
strSQL = "SELECT 顧客TBL.顧客ID, 顧客TBL.顧客かな, 契約TBL.保険種類, 契約TBL.証券番号 FROM 顧
客TBL INNER JOIN 契約TBL ON 顧客TBL.顧客ID = 契約TBL.顧客ID "
If txtid.Text <> "" Then
strSQL = strSQL & " where 顧客TBL.顧客ID = " & txtid.Text
End If
If txtname.Text <> "" Then
strSQL = strSQL & " where 顧客TBL.顧客かな like '*" & txtname.Text & "*'"
Else
strSQL = strSQL & "and 顧客TBL.顧客かな like '*" & txtname.Text & "*'"
End If
If txtnum.Text <> "" Then
strSQL = strSQL & " where 契約TBL.証券番号 like '*" & txtnum.Text & "*'"
Else
strSQL = strSQL & "and 契約TBL.証券番号 like '*" & txtnum.Text & "*'"
End If
実行してみましたが、実行時エラー:3075 構文エラー:演算子がありません
というエラーが起き
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)が黄色いラインがひかれるのです。
実は先ほどの"and"を使っていない状況でもこのようなエラーが起きました。
"and"の使い方がおかしいのかクエリーの設定がおかしいのでしょうか?