Microsoft Access 掲示板

VBAで条件分岐

14 コメント
views
4 フォロー

お世話になります。
VBAで修正点を教えてください。(修正だらけかと思いますが…)

①F_案件、帳票。レコードごとにボタンを設置。クリックすると下記VBA
②もしT_特別案件に既に登録されている案件番号のレコードでないなら、追加クエリで追加する。
③そうでなければ該当のレコードを開く。

いまいち""や''をどこにつけたらいいのかわかっていません…
宜しくお願いします。


Private Sub btn追加_Click()

If DCount([案件番号] = [txt案件番号], "T_特別案件") = 0 Then
    DoCmd.OpenQuery "Q_追加"
    Else
        DoCmd.OpenForm "F_特別案件", , " 案件番号 = 'Me!txt案件番号'"
End If

End Sub

coffee
作成: 2020/07/28 (火) 10:09:27
最終更新: 2020/07/28 (火) 10:57:46
通報 ...
1

DCount関数は下記のような構文になります。

DCount(フィールド名, テーブル名またはクエリ名, 抽出条件)

また、それぞれの引数は文字列で指定します。

DCount 関数 - Access

案件番号フィールドが数値型なら、下記のコードになります。

If DCount("案件番号", "T_特別案件", "案件番号= " & Me.txt案件番号) = 0 Then

案件番号フィールドがテキスト型なら、下記のコードになります。

If DCount("案件番号", "T_特別案件", "案件番号='" & Me.txt案件番号) & "'" = 0 Then
2
coffee 2020/07/28 (火) 14:13:34 0029a@1c915

ありがとうございます。
早速試したところ、(案件番号はテキストです)

実行時エラー 3075
クエリ式'案件番号='12345'の文字列の構文エラーです。

とでました。(12345は任意の案件番号)

わたしの指定に間違いがあるのかと思いますが、思い当たりません…
もし、どのようなミスがあるのか見当がつけば、教えていただけると助かります。

3

「案件番号」というのは実際のフィールド名ですか。

とりあえず下記で試してみてください。

If DCount("[案件番号]", "[T_特別案件]", "[案件番号]='" & Me.txt案件番号) & "'" = 0 Then
4
hiroton 2020/07/28 (火) 14:26:50 1eeaf@f966d >> 3

Dcountの括弧の閉じ位置がおかしいですね

If DCount("[案件番号]", "[T_特別案件]", "[案件番号]='" & Me.txt案件番号 & "'") = 0 Then
11

あっ、ミスってますね。ご指摘ありがとうございます。

5
7785世代 2020/07/28 (火) 14:28:34 20aee@38a3b

横から申し訳ありません、
 > 引用テキスト Me.txt案件番号) & "'"

閉じカッコの位置はコチラでよろしいのでしょうか。
多分、修正されたらすぐに走るかと思います。

6
7785世代 2020/07/28 (火) 14:29:14 20aee@38a3b

失礼、かぶってました

7
coffee 2020/07/28 (火) 15:01:55 0029a@1c915

ご確認ありがとうございました。
エラーは出なくなったのですが、どうもうまくいきません。
案件が1つもない状態で表示されます。

試しに、式の下の部分だけ試してみましたが、やはりうまくいきません。
フォーム上で、隣に似たようなボタンがあり、こちらは案件詳細ページに飛ぶことに成功しています。
どちらも行先のフィールド名を同じ(案件番号)にしているのが問題がありますでしょうか。

DoCmd.OpenForm "F_案件詳細", , , "案件番号='" & Me!txt案件番号 & "'", , acDialog

 DoCmd.OpenForm "F_保守", , , "案件番号='" & Me!txt案件NO & "'", , acDialog

8

txt案件NO
↑間違いです。こちらも案件番号としています。

9
coffee 2020/07/28 (火) 15:28:24 0029a@1c915

誤りがありごちゃついてきましたので、書き直します。

DoCmd.OpenForm "F_案件詳細", , , "案件番号='" & Me!txt案件番号 & "'", , acDialog

↑正常に動いているボタン。

 DoCmd.OpenForm "F_特別案件, , , "案件番号='" & Me!txt案件番号 & "'", , acDialog

↑今回の、正常に動かないボタン。(案件が1つもひっかからない。)

10
7785世代 2020/07/28 (火) 15:32:54 20aee@38a3b

F_特別案件 をしっかり"(ダブルクォーテーション)でくくってもダメでしょうか?

12
coffee 2020/07/28 (火) 17:53:18 0029a@1c915

>7785世代
ミスをただしたつもりがまだミスがあり、申し訳ありません。(事情がありコピペできないのでミスってしまいました…)
ダブルクォーテーションでくくっておりましたがうまくいきません。

DoCmd.OpenForm "F_特別案件", , , "案件番号='" & Me!txt案件番号 & "'", , acDialog

正しく動いているものとの違いは、リンク元リンク先のフォームが同じクエリを参考しているものと、違うクエリを参考しているものになります。
大元のコントロールソースが違うということは関係ありますか?
(今、コントロールソースをあわせてみましたが、関係ないようですね…)

13

ごめんなさい。下の部分(単純なリンク部分)はいつの間にかうまく動いていたようです。
上の部分が、相変わらず新しいフォームが開いてしまう状況です。

もうしばらく沼にはまってみます…

14
coffee 2020/07/28 (火) 18:19:42 0029a@1c915

申し訳ありません!!教えていただいたかっこの位置について、訂正したつもりが、
自分の勝手な解釈が入っていたようで、違う場所に移動していました。
きちんと教えていただいた場所に移動することで、結果的にうまく動くようになりました。
本当にありがとうございました。