Accessの長文文字列の結合について

このQ&Aのポイント
  • Accessでの長文文字列の結合方法について質問があります。選択クエリAには空のフィールド1があり、選択クエリCには説明文1というフィールドがあります。空のフィールド1に説明文1と長文文字列を収めたいのですが、「指定した式はクエリのデザイングリッドの1024文字の制限を超えています」というエラーが出てしまいます。この書き方は力技なのでしょうか?また、他のクエリAやBでも同様の操作を行いたい場合にはどのような方法がありますか?
  • 質問者はAccess 2003を使用しており、Windows 7の環境で作業しています。ご教示いただけると幸いです。
  • 質問の要点は、Accessで長文文字列の結合方法についてです。質問者は選択クエリAで空のフィールド1に説明文1と長文文字列を結合したいと考えていますが、1024文字の制限を超えるとエラーが発生します。他のクエリAやBでも同様の操作を行いたい場合にはどのような方法があるのか、そして使用している環境はAccess 2003とWindows 7です。
回答を見る
  • ベストアンサー

Access 長文の文字列結合

選択クエリAには空のフィールド1があります。 選択クエリCには説明文1というフィールドがあります。 空のフィールド1に説明文1と、ある長文の文字列を収めたい為、以下のようにしました。 選択クエリC.説明文1 & "長文文字列1" AS 空のフィールド1 として、SQLビューへ直接、長文文字列を入力しています。 ※デザインビューにすると「指定した式はクエリのデザイングリッドの1024文字の制限を超えています」と出て開けません。 こういった書き方は力技なのでしょうか? また、この長文の文字列ですが、種類が複数あります。 クエリAのフィールド1には、説明文1と文字列1、フィールド2には、説明文2と文字列2、 クエリBのフィールド1には、説明文1と文字列3、フィールド2には、説明文2と文字列4 など、クエリAやBのような他のクエリを複数作成したい為、 別のスマートな書き方があればご教示いただきたく思っております。 クエリCはデータベースからダウンロードしたものをAccessにインポートして成型した情報で、 クエリA、B等はシリーズ別の説明文の雛形として使用しています。 長文文字列は注意文のようなもので、その中の一文だけが違う文章です。 作業環境は、OS:Windws7、使用ソフト:Access2003となっております。 どうぞ宜しくお願い致します。

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

  • ベストアンサー
noname#212067
noname#212067
回答No.1

選択クエリC.説明文1 & "長文文字列1" AS 空のフィールド1 ↓ 文字列結合(選択クエリC.説明文1,1) AS 空のフィールド1 Module Const Public Const 文字列1 = "ああああああああああああああああああああああああああああああああああああああ" Public Const 文字列2 = "いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい" Public Const 文字列3 = "うううううううううううううううううううううううううううううううううううううう" Public Const 文字列4 = "ええええええええええええええええええええええええええええええええええええええ" Module Function Function 文字列結合(S As String, P As Integer) As String 'S = 説明文1 or 説明文2 'P = 文字列1~文字列4 Select Case P Case 1 '文字列1 文字列結合 = S & 文字列1 Case 2 '文字列2、 文字列結合 = S & 文字列2 Case 3 '文字列3 文字列結合 = S & 文字列3 Case 4 '文字列4 文字列結合 = S & 文字列4 End Select End Function

lotus2014
質問者

補足

ありがとうございます。 これはVBAを書いて下さったのでしょうか? 後出しで申し訳ないのですが、VBAはまだまだ理解できるほど 勉強をしておらず、書いてくださったVBAの動作は なんとなく理解できるのですが難しいです^^; 試してはみたのですが、「コンパイルエラー:修正候補:式」と 出てしまい自分で修正できませんでした… 素人考えなのでしょうが、例えば一つテーブルを作って 必要な分の長文の文字列を入れておき呼び出す、といった方法は普通しないものですか? 今回の場合ですと、長文文字列の種類は13種類(各1500文字程度)、 クエリAと同じ立場のものが7種類です。 作成途中ですがファイルサイズは4MBとなっております。 使う頻度だったり、ファイルサイズや、Accessに詳しいか などにもよると思いますが他の方はどんな処理をするのかが気になります。

関連するQ&A

  • ACCESSの文字列の結合について!

    AとBのふたつのフィールドがある場合、 A&Bで文字列の結合が出来る事は分かっています。 ところが、同一フィールドの文字列を結合する方法がわかりません。 現在はAというフィールドがある場合、 フォームフッターにフレームをつくり・・・・。 この時点で止まっています。 数値の場合はただたんに「=sum([A])で解決しますが、 文字列の場合はsumでは駄目なわけで・・・・。 ご指導の程宜しくお願いします。

  • アクセスで文字列をつなげる

    おはようございます。たびたびお世話になります。 文字列の連結で  フィールド1 フィールド2 フィールド3  材料a     材料b    材料c  材料a     材料d  材料c というデータがあり、クエリで&を使用し文字の連結をしています。 材料a,材料b,材料c 材料a,材料d 材料c というようにしたいのですが、そのまま連結してしまうと、 材料a,材料b,材料c 材料a,材料d, 材料c,, となってしまいます。 適当な関数も見つからず、不要な『,』を置換で消してしまう事も考えているのですが、うまくいきません。 良い方法はないでしょうか?

  • access2003 「#エラー」を文字列にしたい

    テキスト型に入れた値を数値に変換し、「#エラー」を文字列にしたい テーブル1のデザインビューで ・フィールド1 テキスト型 ・主キーなし として データを 1 2 あ を投入します。 そして SELECT CLng(テーブル1!フィールド1) AS 数値型に変換 FROM テーブル1; クエリを作りました。 1と2は数値に変換されますが、文字列を入れた「あ」は 「#エラー」になります。  「#エラー」を「未設定」という文字列にしたいのですが どうすえばいいのでしょうか? よろしくお願いします。

  • アクセスで文字列結合し、定型文字を表示させたいのですが、、、

    アクセスのクエリーで文字の結合をしたときに (項目:  ) というのを表示させるようにしたいのですが どうすれば良いのでしょうか? フィールド→ A範囲: [B範囲]&[C項目] この[C項目]に (項目:  )というのを表示させ (項目:C項目)というように表示したいのですが できません、、、。 A範囲というフィールドに    B範囲 +(項目: C項目) どう入力すればできるでしょうか? どなたか教えてください。

  • 「Access2007」について教えてください

    クエリに新しく列を挿入できないで困っています。 作成したクエリにデザインシートビューから デザイングリッドの1つのフィールドを選択してデザインタブのクエリ設定グループの列の挿入を選択したいのですが選択ができない状態になっています。なぜなのか分かりません。

  • Accessでクロスタブ集計クエリの結果の列を固定にしたい。

    Access2007を使っています。 フィールド1においてAまたはBに一致するもののみをフィールド2(あ、い、う、え、・・)ごとに Countするというクロスタブ集計クエリを作成しました。 デザインビューで見たCriteria行には「"A" or "B"」と入っています。 結果は、   A B あ 1   い 2 2 う 1   え   1 ・ ・ ・ ・ ・ ・ のような感じになります。 この結果を他のクエリ(クエリX)で参照し、AやBという列を使っているため、 もしも、AもしくはBが元のフィールド2の中に1レコードも無い場合、 クロスタブ集計の結果からAもしはBの列そのものがなくなってしまい、 クエリXを実行した際にエラーとなってしまいます。 フィールド2内のAやBのレコード有無に関係なく、常にクロスタブ集計クエリの 結果を一定にする方法はありませんでしょうか?

  • ACCESSクエリでの結合の仕方・・・SQL文かも

    ACCESS 2003を使用しています。 テーブルA テーブルB の2テーブルでクエリを作っています。 結合的には・・・ テーブルAのフィールドX ⇔ テーブルBのフィールドY です。 これで2テーブルに共通する一致データのみ抽出はできるのですが、 2テーブルに共通する一致データに加えて、 2テーブルの不一致データも一緒にクエリ表示されるようにしたいのです。 欲しいのは抽出イメージは、以下のような感じのクエリ結果です。 テーブルA:フィールドX|テーブルBのフィールドY a             |(空) (空)           |b c             |c d             |(空) (空)           |e f              |f  g             |(空) h             |h おそらく、SQL文を書く必要があるとは、想像できるのですが・・・ どなたか、ご教授いただけると助かります。 よろしくお願いします。

  • ACCESS2007のクエリについて

    ACCESS2007のクエリについて ACCESS初心者です。 よろしくお願いします。 クエリを作成するときに、デザインビューでフィールドの位置を変更したり、 (たとえば、「氏名」の列を4列目から2列目に移動する) 並べ替えなどをして、データシートビューにすると反映されているのに、 データシートビューでフィールドの位置を変更したり、並べ替えなどをしても、 デザインビューには反映されてませんが、 クエリとはこういうものなのですか?

  • アクセス 同じフィールド文字列を結合させたい

    お世話になります。実は、ほぼ同じ内容の問合せと回答があります。 http://okwave.jp/qa/q3023548.html これに、近いと思うのですが…。 この回答ならいける!と思い、やってみたのですが、これを利用しても自力では、うまく動かせませんでした。 (テーブル) 品目番号    集計列(テキスト型)    他の列   …   A1      "カレー,ハヤシ"       あ1    …   A1      "チキン,ビーフ"       あ1    …   B1      "バジル,タイム"       び1    …   …   ↓↓↓クエリ実行 (クエリ実行結果) 品目番号で列を集計するイメージで、しかし数値の合計でなく、キーワードの文字列を連結した結果にしたいのです。なお、他の列は『品目番号』と同様に出力したいです。 品目番号  集計列(テキスト型)          他の列   …   A1    "カレー,ハヤシ;チキン,ビーフ"     あ1   …   B1    "バジル,タイム"             び1    …   …   集計したい列の集計(文字列の結合)   "カレー,ハヤシ;チキン,ビーフ"         ↑↑↑結合の間は";"や","などで区切り文字を入れて アクセスは、初心者ですので、上記『q3023548』の中で丁寧に記載されている内容のコピーや簡単な手直しは、がんばれば出来ると思いますが、意味がよく分かっていないので修正必要な箇所については細かく教えて頂きたいです。上記の回答内容でも、まだ分からないの?!と言うレベルかと思います(苦笑)…。 上記の回答内容のSQLクエリ内『TOP 1』という部分などが、私の場合、列をすべて抽出するため、変わるのだと思いますが、やはり細かい部分が分かりません。出来ないことなのでしょうか…。 さらに可能であれば、複数の指定した列で同様なことが出来ると非常に助かります。『集計』の結果、区切り文字が連続しても構いません。(『;;;;;;;;;;;;;;』とか『,,,,,,,,,,,,,,,』という具合で…) 最終的には、帳票形式のフォームで結果を表示させます(複数の列でフィルタリング後)。 なので、多分、テーブル作成クエリになると思います…。 現在は、同じ品目番号のレコードがレコード分だけ、キーワード部分だけ変わりながら、何度も繰り返し表示される状態になっています。(各品目の画像を表示させるので帳票形式にしています。)これを1つの品目の表示を、1度にしたいです。 宜しくお願い致します。

  • 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で教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

専門家に質問してみよう