Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1825 / 2272 ツリー ←次へ | 前へ→

【5046】コンボボックスの値を検索条件にしたいのですが... orange 05/5/19(木) 12:01 質問[未読]
【5048】Re:コンボボックスの値を検索条件にしたいの... クロ 05/5/19(木) 13:21 発言[未読]
【5049】Re:コンボボックスの値を検索条件にしたい... 小僧 05/5/19(木) 13:34 回答[未読]
【5058】Re:コンボボックスの値を検索条件にしたいの... orange 05/5/20(金) 10:23 回答[未読]
【5059】Re:コンボボックスの値を検索条件にしたいの... クロ 05/5/20(金) 11:27 回答[未読]
【5101】Re:コンボボックスの値を検索条件にしたいの... orange 05/5/25(水) 10:57 お礼[未読]

【5046】コンボボックスの値を検索条件にしたいの...
質問  orange  - 05/5/19(木) 12:01 -

引用なし
パスワード
   こんにちわ。

久しぶりの質問です。
コンボボックスから検索条件の項目を選択し、コード検索をしたいのです。

ところが下記のように記述したところ、コンボボックスの値(検索項目)も検索コードの
値もVBAで取得できていない状況でSQLが成立してないのです。

  If IsNull(Me.検索項目) = False And Len(Me.検索項目) <> 0 Then
    MsgBox "検索項目を正しく入力してください。", _
    vbOKOnly + vbCritical, ""
    Me.検索項目コンボ.SetFocus
    Exit Sub
  End If
  If IsNull(Me.検索コード) = False And Len(Me.検索コード) <> 0 Then
    MsgBox "検索コードを正しく入力してください。", _
    vbOKOnly + vbCritical, ""
    Me.検索コード.SetFocus
    Exit Sub
  End If

              ここまでのチェックはひっかかっていません
  
  strSQL = "SELECT * FROM 請負費工事 WHERE"
  
  Select Case Me.検索項目
    Case "コード1"
      strSQL = strSQL & " コード1='"
    Case "コード2"
      strSQL = strSQL & " コード2='"
    Case "受渡番号1"
      strSQL = strSQL & " 受渡番号1='"
    Case "受渡番号2"
      strSQL = strSQL & " 受渡番号2='"
    Case Else
      MsgBox "検索項目に不備があります。", _
      vbOKOnly + vbCritical, ""
      Me.検索項目.SetFocus
      Me.備考 = Me.検索項目   ←フォームの備考は空白で表示されました。
  End Select
  strSQL = strSQL & Me.検索コード & "';"
  
  Set wCNN = Application.CurrentProject.Connection
  Set wRec = New ADODB.Recordset

お気づきの点、アドバイスよろしくお願いします。

【5048】Re:コンボボックスの値を検索条件にしたい...
発言  クロ  - 05/5/19(木) 13:21 -

引用なし
パスワード
   検索項目のコンボボックスの名前は「検索項目」?「検索項目コンボ」?
検索項目の各フィールドは全て「テキスト型」でいいのでしょうか?

これだけまずは確認してください。

【5049】Re:コンボボックスの値を検索条件にしたい...
回答  小僧  - 05/5/19(木) 13:34 -

引用なし
パスワード
   ▼orange さん:
こんにちは。

ご提示されたコードでいくつか疑問があるのですが…。


>  If IsNull(Me.検索項目) = False And Len(Me.検索項目) <> 0 Then
>  If IsNull(Me.検索コード) = False And Len(Me.検索コード) <> 0 Then

  検索項目、検索コードの値が入っていたらExit Subしてしまうのですが…。

>  Me.検索項目コンボ.SetFocus

  フォーム上に「検索項目コンボ」と「検索項目」と2つのコントロールが
  別にあるわけではないですよね?


あとは実際にSQLを発行する直前までのコードを書いて、

> Set wCNN = Application.CurrentProject.Connection
> Set wRec = New ADODB.Recordset

以下の処理をコメント化して

  Debug.Print strSQL

でイミディエトウィンドウに表示されるSQLが正しいかを検証してから
SQL発行後の処理を作ってみてはいかがでしょうか?

【5058】Re:コンボボックスの値を検索条件にしたい...
回答  orange  - 05/5/20(金) 10:23 -

引用なし
パスワード
   クロさん、小僧さん早速のレスありがとうございます

まず、検索項目は現在、コンボボックスですが「検索項目」という名前で統一しており、
全て、テキスト型です。

小僧さんのレスについて
>  If IsNull(Me.検索項目) = False And Len(Me.検索項目) <> 0 Then
>  If IsNull(Me.検索コード) = False And Len(Me.検索コード) <> 0 Then
この部分、間違っていました。すみません。
正しくは
  If IsNull(Me.検索項目) = True Or Len(Me.検索項目) = 0 Then
  If IsNull(Me.検索コード) = True Or Len(Me.検索コード) = 0 Then

ですね。
今のところ、Me.検索項目とMe.検索コード値が検出されないのでEXIT Subになってしまいました。
この条件をはずし、strSQLの内容を確認しても
Me.検索項目とMe.検索コード値が検出されないので

"SELECT * FROM 請負費工事 WHERE';"
となっている状況です。

アドバイスよろしくお願い致します。

【5059】Re:コンボボックスの値を検索条件にしたい...
回答  クロ  - 05/5/20(金) 11:27 -

引用なし
パスワード
   Dim strSQL As String
'検索項目が空だったら…
If Len(Nz(Me.検索項目, "")) = 0 Then
    MsgBox "検索項目を正しく入力してください。", _
    vbOKOnly + vbCritical, ""
    Me.検索項目.SetFocus '←検索項目コンボではない
    Exit Sub
'検索コードが空だったら…
ElseIf Len(Nz(Me.検索コード, "")) = 0 Then
    MsgBox "検索コードを正しく入力してください。", _
    vbOKOnly + vbCritical, ""
    Me.検索コード.SetFocus
    Exit Sub
'検索項目、検索コードが何れも空でなかったら…
Else
  strSQL = "SELECT * FROM 請負費工事 WHERE"
 
  Select Case Me.検索項目
    Case "コード1"
      strSQL = strSQL & " コード1='"
    Case "コード2"
      strSQL = strSQL & " コード2='"
    Case "受渡番号1"
      strSQL = strSQL & " 受渡番号1='"
    Case "受渡番号2"
      strSQL = strSQL & " 受渡番号2='"
    Case Else
      MsgBox "検索項目に不備があります。", _
      vbOKOnly + vbCritical, ""
      Me.検索項目.SetFocus
      Me.備考 = Me.検索項目
  End Select
  strSQL = strSQL & Me.検索コード & "';"
End If
  Debug.Print strSQL

でどうでしょうか?

【5101】Re:コンボボックスの値を検索条件にしたい...
お礼  orange  - 05/5/25(水) 10:57 -

引用なし
パスワード
   アドバイスありがとうございました!

原因はわからないのですが、何度か保存しているうちに
コンボボックスの値を取得するようになりました。
特にどこも修正しなかったのですが。。。

レスいただいた、クロさん小僧さん、ほんとうにありがとうございました。

1825 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free