Page 696 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼抽出条件が長くなる場合は? kazu 04/7/9(金) 10:02 ┣Re:抽出条件が長くなる場合は? クロ 04/7/9(金) 11:37 ┃ ┗Re:抽出条件が長くなる場合は? kazu 04/7/12(月) 13:24 ┃ ┗Re:抽出条件が長くなる場合は? クロ 04/7/12(月) 14:02 ┗Re:抽出条件が長くなる場合は? よろずや 04/7/10(土) 13:24 ┗Re:抽出条件が長くなる場合は? kazu 04/7/12(月) 13:31 ─────────────────────────────────────── ■題名 : 抽出条件が長くなる場合は? ■名前 : kazu <kouwa-mn@miyazaki-catv.ne.jp> ■日付 : 04/7/9(金) 10:02 -------------------------------------------------------------------------
はじめまして 初心者なのでくだらない質問だと思うかもしれませんが、 "OpenForm"メソッドにデータの抽出条件を設定してフォームを開こうとしたら 「抽出条件が長すぎる」ということでフォームが開きませんでした。 どのようにしたら複数の長い条件でフォームを開くことができるのでしょうか? 分かる方がいらっしゃいましたらぜひ教えてください。 よろしくお願いします。 以下にモジュールの内容を書きましたので見てください。 ・ ・ ・ For i = 0 To MarkNum - 1 '配列の要素数分のデータを取得します。 lngMarkID = objArrayLong.Data(i) 'セルの値を取得します。 strData = objDb.GetCell(lngMarkID, lngFieldID, False) 'キイ属性を抽出する箇所のSQL文を文字列にします。 test = test & "((([Q].[ID])=" & strData & "))" If i = MarkNum - 1 Then Exit For Else strsql = strsql & " OR " End If Next End If '抽出したレコードを表示するためにフォームを開きます。 '("test"はWhere Condition/Where条件式) DoCmd.OpenForm "F_台帳", , , test |
**ヘルプより** >引数 wherecondition の最大長は 32,768 文字です。 とありますがコードの場合は32,768 文字ではないでしょうか? 「"Where Condition/Where 条件式" アクション引数の最大長は 256 文字」 マクロ ウィンドウの場合だと思いますが? 如何でしょうか? |
▼クロ さん: メールありがとうございました。 コメント間違えてました。すみません。 たしかに引数 wherecondition の最大長は 32,768バイトです。 それでまた質問なのですが、メッセージボックスで引数whereconditionのバイト数と 文字数を表示させてみたのですがバイト数が12404バイト、文字数が 6202文字なのに「プロパティの設定値が長すぎます」というメッセージが 出てきてしまいます。どういった原因が考えられるのでしょうか? 教えてください。宜しくお願いします。 |
▼kazu さん: Accessのバージョンは? 2000以降はバイト数でなく文字数になってます。(半角1文字/全角1文字も1文字) **ヘルプ(Ac2002)より** フォーム、レポート、またはコントロール(.mdb と.adp の両方)のRecordSource プロパティまたはRowsourceプロパティとして使用される SQL ステートメント内 の文字の数…32,750文字 **ここまで** whereconditionの部分というよりは上記の制限に引っかかっているのでは? よろずやさんのレスを参考に短くしてみてはどうでしょうか? 後はQueryDef等で一時的にクエリを作成しそれをRecordSourceにするとか? |
> test = test & "((([Q].[ID])=" & strData & "))" この書き方ですと、 ((([Q].[ID])=100)) OR ((([Q].[ID])=101)) OR ((([Q].[ID])=102)) というような文字列になりますよね。 [Q].[ID] IN(100,101,102) というような書き方もあります。 |
▼よろずや さん: >[Q].[ID] IN(100,101,102) >というような書き方もあります。 メールありがとうございました。 [Q].[ID] IN(100,101,102)というような抽出条件の指定に すると引数のバイト数がだいぶ省略できそうです。 それでまた質問なのですがそれでも抽出条件が長すぎでフォームが 表示されない場合はなにか良い方法があるのでしょうか。 教えてください。宜しくお願いします。 |