Access VBA質問箱 IV

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

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


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

【12839】Dcountの条件にテーブル せい 15/6/1(月) 22:32 質問[未読]
【12840】Re:Dcountの条件にテーブル せい 15/6/1(月) 23:08 発言[未読]
【12841】Re:Dcountの条件にテーブル かるびの 15/6/2(火) 1:27 回答[未読]
【12842】Re:Dcountの条件にテーブル [名前なし] 15/6/2(火) 8:14 質問[未読]
【12843】Re:Dcountの条件にテーブル せい 15/6/2(火) 11:18 質問[未読]
【12844】Re:Dcountの条件にテーブル せい 15/6/2(火) 21:27 質問[未読]
【12845】Re:Dcountの条件にテーブル かるびの 15/6/3(水) 0:52 回答[未読]
【12846】Re:Dcountの条件にテーブル せい 15/6/3(水) 9:35 お礼[未読]

【12839】Dcountの条件にテーブル
質問  せい  - 15/6/1(月) 22:32 -

引用なし
パスワード
   お世話になります
Dcout("*","t_1","コード="'"&"[t_2]![番号]"&"'") 
このようなコードでt_2テーブルの番号をコードに当てはめt_1テーブルから当てはまる数を出したいのですがデータがあるのに0になってしまうのですがテーブルの内容を条件にするにはどうしたら良いでしょうか

【12840】Re:Dcountの条件にテーブル
発言  せい  - 15/6/1(月) 23:08 -

引用なし
パスワード
   もしくはt_2の番号フィールドのデータがt_1のコードフィールドにあるかどうかを知りたいのですが
Vbaで書くにはどうしたら良いでしょうか
やりたいことは先のコードも同様ですが
Iif文で条件分けをしたいです

【12841】Re:Dcountの条件にテーブル
回答  かるびの  - 15/6/2(火) 1:27 -

引用なし
パスワード
   >>Dcout("*","t_1","コード="'"&"[t_2]![番号]"&"'") 
>>このようなコードでt_2テーブルの番号をコードに当てはめt_1テーブルから当てはまる数を出したいのですがデータがあるのに0になってしまうのですがテーブルの内容を条件にするにはどうしたら良いでしょうか
 
 2つのテーブルをまたぐ形ではDCount関数は使えないと思います。


 「t_2」テーブルの「番号」フィールドと、
「t_1」テーブルの「コード」フィールドのデータ型が同じであれば、
これらのフィールドを結合させた選択クエリを作ればいいのでは。

 両テーブルにデータがあるということを知りたいのであれば、
両テーブルの結合を内部結合にし、
「t_2」テーブルの「番号」フィールドと同じ値が
「t_1」テーブルの「コード」フィールドにあること又はないことを
知りたいのであれば、両テーブルの結合を外部結合にします。


「t_2」テーブル  「t_1」テーブル 
番号        コード
1         1
3         2 
5         3

とある場合に、内部結合であれば、

t_2.番号 t_1.コード
1     1
3     3


左外部結合であれば、 

t_2.番号 t_1.コード
1     1
3     3
5    (Null)

となります。

【12842】Re:Dcountの条件にテーブル
質問  [名前なし]  - 15/6/2(火) 8:14 -

引用なし
パスワード
   ▼かるびの さん:
>
>左外部結合であれば、 
>
>t_2.番号 t_1.コード
>1     1
>3     3
>5    (Null)
>
>となります。

解答ありがとうございます
外部結合でクエリを作成し、これをもとにt_1.コードにNullの時というiif文を
記述するにはどのようにしたら良いのでしょうか
いままで
If (DCount("*", "t_1", "コード ='" & "[t_2]![番号]" & "'") <= 0) Then
   DoCmd.OpenQuery "クエリ", acNormal, acEdit
 End If
このようにiif文を考えていました


【12843】Re:Dcountの条件にテーブル
質問  せい  - 15/6/2(火) 11:18 -

引用なし
パスワード
   クエリで出てきた結果から
If (DCount("*", "クエリ_A") > 0) Then
   DoCmd.OpenQuery "クエリ_B", acNormal, acEdit
 End If
と、しました。
しかし、クエリ_Aの結果が無いのにクエリ_Bを実行してしまいます
なにか考えられることは無いでしょうか
よろしくお願いします

【12844】Re:Dcountの条件にテーブル
質問  せい  - 15/6/2(火) 21:27 -

引用なし
パスワード
   ▼せい さん:
>クエリで出てきた結果から
> If (DCount("*", "クエリ_A") > 0) Then
>   DoCmd.OpenQuery "クエリ_B", acNormal, acEdit
> End If
いろいろやってみたところ*をコードにかえたら何故か大丈夫になりましたクエリ_Aのフィールドはコードだけなので同じかと思っています
何故なのか教えてください
それとも出来たと思っているだけ?
もう少しおつきあいお願いします

【12845】Re:Dcountの条件にテーブル
回答  かるびの  - 15/6/3(水) 0:52 -

引用なし
パスワード
    ネットでは、DCount関数で全レコードの件数を数える場合に、第1引数を「*」とする方法が
よく紹介されています。
 それを見て、一度、DCount関数の第1引数を「*」としたら、
DCount関数がエラーになったことがありました。
 そのときは原因の探求はせず、それ以後、DCount関数の第1引数に「*」を指定しないようにしました。


 なので、第1引数を「*」としたらだめで、「コード」としたら大丈夫だった理由は
私にはわかりません。

【12846】Re:Dcountの条件にテーブル
お礼  せい  - 15/6/3(水) 9:35 -

引用なし
パスワード
   かるびの 様

ありがとうございます
ネットでは当たり前のように*が紹介されていますね
まちがいではないのかもしれないですけど
今回のようにダメなときがあると知ったことも私にとっては
良かったと感じてます

今回のソフトはいろんな人が機能を付け加えてほしいと要望が出てくるので
また、質問するかもしれませんがその時はお願いします

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