• ベストアンサー

アクセスクエリで偽の場合そのままの数字を入れたい

教えてください。 IIf関数を使って正しい場合は0、偽の場合はフォームに入れた数字をそのまま反映させたい場合 IIf(([tbl_tbl]![ID]=1 ),0,([Forms]![frm_frm]![コンボ1])) 正しい場合は0が出てきますが偽の場合そのままの数字を反映させることができません。 「式に基づいているので編集することはできません」とでてきます。 IIf関数ではそのままの数字をコンボボックスに入力できないのでしょうか? どのようにしたらそのままの数字を反映させることができますでしょうか? どうぞ宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.2

#1です。 「tbl_tbl」はテーブル名? いまいちイメージがつきません。 フォーム上にはテキストボックスがあって、そこに入力された数字を テーブルに反映(登録)させたいんですよね。 例えば、フォーム上に「ID」という名前のテキストボックスがあり、また テーブルに反映する為の「登録」ボタンがあるとします。 「ID」に1が入力された状態ではボタンが押されると0で反映、1以外なら その数字を反映するには下記のようにすればよいかと思います。 UPDATE テーブル SET [テーブル].[テキストボックス] = IIf([forms]![フォーム]![ID]=1,0,[forms]![フォーム]![ID]); ※「テキストボックス」とはフォーム上のIDを登録する為のテーブルのフィールド名。 今思ったのですが、テーブルのIDを更新されようとしてるのでしょうか。 そのIDに主キーが設定されていたり、オートナンバーだとしたら 更新できないかもしれません。 あと、フォーム上のテキストボックスのプロパティで書式が数値になっている ことを確認した方がよいかもしれません。

mirumirus
質問者

お礼

親切に教えて頂きありがとうございました。テーブルの名前申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.1

確認ですが・・・ そのクエリは更新クエリなんでしょうか。 で、「フォームに入れた数字をそのまま反映させたい」とは、 コンボボックスに表示されている数字でテーブルを更新したい ということなのでしょうか。 「正しい場合は0が出てきますが」の「出てきますが」というのは どこに出てくるのでしょうか。

mirumirus
質問者

お礼

クエリを基にったフォームのコンボックスではなくてテキストボックスでした。大変に申し訳ありませんでした。フォームのテキストボックスに入力した数字でテーブルを更新したいです。IDを1にした場合0はテキストボックスに出てきます。

mirumirus
質問者

補足

