• ベストアンサー

Access2000 でのIIFを使用したデータ更新処理

こんにちは。答えていただけるとありがたいです。。。 Access2000 でのIIFを使用したデータ更新処理ができなくて困っています。 クエリで、退職者(テキスト形式)フィールドに 入力フォーム(チェックボックス)で入力した値(-1、0)を、 "-1"なら"退職"、"0"なら""空と更新したいのですが、 選択クエリで中身を見てみると、すべてのレコードが"0"と入ってしまいます。 書いている式は 式1: IIf([退職者]="-1",[退職者]="退職",[退職者]="") です。 以上、よろしくおねがいします。

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

  • ベストアンサー
noname#79209
noname#79209
回答No.2

この式自体がおかしいですね。 まず、 式1: IIf([退職者]="-1",[退職者]="退職",[退職者]="") チェックするフィールド、置き換えるフィールドが同じフィールドになっています。 また「"-1"」は文字列として検索していることになってしまいます。 IIf([退職ID]=-1 あるいは IIf([退職ID]=True とすべきです。 「式1」とあるので、クエリだと思われますが、 更新クエリで行うなら、(復職はないとして) 退職者フィールドの「「レコードの更新」行に「"退職"」として、 退職IDの抽出条件行に「=True」とすべきです。 また、もし「退職者」フィールドが「-1」「0」が置かれていて、 選択クエリで表示した時に、「-1」を「退職」と表示したいだけなら、 式1: IIf([退職者]=-1,"退職","") とします。 クエリで上での表示フィールド名を指定したいなら、 退・在職: IIf([退職者]=-1,"退職","") などとします。

hana_is
質問者

お礼

ご返答ありがとうございます。 同じフィールドで置き換えは、できないんですね。 [退職者]のチェックボックスは後々"退職"とテキストを入力しようと考え、Yes/No型、数値型にはしませんでした。 教えていただいたクエリで表示できました。ありがとうございます。 また、更新クエリは、"-1"の場合(=退職)"0"の場合(="")←在籍の場合と、同じフィールドを見ているため、更新ができませんでした。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

式1: IIf([退職者]="-1",[退職者]="退職",[退職者]=Null) ではどうでしょうか?

hana_is
質問者

補足

お返事ありがとうございます。 Null、IsNullともにやってみましたが、 検索結果はすべてのレコードが0のままでした。

関連するQ&A

  • 更新クエリーについて

    更新クエリーについて教えて下さい。 元テーブルのAフィールドに値1,2,3 が入力されいます。それを 1を0 に 2を5 に 3を10に 更新する設定方法について教えてください。 <私が行った設定> 更新クエリーのレコードの更新欄に IIf ( [A] = 3 , 10, [A]) or IIf ( [A] = 2 , 5, [A]) or IIf ( [A] = 1 , 0, [A]) で実行したのですが、更新後の値が-1になります。  

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

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

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

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

  • クエリの抽出条件でiif関数

    こんにちわ。 いまaccess2000でクエリを作成し, その抽出条件において,iif関数を使って, フォームのあるフィールドに値があるときはその値, ないときはワイルドカードで検索しようと思い, 下記のコーディングを入れました。 iif([Forms]![F_フォーム1].[テキスト1] Is Null, "*", [Forms]![F_フォーム1].[テキスト1]) ところがワイルドカードの"*"がうまく効いてくれないようで 正しく検索されません。 どうすれば正しく検索できるでしょうか? 教えてください。お願いします。

  • AccessのIIFの引数の条件について教えてください。

    こんにちは。 初心者すぎて申し訳ございませんが、ご教授お願いいたします。 クエリを作成し、そこにiifで条件を入れたいと思います。 そのフィールドには、”承認済”・”未承認”・”申請前”と、3種類があります。 また、フォームのオプションボタンは”1”・”2”があります。 (1)オプションボタンが”1”ならば”承認済” (2)でなければ、”未承認”と”申請前”となっている結果を表示させたく思います。 クエリの抽出条件に以下の条件を書いてみたところ、 「式が正しく入力されていないか、複雑すぎるために評価できませんでした。~」 となってしまいます。 IIf([Forms]![フォーム1]![フレーム8]=1,"承認済","未承認" Or "申請前") 条件を1つ削り以下の式は、正しく表示されるのですが・・・。 IIf([Forms]![フォーム1]![フレーム8]=1,"承認済","未承認") いろいろやってみたのですがわかりませんでした。 お手数ですが、以上よろしくお願いいたします。

  • Access 更新ボックスの作成

    フォームで更新クエリと同じように更新したいのですが可能でしょうか? 具体的には、親フォームにテキストボックスを作成し、その中に数値を入力すると、 表示しているサブフォームの指定したフィールド項目の数値が全て置き換わるようにしたいです。

  • accessのレポートで…

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

  • アクセスのフォームでデータ元をテーブルからクエリにかえたい

    上手く表現できるかどうかわからないのですが、頑張って書きます。少々長いです。 アクセスでフォームを使ってデータ入力しています。これは単純で、あるテーブルへのデータ入力をフォームを使ってやるだけのことです。このテーブルの中に「都道府県」というフィールドがあります。ある事情からこのフォームを使ってデータ入力(または修正)をするレコードは、「都道府県」のフィールドが「福岡県」のものだけでよくなりました。 そこで、「都道府県」に「福岡県」を持っているレコードだけを取り出すクエリを作ります。このクエリを元にして、同じフォームでデータ入力したいのです。入力項目は全く同じです。「福岡県」をもっているレコードだけが全く同じフォームで表示されるようにしたいのです。 もとのテーブル名を「全データ」とし、クエリを「福岡県抽出クエリ」と呼ぶとすると、どこかで「全データ」を「福岡県抽出クエリ」に書き換えればすべてのテキストボックスのデータ元が入れ替わってくれると思うのですが、それでいいのでしょうか。その場合、どうやったらいいのでしょう。 なぜ一からファームを作り直さないかというと、テキストボックスの大きさや配置を決めるのに膨大な労力を費やしていて、全部をやり直したくないからです。 どうかお願いします。ご指導ください。

  • access2000でのiifを使う条件で

    削除クエリを実施する際にフォームでテキスト16からテキスト18って感じで日付を入力して削除しています。テキスト16に何も入力しない時は2000/01/01からテキスト18までとなるようにしたくてクエリの抽出条件に IIf([Forms]![F_A]![テキスト16]="", Between #2000/01/01# And [Forms]![F_A]![テキスト18],Between [Forms]![F_A]![テキスト16] And [Forms]![F_A]![テキスト18]) って入れたのですが上手く動きません。 何か根本的に間違ってたりした。よろしくお願いします。

  • Access更新クエリの「レコード更新」をフォームから指定する方法

    お世話になっています。 早速ですが質問があります。 テーブルにあるフィールドの値を全て変更する更新クエリを作成したのですが、出来ればフォームから指定したいのです。 どうやったら「レコードの更新」の値をフィールドから指定出来るのでしょうか? 以上、よろしくお願いします

専門家に質問してみよう