• 締切済み
  • すぐに回答を!

ACCESS97で、テーブルリンクを使用すると結果がおかしくなります

こんにちわ、ご教授よろしくお願いします。 win2000 Office97を使用しています。 ACCESS97でテーブルリンクでデータを抽出して、 クエリーを走らせた場合と、 リンクを一度テーブルに落としてから、 クエリーを走らせた場合とでデータ件数がちがってきてしまいます。 正しい結果は一度テーブルに落としてから、クエリーを走らせた場合が正しい結果が出ました。 97でテーブルリンクを使用する際に なにか注意しなければならないことがあるのでしょうか? 一々、テーブルに落としてからクエリーを走らすにはかなりの数があるので、 できれば、テーブルリンクを使用してクエリーを走らせたいのです。 わかりずらい説明ですが、ぜひとも ご教授お願いします!><

共感・応援の気持ちを伝えよう!

みんなの回答

  • 回答No.5
noname#182251
noname#182251

#2です。ご提示頂いたSQL文を見る限りでは余りお役に立てそうもありません。以下、私がデバッグするならということも含めて 1.リレーションを取らないで SQSBR_SUM_NT_SHINZAI_F.SHIN_HINBANとsinzaiの件数を比較するとどうなるか 2.二つのSQL文でSHIN_JITUZAISUとSHIN_EZAIFが異なっているが、同じにしたらどうか 3.SQLを単純化してSELECT SQSBR_SUM_NT_SHINZAI_F.SHIN_HINBAN, げんか.HINBAN FROM SQSBR_SUM_NT_SHINZAI_F INNER JOIN げんか ON SQSBR_SUM_NT_SHINZAI_F.SHIN_HINBAN = げんか.HINBAN; のように(どちらも直して)でどうか 4.多い方と少ない方の差分をSELECT クエリ1.SHIN_HINBAN, クエリ2.SHIN_HINBAN FROM クエリ1 LEFT JOIN クエリ2 ON クエリ1.SHIN_HINBAN = クエリ2.SHIN_HINBAN WHERE (((クエリ2.SHIN_HINBAN) Is Null));のように抽出して、何らかの規則性はないか この方法で問題解決に近付く自信はありません。あくまでも私であればこのようにするということで、ご参考までに(^^;

共感・感謝の気持ちを伝えよう!

  • 回答No.4

>下のほうにレコード数が表示されますので >そこで確認しました。 リンクテーブルのほうのクエリー、一度最終レコードまで移動させました? あと、 select count(*) from クエリー名; このSQLの選択クエリーを新たに作って実行するとどうなりますか? これで各クエリーで取得された件数を確認してみてください。 これで件数が違うようですと問題なんですが。 また、取得したデータはどのようにこのあと加工して利用するのでしょうか? 「コピーしてExcelに貼り付ける」とか、「CSVでエクスポートする」とかいうレベルでかまわないんで。 ちなみに、リンクテーブルのリンク先のDBは名前からしてSQLServerですか?

共感・感謝の気持ちを伝えよう!

  • 回答No.3

あのう、データの取得ではなく『件数の取得方法』を確認したかったんですが。

共感・感謝の気持ちを伝えよう!

質問者からの補足

申し訳ありません^^; 件数はクエリーを実行したら 下のほうにレコード数が表示されますので そこで確認しました。 よろしくお願いします。

  • 回答No.2
noname#182251
noname#182251

問題のクエリーをSQL文として提示できないでしょうか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

SQL文は下記のとおりです。 ●テーブルリンクのとき SELECT SQSBR_SUM_NT_SHINZAI_F.SHIN_HINBAN, SQSBR_SUM_NT_SHINZAI_F.SHIN_EZAIF FROM SQSBR_SUM_NT_SHINZAI_F INNER JOIN げんか ON SQSBR_SUM_NT_SHINZAI_F.SHIN_HINBAN = げんか.HINBAN; ●テーブルのとき SELECT sinzai.SHIN_HINBAN, sinzai.SHIN_JITUZAISU FROM げんか INNER JOIN sinzai ON げんか.HINBAN = sinzai.SHIN_HINBAN; リレーションシップは 両方のテーブルの結合フィールドが同じ行だけを含めるです。 よろしくおねがいします

  • 回答No.1

それぞれのデータ件数はどのように取得していますか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 補足をさせていただきます。 データの取得ですが、 別のテーブルに抽出したい品番テーブルというのがあります。 その品番テーブルと同じ品番のデータを引っ張るだけのクエリーで抽出条件等は他にはありません。 これがテーブルリンクでデータを引っ張ってくると データが少ないんです。 リンクしたデータを一旦テーブルに落としてから クエリーを走らすと、ちゃんと全部ひっぱってこれます。 マイクロソフトのサイトもみたのですが、 わかりませんでした。。 よろしくお願いします><

関連するQ&A

  • パスワード付Access2010からリンクテーブル

    パスワード付Access2010のテーブルを別のAccessでリンクテーブルとして使用しています。 このリンクテーブルを使ったクエリの結果を、ADOを使ってExcelシートに書きだしたいのですが、このリンクテーブルを使ったクエリを動かすと 「SQLステートメントが正しくありません。DELETE、INSERT、PROCEDURE、SELECTまたはUPDATEを使用してください」 というエラーメッセージが出てしまいます。 リンクテーブルのあるAccessでクエリを動かすと普通に動くのですが、ExcelからADOで動かすとエラーがでるということです。 このような場合に、エラーにならずにExcelからクエリを動かして結果をシートに出力する方法が何かありますでしょうか。 ご教授よろしくお願いいたします。

  • Accessでテーブルのリンクを新規テーブルに保存

    ExcelのデータをAccessのテーブルでリンクしています。 そのデータをクエリで必要なレコードだけを抽出します。 抽出したデータのみを新規テーブルとして保存したいんですが、保存の仕方がわかりません。 Access2000です。 どうかよろしくお願いします。

  • Access のリンクテーブルについて

    よろしくお願い致します。 Access側から外部テーブルを参照したリンクテーブルを作成しました。 しかしそのテーブルを開くのにはすごく時間がかかり、時にAccessが応答なしの状態になったりします。 そこで、ためしにテーブル作成クエリでリンクテーブルのデータと同じデータをもつテーブルを作成しました。 すると、そのクエリで作成したテーブルからの操作はスムーズに行われました。リンクテーブルとはデータ量も同じなのにこのように重さの違いがでるのはなぜなのでしょうか? Accessを使いはじめたばかりで、裏ではどのようになっているのかよくわからずパフォーマンスのあげ方に四苦八苦しております。 アドバイスをよろしくお願いします。

  • アクセスで片方のテーブルを優先して抽出する方法

    アクセスのデータ抽出で質問です。 画像のように「テーブル1」と「テーブル2」があり、クエリで「結果」のようにデータを抽出したいです。 一応出来てはいるのですが、もっとすっきりしたやり方があれば教えて下さい。 <やりたいこと> ・テーブル1とテーブル2のフィールド2を比較し、フィールド1を基準としてテーブル2にデータがあればそちらを抽出、なければテーブル1から抽出したい <現在のやり方> 1)テーブル1とテーブル2の差分クエリを作成 2)1)の差分クエリとテーブル2のユニオンクエリを作成 上記以外のスマートなやり方があれば是非知りたいと思っております。 よろしくお願いいたします。

  • AccessからOracleへのリンクテーブル時の型情報?

    Access始めたばかりの初心者です。 現在Oracle10gのデータベースのとあるテーブルを をAccess2000でリンクし、クエリで抽出したものをレポートに表示 しようとしています。 そのテーブル上に、 Oracle上ではVARCHAR2(6バイト)の日付データがあります。 例) 200806 これをAccessのクエリ上で変換し、 "6月" と表示させたいのですが、 なぜかうまくいきません。 Oracle上の項目名が YM だとすると、 Replace(Right([YM], 2), "0", "") & "月" こういった関数でうまくいきそうなものですが・・ もしかしてOracleのVARCHAR2はリンクすると文字列型以外の型として 扱われるのでしょうか・・ どなたかご存じの方、ご教授くださいませ。

  • accessでテーブルのリンクでクエリに反映させる方法を教えてください

    accessでテーブルのリンクでクエリに反映させる方法を教えてください。 現在2つのエクセルデータを比較するクエリを作成したのですが、 比較するデータが大量にあり、テーブルのリンクでクエリに反映させたいのですが、 うまくいきません。 よろしくお願いします。

  • Access フォームからの入力結果をテーブルにすることはできない?

    Access フォームからの入力結果をテーブルにすることはできない? 使用しているのはWindows XP、Access 2003です。 とある調査結果をデータベース化する仕事を与えられています。 データ1件あたりの構成要素を一目で見れるようにするために「こういうレイアウトのフォームを作って」と上司からリクエストが出ています。 まず、今手元に集まっているデータについては、 Excelで一覧表作成 → Accessにインポートしてテーブル作成 → オートフォームでフォーム作成し、デザインビューでレイアウト変更 というふうにして、上司から言われたフォームは作りました。 今後、データは増えていくので、作ったフォームから新たにデータの追加をしていくことになるのですが・・・。 フォームからデータを追加しても、元となったテーブルにはリンクしませんよね? とすると、データを追加した結果をテーブルにしたい場合はどうしたらいいのでしょうか? 今度は、そこからクエリを組む必要も出てくるため、テーブルにしたいのですが・・・。 Accessについては、以前勤めていた会社の研修で習っただけで詳しい使い方をずいぶん忘れてしまっています。今回、自分なりにいろいろ調べてはみたのですが、よくわかりませんでした。 もしかしたら、Accessの使い方を基本的に間違っているでしょうか・・・ よろしくお願いします。

  • アクセス97のテーブルを直接いじれなくしたい

    アクセス97です。 NTにあるDBを複数人で共有して使用しております。 クライアントはWin-95とWin-2000です。 フォームでデータの読み書きはできるのですが、 ときどき、テーブルを直接覗いてデータ変更したり、削除する人が います。 更新日付が変わらなかったり、データが一部壊れたりして困っています。 テーブルのデータやクエリーやモジュールを直接いじれなくする方法は ないでしょうか? 現在、MDEファイルにしているので、フォームはいじれません。 表示オプションでテーブルは隠しモジュールにしています。 でも、知っている人は簡単に解除できますよね。 困った。 ワークグループをつくり、アクセス権を設定するのはやりたくありません。 以前、管理に多大の勢力を使った経験があるので。 何か簡単にテーブルやクエリーをいじれなくする方法はないでしょうか? よろしくお願い致します。

  • クエリの結果が文字化け(Access2007)

    会社で使っているAccessシステムについての質問です。 OSはWindows7、Officeのバージョンは2007です。 困っている現象は、とあるクエリを通すと抽出結果が文字化けされてしまうフィールドがあるということです。 このクエリをレコードソースとするレポートも同じように文字化けしています。 大元データのテーブルでは普通に見れています。 このシステムはテーブルはテーブルのみ1つのAccessにまとめられてネットワーク上に保存されており、ユーザーは各自自分のPCにテーブルにリンクされている操作用Accessファイルを持っていて操作を行っています。 大分前にも同じ現象が出たことがあったのですが翌日には直っておりその後も問題がなかったのでそのまま使っていましたが今日になってまたこのような現象が出ました。 説明が下手で恐縮ですがこれらのことから何かお分かりになることがありましたらお知恵をお貸しください。

  • Accessでのリンクテーブルについて

    Access2007でSQLServer2005のテーブルのリンクを張っています。 このリンクテーブル内のnvarchar型のフィールドをクエリでint型へ変換したいのですが、CInt(対象フィールド)としてもオーバーフローが発生していまいます。 nvarchar型のフィールドの内容は8桁の数字で、SQLServer側では変換できています。 Accessではnvarchar型の変換はできないのでしょうか? 変換したビューを引っ張ることも考えましたが、そのクエリ以外では文字列として扱いたいので、できればクエリ内で変換したいのですが・・・。 どなたか解決方法をご存じでしたら教えてください。 お願いします。