Accessの不一致クエリでテキスト型の2桁の数値が不正になる問題の解決方法は?

このQ&Aのポイント
  • Accessの不一致クエリでテキスト型の2桁の数値05が5となってしまう問題が発生しています。現在の問題は、NEWテーブルのF_Noが05となっているが、Masterテーブルの結果が5となってしまうことです。解決方法を教えてください。
  • Accessの不一致クエリでテキスト型の2桁の数値05が5となってしまう問題が発生しています。NEWテーブルとOLDテーブルの不一致でOLDに無いものをMasterテーブルに追加していますが、NEWテーブルのF_Noが05となっているにも関わらず、Masterテーブルの結果が5となってしまう問題が発生しています。解決方法を教えてください。
  • Accessの不一致クエリでテキスト型の2桁の数値05が5となってしまう問題が発生しています。NEWテーブルのF_Noが05となっているにも関わらず、Masterテーブルの結果が5となってしまう問題が発生しています。問題の解決方法を教えてください。
回答を見る
  • ベストアンサー

Accessの不一致クエリで

不一致クエリでテキスト型の2桁の数値05が5となってしまいます。 ExeStr = "INSERT INTO Master (製品CD, 製品名, F_No, LineCD, 発生元, " _ & "登録年月日, 更新年月日) SELECT " _ & "NEW.製品CD," _ & "NEW.製品名, " _ & F_No & ", " _ & "NEW.部門CD AS LineCD, '" _ & syoribi & "', " _ & "#" & myDate & "#, " _ & "#" & myDate & "# " _ & "FROM NEW LEFT JOIN OLD " & _ "ON (NEW.製品CD = OLD.製品CD) " & _ "WHERE OLD.製品CD Is Null;" cn.Execute ExeStr 元のNEWテーブルのF_Noは05となっています。 MasterテーブルのF_Noの結果が05としたいのですが、5ではいってしまいます。 どうしたら良いでしょうか。 ちなみにフィールドはテキスト型のフィールドサイズ2にしています。 テーブルのNEWとOLDの不一致でOLDに無いものをMasterに追加しております。

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

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

リテラル文字列を日付/時刻型と認識させるには、# で囲むというのはご存じのようですが、 同様に、テキスト型と認識させるには、' で囲む必用があります。 囲まないと数値型と認識されますので、05 は 5 になります。 ・・・ & "'" & F_No & "', " _ ・・・

poporin0201
質問者

お礼

検証に時間がかかってしまいました。 うまくいったようです。 助かりました。 ありがとうございました。

その他の回答 (2)

回答No.3

コードだけをみて、F_No は変数で、事前に固定値を代入しているコードがあり、 それは省略しているのだと解釈して、回答しましたが、 説明をみると、 > 元のNEWテーブルのF_Noは05となっています。 とありますね。変数ではなく、NEWテーブルのフィールドなのでしょうか。 だとしたら、 ・・・・ & "NEW.製品名, " _ & "F_No, " _ & "NEW.部門CD AS LineCD, '" _ ・・・・ としないとダメですね。 で、NEWテーブルとOLDテーブルの F_No がどちらもテキスト型なら、 05 で入るはずですけどね。 もういちど状況を確認して、正確な情報を提供ください。

poporin0201
質問者

お礼

当初自分も勘違いしておりました。 フィールドから持ってきてるとばかり思っていたのですが、 検証中に変数だったことに気がついた次第です。 失礼致しました。

回答No.1

データを挿入するテーブルはMaster 。 入れ込むデータはNEWテーブルとOLDテーブルを製品CDでLeft joinしている。 OLDの製品CDは0埋め2桁で入っていますか? format(NEW.製品CD,'00') ↑ 強制的に0埋め2桁にしてみたら上手く行くかもしれませんね。 joinが数値型で結合されているのなら ON (NEW.製品CD = format(OLD.製品CD,'00')) ↑ を試してみた下さい。

poporin0201
質問者

お礼

レスありがとうございました。 製品CDではなく、F_NoですがFormatではうまくいきませんでした。

関連するQ&A

  • Accessの不一致クエリについて

    Accessの初心者です。二つのテーブルの異なるフィールどを比較する方法について、教えてください。 例えば、"6523610"という数字が両方のテーブルにあるかどうか調べたいとします。 テーブルA 523(フィールド名:契約コード)+610(ID) テーブルB 6523(フィールド名:取引コード)+61(フィールド名:地域コード) と、それぞれ構成が違います。頭につく"6"と最後の"0"は共通の数字です。クエリで新たなフィールドを作って、"6523610"にするまではわかるのですが、どのフィールドを関連づけていいかわかりません。このような場合は、不一致クエリではできないのでしょうか? 仕事で、明日中にデータを調べなければいけないので困っています。 よろしくお願いします。

  • Access2003 更新クエリについてご教授下さい。

    初めまして。 今回、初めてご質問させていただきます。 Access2003の更新クエリについてご教授お願いします。 AテーブルとBテーブルがあります。 ■Aテーブル(ALLテーブル)  各フィールド名:  名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型) ■Bテーブル(更新させたいテーブル)  各フィールド名:  名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型)  (※Aテーブルと同じです。) Bテーブルの内容をAテーブルへ更新させたいのですが 名前/完了のフィールドは、更新クエリで完成出来ましたが 備考欄の更新が出来ません。 (※備考欄には、コメントがそれぞれ入っています。) どのような形でクエリを作成すれば Aテーブルへ更新が可能になるのでしょうか? 以上、ご教授お願い致します。

  • アクセスのクエリの作り方

    初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。

  • ACCESSのクエリ:抽出条件で型が一致しません

    ACCESSでクエリを作ったのですが 実行すると、 「抽出条件で型が一致しません」のエラーが出ます 問題となっているヶ所は テーブルのフィールド定義がバイナリーになっています そして、クエリで   フィールド   テーブル   並べ替え   表示   抽出条件   または となっていますが、 この抽出条件に、1、を入れました テキスト型なら、"1" 数値系型なら、1、でいいのか、と思ったのですが バイナリ型は別の表現があるのでしょうか よろしくお願いします

  • アクセスのクエリについて

    1.以下の二つのテーブルを作成しました。 ・テーブル1  case_no:数値型  ap_no:テキスト型  ap_date:日付型  kanriID:数値型 ・テーブル2  kanriID:数値型  F_name:テキスト型 2.上記した二つのテーブルの「KanriID」をリレーションシップして、 さらに、下記の項目をピックアップした選択クエリを作成しました。  case_no ap_no ap_date kanriID(テーブル1)  F_name 3.上記のクエリを基に、ウィザードを利用して単票フォームを作成したのですが、データの更新ができないフォームが出来上がってしまいました。  どうしたら、データの更新ができるようになるのでしょうか?

  • アクセス テーブル作成クエリ

    アクセスです。 元のテーブルには「内容」と言うフィールドがあり、データ型をメモ型にしています。 値は255文字以上入れています。 そのテーブルを元にテーブル作成クエリで新規にテーブルを作成すると、 メモ型の内容フィールドは、テキスト型になり、全ての文字が入りません。 元がメモ型のフィールドでもテーブル作成クエリでテーブルを作成しても テキスト型にならないようにする方法はありますか?

  • 【access】複数のフィールドの不一致クエリ

    アクセスはまったくのド素人です。 OS:WindowsXP バージョンは2000です。 A,Bのテーブルがあり、それぞれのレコードは以下の通りです。 A a b c 1 4 7 2 5 8 3 6 9 5 6 8   B  d e f 5 6 8 1 4 7 2 1 3 4 4 6 d,e,fのフィールドがa,b,cと一致しないレコード(ここでは『2 12 13』と『2 1 3』)をクエリで抜き出したい時はどうすればよいでしょうか? d,e,fに『Is Null』を指定して不一致クエリを実行しても思うように行きませんでした。

  • クエリで編集できるようにしたいです。

    クエリで編集できるようにしたいです。 Access2003を使用しております。 学生さんの授業進捗管理をしていますが、全体構想としては、 一人一人が、どの課題が仕掛りで、どの課題が済みで、どの課題が次回予定か、というのを管理したいと思っています。 そこで、 「管理No」(数値型) 「姓」(テキスト型) 「名」(テキスト型) というフィールドがあるテーブル(顧客管理テーブル)を作りました。 さらに、 「課題No」(テキスト型)※数値型では 「1」 からになってしまい並び順が変わってしまう為、00001から連番にする為にテキスト型にしました。 「課題名」(テキスト型) 「仕掛り」(Yes/No型) 「済み」(Yes/No型) 「次回予定」(Yes/No型) というフィールドがあるテーブル(課題管理テーブル)を作りました。 上記2つのテーブルをクエリにしまして、 「管理No」 「姓」 「名」 「課題No」 「課題名」 「仕掛り」 「済み」 「次回予定」 というフィールド全てを使ったクエリ(課題管理クエリ)を作りました。 これであれば、クエリのデータシートでお名前毎に課題名が出てくるので、 理想的な形にはなったのですが、編集がまったく出来ません。 チェックボックスにレ点を入れることも、文字1つ編集することも出来ません。 編集できるようにするには、どうすればよろしいでしょうか? 宜しくお願い致します。

  • Accessでメイン、サブホームが作れません

    Accessで(1)顧客テーブル フィールド名 顧客コード(キー)        顧客名     (2)販売記録テーブル フィールド名 顧客コード        商品        レジNO     (3)レジテーブル フィールド名 レジNO(  キー)        年月日    でメインに顧客名をサブホームに年月日と商品を表示するメイン、サブフォームを作成したいのですがどのようにしたらいいのでしょうか?

  • クエリでインデックスを付ける事は可能でしょうか?

    オートナンバーが振られてないテーブルに対して クエリでインデックスを付ける事は可能でしょうか? 例えば、 テーブル1 会社名フィールド(テキスト型) あああ会社 いいい会社 ううう会社 と言うテーブルがあり、 クエリ1で ------------------   会社名    NO あああ会社   1 いいい会社   2 ううう会社    3 ------------------ のように、NOの部分を作りたいのですがどうすればいいでしょうか? 「テーブルでオートナンバー型のフィールド作ればいいじゃん!」 以外の回答が欲しいです。 SELECT テーブル1.会社名, "1" AS [No] FROM テーブル1; したらもちろん全部1になってしまいました。 ご回答よろしくお願いします。

専門家に質問してみよう