VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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"の使い方がおかしいのかクエリーの設定がおかしいのでしょうか?


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -