ACCESS2007の不思議な現象に困っています!

このQ&Aのポイント
  • ACCESS2007+SharePointで開発を行っており、データベースウインドウを開いた直後にクエリを実行すると0レコードを返しますが、再度クエリを実行すると3レコード返します。対処法が分からず困っています。
  • 複数値フィールド(リンクテーブルの1つのフィールドが複数値フィールド)に対して抽出条件を設定しているところが問題の原因と思われます。
  • テーブルAの列Cが複数値フィールドであり、クエリを実行すると初回は1つのレコードを返しますが、2回目以降は3つのレコードを返します。
回答を見る
  • ベストアンサー

ACCESS2007の不思議な現象に困っています!!

ACCESS2007の不思議な現象に困っています!! ACCESS2007+SharePointで開発を行っております。 SharePointとリンクしているテーブルが1つあり、そのテーブルを基にクエリを実行するのですが、 データベースウインドウを開いた直後にクエリを実行すると0レコードを返します。 再度クエリを実行すると3レコード返します。 (2回目以降は何度実行してもちゃんと3レコードを返します。) 3レコード返すのが正解なのですが、いろいろ調べてみると、どうも複数値フィールド(リンクテーブルの1つのフィールドが複数値フィールド)に対して抽出条件を設定しているところが問題というところまでは分かったのですが、対処法が分からず困っています。 (ちなみに抽出条件は Like "*OOO*" な感じです) あと、自分なりにわかったことなのですが、、、 下記のようなテーブル(例)があったとします。(列Cが複数値フィールドです) SQL: select * from TableA where 列C.Value Like "*1*" 列A      列B     列C ----------------------- 10      100      1 20      200      2 30      300      3 40      400      1,2 50      500      1,3 60      100      2,3 ----------------------- 初回クエリ実行結果 列A      列B     列C ----------------------- 10      100      1 ----------------------- 2回目以降のクエリ実行結果 列A      列B     列C ----------------------- 10      100      1 40      400      1,2 50      500      1,3 ----------------------- どうかご教授の程、よろしくお願い致します。

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

SharePointが判らないため、同じような現象が発生しそうな不具合条件の可能性等を考えてみました。 1)データベースウインドウを開いた直後 直後が、ウィンドウを開いてすぐのみ、つまり接続実行後時間が経っていない場合、という事であれば、接続に時間が掛かってクエリ実行時点では接続が完了していない、という事があり得るのか否か。 データベースウインドウを開いて、30秒程ダンスを踊ってから、クエリを実行すると3レコード返るのか? 2)不要なリソースを消費しないためになどの理由で、クエリ実行直前に初めて(SharePointに?)接続しにいっていないか。 そして、その接続は非同期命令ではないか? 1)の現象に近いが、この場合ウィンドウを開いてから5分間ダンスを踊っても、1度目は失敗する。 3)本来クエリ実行前にしなければならない処理を、クエリ実行後に処理していないか。 (2度目以降は、1度目のクエリ実行後に行った処理を元に、クエリに成功しているなど) 4)失敗する際の、Like "*OOO*"に何が入っているか見てみましたか?

Frozen-Ray
質問者

お礼

大変お礼が遅れてしまい申し訳ありませんでした。 結局、同じクエリを2回実行し、その2回目の値を利用する方向で落ち着きました。 本当にありがとうございました。

関連するQ&A

  • Accessの削除クエリで「クエリが複雑すぎて実行できません」

    困っています。どなたかご存知の方がいらっしゃいましたらお願いしますm_ _m (1)Aクエリ(選択クエリ)とBテーブルを削除クエリでつなぐ(結合プロパティはAクエリ全件から→B) (2) (1)の削除クエリは、 B全件から(From B*) Bのフィールド40列ぐらい(数値列)を落とし、 (Where 条件「0」←数値ゼロをいれる) (3)削除クエリを実行すると、「複雑すぎて実行できません。」というエラーメッセージがでてきて実行できません。何か駄目なのでしょうか? やりたいことは、 Bテーブルを、 Aクエリにあるレコードは抽出し、のちフィールドの値が0のものは削除したいのです。 よろしくお願いします。

  • ACCESS2003 数値や文字列のあいまい検索

    フィールド内に入力されている文字列から、「ひらがな」や「英語」が入力されているレコードの抽出について質問です。 ※[ニックネーム]のフィールドは、英数カナ文字が混在しています。 ======================== (テーブル) [ID]  [ランク]  [ニックネーム]  1     A     123456789 2     B     akb48   3     A     ああああ    4     B     987654321     5     C     かかか123   6     B     112233    7     C     445566      8     A     778899xyz    ======================== ☆上記のテーブルから、[ニックネーム]に「ひらがな」が 含まれるレコードの抽出をする。 ======================= [抽出結果] [ID]  [ランク]  [ニックネーム]  3     A     ああああ    5     C     かかか123    ======================== ☆上記のテーブルから、[ニックネーム]に「英語」が 含まれるレコードの抽出をする。 ======================= [抽出結果] [ID]  [ランク]  [ニックネーム]  2     B     akb48    8     A     778899xyz ======================== 上記のように、クエリでの条件を指定して抽出結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • Accessで連続データってできますか?

    Aテーブル(データベース)からBテーブルに必要なレコードを抽出して、Bテーブルで編集しています。 Bテーブルで編集したレコードをCテーブルに移動する際に、連続データのフィールドが必要になったので、テーブルのオートナンバー型フィールドを一つ追加しましたが、うまくいきません。 追加クエリでB→Cに移動させるんですが、キー違反がでてクエリが動きません。 できれば、クエリで連続データを作成して、Cテーブルに追加させたいんですが、クエリで連続データって作れるものなのでしょうか?

  • クエリーで全部のデータを抽出する方法

    アクセスのクエリーでデータを抽出する時、具体的にはフォームでデータを入力し抽出するのですが、たとえばフォームのテキストボックスに数字を入れないとそのクエリーのフィールドは抽出がかからないようにしたいのです。(抽出フィールドが1つなら数字をいれなければクエリーのデータすべてが表示される) ----------------------------------- フィールド   A      B     c テーブル   テーブル1 テーブル1 テーブル1 抽出条件    []    [] または    ---------------------------------- 上はクエリーのデザインですがクエリーをひらくと抽出条件をきいてきますがA列は何も入力しないでB列では1と入力するとBの列に1の入ってるレコードを表示させたいのです。(もし空欄が無理ならAの列の時何かある文字を入力すると全部表示になる、でもいいです。) まわりくどくなりましたが、アクセス超入門者です。よろしくおねがいします。

  • アクセス テーブル、クエリーについて

     アクセスでソフト作成中です。そこで教えてほしいことがあります。 たとえば下記のように2つのテーブルがあります。 テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30          テーブル1の数値は固定します。そこで下記のようなクエリーを作成したいのです。 クエリー1 フィールドA フィールドB a1 10 b1 20 c1 30 テーブル2に数字を入れていくと テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30           40 クエリー1 フィールドA フィールドB a1 40 b1 20 c1 30 このように数字が上書きされていくようなクエリーは作成できないでしょうか。(あくまでテーブル1の数値は固定、フィールドAとフィールドBにリレーションシップは設定されていない。) よろしくおねがいします。

  • AccessのクエリでvbLfのみ抽出するには

    Access2010のクエリー(SQL)で vbLfかvbCrLfが含まれているレコードを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(10) & "*"; vbLfが含まれているレコードは抽出せず、 vbCrLfが含まれているレコードだけを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(13) & Chr(10) & "*"; でよいと思いますが、 vbCrLfが含まれているレコードは抽出せず、 vbLfが含まれているレコードだけを抽出するには、 どのように記述すればよいのでしょうか。 よろしくお願いします。

  • Access #エラーについて

    Access初心者です。 よろしくお願いいたします。 [前提]  テーブルA のIDに紐づけてクエリBの数値をクエリCで反映させたい。  〈詳細データ〉   ・テーブルA    [ID] [名称]       1   あ     2   い     3   う     4   え     5   お   ・クエリB    [ID] [数値]     2   10     3   20     5   40   ・クエリC    [ID]  [名称] [数値]     1    あ  #エラー     2    い   10     3    う    20     4    え  #エラー     5    お   40   ・”テーブルAの[ID]”の全レコードと”クエリBの[ID]”の同じ結合フィールドだけを含めてリレーションを行っている。    ・クエリCの算式: IIf(IsError([クエリB].[数値]),0,[クエリB].[数値])  [質問]    ・クエリCの『#エラー』部分を0にしたいのですが、何か良い方法はございませんでしょうか。   ・そもそも上記のロジックは無理がありますでしょうか。    アクセスはあまりいじったことがございません。ご回答いただけますと幸いです。   よろしくお願いいたします。

  • Microsoft Accessでどうしても上手くいきません。

    (1)テーブル作成クエリ クエリA で テーブルB を作ります。 (2)テーブルB にフィールドを一つ追加して、変更を保存 (3)テーブルB のレコードを削除 (4)クエリA を 追加クエリ に変更 で追加クエリAを実行すると、入力規則違反でレコードの追加ができません。 追加するフィールドは、オートナンバー型です。 以前は同様の作業で成功したんですけど・・・ すみません助けてください

  • アクセスの更新クエリの質問です。

    ちなみにAccess2007を使用しています。 A,B,C,Dというフィールドが有り、AフィールドにはCodeが入っています。 Bフィールドには"bb"という言葉、Cフィールドには"cc"という言葉にそれぞれ書き換え、Aフィールドには、今から更新する1レコードを抽出するため、更新クエリ実行時に、パラメーターを入力するように設定しました。 しかし、更新するレコードは、全45000件中、6000件くらいあり、いちいちコードを入れるのが大変です。 もともと、書き換えるためのコードリストがエクセルデータとして有り、Accessにインポートすれば、コードリストをAccessのテーブルにする事も出来ます。このテーブルを使って簡単に、書き換えることは出来ないものなのでしょうか?

  • ハイパーリンク型フィールドからファイルを開く

    ACCESS2007を使用しています。 まず、ハイパーリンク型のフィールドをひとつ持つテーブルAがあります。 そのフィールドには、例えば C:\My Documents\workbook1.xis というリンクが格納されています。 フォームからの条件入力により、テーブルAよりレコードが抽出されるクエリBを作りました。 そのクエリBに含まれる、レコードのハイパーリンク先のファイルを一括で開くVBAを作ろうとしたのですが、まったく方法が思いつきません。 どなたか、ご教授願えないでしょうか?

専門家に質問してみよう