アクセス2000の質問です。VBとは関係ないかもしれませんが、一応VBから制御するということでお願いします。2つテーブルがあり、Aテーブルには ID ,Aコード というフィールド。Bテーブルには ID ,Bコード というフィールドがあります。
IDでAテーブルとBテーブルがリンクされています。Aコード、Bコードともに文字列型です。IIF関数を使用してAコードが空白(NUll?)の場合にはBコードの値を表示するようにし,Aコードに何らかの値が入力されている場合はそのまま表示したいのです。
IIf([Aテーブル.Aコード] Is Null,[Bテーブル.Bコード],[Aテーブル.Aコード]))
としてみましたが、Aコードが空白の行だけが抽出されません。Is Nullの部分を="" としてみても結果は同じでした。
どうすればよいのでしょうか?
IIf(IsNull([Aテーブル.Aコード])=True,[Bテーブル.Bコード],[Aテーブル.Aコード]))
って書いてみてはどうでしょう?
しなこさんありがとうございます。しかし残念ながら同じ結果になってしまいました。
>VBとは関係ないかもしれませんが
かも、ではなく。今回の質問でいうならば全く関係ありません。
#一応、関係あるかもぉ〜、
#なんて誤解している可能性があるので念のためお断り
んでもって、さてと
>IIF関数を使用してAコードが空白(NUll?)の場合には
>Bコードの値を表示するようにし,
>Aコードに何らかの値が入力されている場合はそのまま表示したいのです。
IIf(ISNULL([Aテーブル.Aコード]),[Bテーブル.Bコード],[Aテーブル.Aコード]))
でわ?
既に試されていたか...
じゃ、Trim付けてみよう!
IIf(ISNULL(Trim([Aテーブル.Aコード])),[Bテーブル.Bコード],[Aテーブル.Aコード]))
いなさんもありがとうございました。結果は同じでした。
1つ気になったのですが、
Aテーブル Bテーブル
ID:1 Aコード:"001" ID:1 Bコード:"ABC"
ID:2 Aコード:"001" ID:2 Bコード:"CVT"
ID:3 Aコード:"002" ID:3 Bコード:"ABC"
ID:4 Bコード:"ZZZ"
という感じでBにはあってAにはないIDが存在するのでうまく抽出できないのかもしれないと思ったりもします・・・・
IDフィールドのリンクの張り方が違うのでは?
SELECT IIf([Aテーブル]![AID]="",[Bテーブル]![Bコード],[Aテーブル]![Aコード]) AS A
FROM Aテーブル RIGHT JOIN Bテーブル ON Aテーブル.AID = Bテーブル.BID;
こんなかんじでいかがでしょう?
しなこさんの言うとおりにリンク付けはしてあります。
でもうまくいきません。抽出条件をなしにするとちゃんと全てのデータが表示されますのでリンクの仕方に問題はないと思います。
やはりAコード、Bコードが文字列型だということが問題なのでしょうか?
貴殿がどういうSQLを書いているのかよくわかりませんが、
SELECT テーブルA.Aコード, テーブルB.Bコード,
IIf([テーブルA].[Aコード] Is Null,[テーブルB].[Bコード],[テーブルA].[Aコード]) AS 式1
FROM テーブルA
INNER JOIN テーブルB ON テーブルA.ID = テーブルB.ID;
と仮定して、
式1のところに、AコードがNullの場合だけBコードが表示されてればよいのでは?
であれば、抽出条件は関係ないですし、A、Bコードが文字列型でも関係ないし。
どうでしょう?
>もげさん しなこさん、いなさん
ありがとうございます。簡単な問題でして、恥ずかしいのですが抽出条件の所に記入せずに式1のところに記入するんでした・・・ほんとありがとうございます。勉強しなおして精進しますだす。
解決っす
ツイート | ![]() |