EXCELのIF関数で偽の場合セルの内容をそのままにしておきたい場合はセルをそのまま参照すればいいかと思います。同じようにフォームのテキストボックスにそのまま入力すればそれを参照できるかと思ったのですが書き込めませんでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • access クエリでIIF文で抽出条件なし

    フォームにコンボボックスを用意し、(コンボボックスは、「両方」、「条件A」、「条件B」の3項目です) クエリで抽出条件にIIF文を使い、 IIf([Forms]![フォーム]![コンボボックス]="両方",'',[Forms]![フォーム]![コンボボックス]) ”両方”を選択した場合は、「抽出条件なし」としたいのですが、できませんでした。 別案として、 IIf([Forms]![フォーム]![コンボボックス]="両方","条件A" or "条件B",[Forms]![フォーム]![コンボボックス]) なども試しましたができませんでした。 どうか解決方法をご教授願います。

  • Access フォームコンボボックス空白をクエリで抽出したい

    現在access2000を使って、 フォーム1内にコンボボックスを作って コンボボックス内に1,2,3 と項目を入れています。 一方、クエリを使って、上記フォーム内のコンボボックスをつなげて1,2,3をそれぞれ抽出することはできるのですが、 1から3まで全てをiif関数などで 抽出したいと考えてします。 僕が考えた関数は iif(isnull([フォーム1][コンボ1]),is not null ,[フォーム1][コンボ1]) とクエリ抽出条件内に入力すると、結果は、 1、2、3をそれぞれフォームコンボボックスで選択すれば、クエリに反映されるのですが、コンボボックス内を「空白」の状態にすると、1,2,3すべてがクエリで抽出されるのではなく、何も抽出されないという結果になってしまいます。 どうすれば、クエリで1から3すべてを抽出することができるのでしょうか?多分、iif関数内の「空白」は空白として処理されないような気がします。 よろしくお願いします。

  • ACCESSのクエリの抽出

    ACCESS2003を使っています。フォームのコンボボックスに入っているデータを見てクエリで抽出したいと思っています。 フォームのコンボボックスにデータが入っているときは、そのデータで抽出を行い、nullのときは抽出をやめてすべてのデータを表示させたいです。 抽出項目には、null値はありません。 クエリの抽出欄に下記の式を入れましたがうまくいきません。 IIf(IsNull([Forms]![フォーム名]![コンボボックス名])=true , Is Not Null , [Forms]![フォーム名]![コンボボックス名]) コンボボックスにデータが入っている場合は、抽出はうまくいくのですが、nullのときは、何も表示されません。 どこか式が違っているのでしょうか? よろしくお願いします。

  • ACCESSのクエリー抽出条件にIIFを使用して

    コンボボックスの値を抽出条件にしたクエリーを作成しています。 コンボボックスにて"ALL"を選択したときに、全レコードを表示したく、 以下の式を入れたのですが全表示がされません。 IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値]) Like "*" の部分がいけないのでしょうか? (偽の場合は選択した値のレコードが抽出されます) どなたか教えてください、よろしくお願いいたします。

  • Access2003 クエリについて

    現在2つの問題に直面しています。 どなたかご存知の方いらっしゃいましたらご教示お願い致します。 下記のようなデータベースがあります テーブル名:テーブル 列名:類、目、名称 哺乳類 単孔目 カモノハシ 哺乳類 有袋目 カンガルー 哺乳類 有袋目 コアラ 哺乳類 貧歯目 アリクイ 哺乳類 貧歯目 アルマジロ 鳥類 ダチョウ目 エミュー 鳥類 ダチョウ目 ダチョウ 鳥類 ダチョウ目 ヒクイドリ 鳥類 ペリカン目 ペリカン (実際には学名や生息地域等の列名がありますが割愛します) まず1つ目の問題ですが、 これをフォーム上(フォーム名:一覧画面)で コンボボックスから選択した物を表示させるようにフィルター機能を使い行っています。 現在コンボボックスで選択肢として(目を選択するコンボボックスの例) "全て";"単孔目";"有袋目";"貧歯目";"ダチョウ目";"ペリカン" のように値を指定しています。 数が少ないうちはいいですが、これからデータの追加があった場合にその都度ここに書き足していくのではそのうち漏れや間違いが発生しそうで困っています。(作業量も多くなりますし) コンボボックスにクエリの値を参照するようにしてみたのですが、選択肢が 単孔目 有袋目 有袋目 貧歯目 貧歯目 ダチョウ目 ダチョウ目 ダチョウ目 ペリカン目 のようになってしまい、同じものがいくつも出てきてしまうのと 全て という選択肢がなくなってしまいます。 次に2つ目の問題ですが、 上記の一覧画面をフィルター機能で検索した画面をレポートに出力したいのですが、条件がうまくいかず困っています。 上記のフォームをロードする際に Me.目コンボボックス = "▼選択してください" のように記述しているのですが、 全て と ▼選択してください を選択したときは全てのレコードを そうでない場合は該当レコードのみを出したいのですが 全て と ▼選択してください の場合がうまくいきません。 IIf([Forms]![一覧画面]![目コンボボックス] = "全て","*",[Forms]![一覧画面]![目コンボボックス]) And IIf([Forms]![一覧画面]![目コンボボックス] = "▼選択してください","*",[Forms]![一覧画面]![目コンボボックス]) のように記述しております。 どなたか上記の問題について解答宜しくお願いします。

  • accessのレポートで…

    レポート(テーブル1から作成)にあるフィールド1には「1・2・3…」という数字が入っています。 この1・2・3はテーブル2(ID・名前)とリンクしています。 フォーム上ではコンボボックスにして、テーブル2の名前も表示するようになっています。 (テーブルに値としては入っていません) これでレポートを作成した場合、テーブル2の名前を表示させたいのですが、テキストボックスで Iif([フィールド1] = "1","****",Iif(… というようにしてしまうと、せっかくリンクにしたのにデータが固定になってしまうのを避けたいんです。 フォームだとコンボボックスの更新後処理とレコードの移動にコードをかけば最新の情報を表示することができたんですが、レポートでもこのようなことはできるんでしょうか? (コードをかいて処理したいです) Access2000です。 よろしくお願いします。

  • Access抽出クエリの基本的なこと

    お世話になります。 初心者で苦労しながらもAccess2000でデータベースを作成しています。 非常に基本的な質問だと思うのですが、どなたかご教授願います。 日付を含むフィールドがあるテーブルがあり、クエリにてその日付から 年と月を拾っています。 ID   入力日   年:Year([入力日])   月:Month([入力日]) 1   2001/07/06    2001          6 2   2002/06/07    2002          6 3   2002/07/19    2002          7 別に作成したフォームに年と月を絞り込むためのコンボボックスをそれぞれ配置し、 入力された値によって上記クエリの抽出条件に反映させたいのですが、コンボに何も 入力されていないときは全てのデータを表示したいんです。 「コンボ月=2002」&「コンボ月=6」でID=2のデータのみを、 「コンボ月=(Null)」&「コンボ月=6」でID=1と2のデータを表示したいんです。 (判りにくくてすみません。。) このような場合、抽出条件に記述する式はどのように設定したら良いのでしょうか? IIfでIsNullの条件式を組んだのですが、Nullの時に返す値が判りません。 どうかよろしくお願いします。

  • アクセス チェックボックスとクエリ

    いつもお世話になっております。アクセス初心者です。 あるフォームのチェックボックスのオンオフとコンボボックス、 クエリの選択条件が思うように連携できなくて困っています。 やりたいことは、、、フォームのチェックボックスが、 ON(True)ならば、 フィールドにコンボボックスのキーワードを含むレコードおよびフィールドが空白のレコードを抽出し、 OFF(False)ならば、 フィールドにコンボボックスのキーワードを含むレコードのみでフィールドが空白のレコードは抽出しない、 としたいのですが…。 IIfやSwitchで式を書きましたが、チェックを入れても外しても、どちらも抽出件数が0件になります。 クエリの実行は、コマンドボタンで別のフォームを開いています。 (IIfでは、エラーが出ているのか、チェックを入れた時『~キャンセルされました』と出ます。  IIf(…,…,IIf(…,…,…)) という感じで書きました。) Switchの時のクエリの抽出条件の式は、次のような感じです。 Switch([Form]![チェックボックス]=True,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*" Or Is Null,[Form]![チェックボックス]=False,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*") ( Like の前の『([テーブル名].[フィールド名])』は、式をビルドすると、勝手に追加されてきます。) このようなことはできないのでしょうか? 別の方法が必要でしょうか? すみませんが、教えてください。宜しくお願い致します。

  • Access2007 サブフォームの新規レコードをすぐにフォームに表示させる方法

    サブフォーム上で適当なレコード(IDと商品名)を選択して、そのレコードにある入力ボタンを押すと、フォームのコンボボックス上にその商品名が出るようなフォームがあります。 すでに入力済みのIDと商品名は表示されます。 ところが、サブフォーム上でIDと商品名を新規入力して入力ボタンを押すと、フォームのコンボボックスは空白となり、商品データが表示されません。 しかし、一旦フォームを閉じて開くと、データは表示されています。 IDと商品名を新規入力して、そのままフォームのコンボボックスに反映させたいと思います。 入力ボタンはこのようにやってみました。 Private Sub 入力_Click() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Forms!フォーム!ID = Me.ID End Sub または、 Private Sub 入力_Click() DoCmd.RunCommand acCmdSaveRecord Forms!フォーム!ID = Me.ID End Sub ご教授いただければ幸いです。よろしくお願いいたします。

  • ACCESS 2003の条件分岐について教えて頂けないでしょうか?

    access2003を勉強中です。 先週1週間かけても解決できないことがありまして、どなたか教えて頂けないでしょうか。 内容は 会社で使用する勤務表に関してです。 ユーザー名(コンボボックス)、日付(カレンダーコントロール)、 出社時間(テキストボックス)、退社時間(テキストボックス 、作業内容(テキストボックス)をユーザーが入力し「登録」 コマンドボタンのイベントで入力した内容を、勤務表テーブルに 反映させたいのです。 その時に同じユーザーの同じ日付を2件入力させないようにしたいので フォームに入力された内容からユーザー名と日付によって、 同じ内容が勤務表テーブルに無ければinsert、有ればupdateと 条件分岐をしたいのです。 しかし、 Public Sub kinmu() Dim mmrs As ADODB.Recordset Dim mmcn As ADODB.Connection Set mmrs = New ADODB.Recordset Set mmcn = Application.CurrentProject.Connection mmrs.Open "勤務表", mmcn, adOpenKeyset, adLockOptimistic mmrs.MoveFirst If DCount("[ユーザー名] & [日]", "[勤務表]", "[ユーザー名]=[Forms]![フォーム1]![コンボ56]" & _ "and[日]=[Forms]![フォーム1]![テキスト88]") = 0 Then mmcn.Execute "INSERT INTO 勤務表 ([ユーザー名],[日],[出社],[退社],[作業内容]) VALUES ([Forms]![フォーム1]![コンボ56],[Forms]![フォーム1]![テキスト88],[Forms]![フォーム1]![テキスト8],[Forms]![フォーム1]![テキスト17],[Forms]![フォーム1]![テキスト28]);" Else mmcn.Execute "UPDATE 勤務表 SET (ユーザー名=[Forms]![フォーム1]![コンボ56],日=[Forms]![フォーム1]![テキスト88],出社=[Forms]![フォーム1]![テキスト8],退社=[Forms]![フォーム1]![テキスト17],作業内容=[Forms]![フォーム1]![テキスト28] where [ユーザー名]=[Forms]![フォーム1]![コンボ56] and [日]=[Forms]![フォーム1]![テキスト88]);" End If として、「登録」コマンドボタンのイベントとしてCallキーワードによって呼び出そうとしているのですが、うまくいきません。 最初はDCount関数で件数を求め、それを変数に入れる。 IIF関数による分岐。などいろいろ試してはいたのですが、、、。 どなたか教えて下さい。よろしくお願いします。

このQ&Aのポイント
  • 隣家の換気扇ダクトが境界線を越えている問題について、改修の要求方法や解決策を教えてください
  • 隣家の換気扇ダクトが境界線を越えていることについての改修要求や解決方法について詳しく教えてください
  • 隣家の換気扇ダクトが境界線を越えている問題について、改善のためにできることや注意点を教えてください
回答を見る

専門家に質問してみよう