質問: アクセス 同じフィールド(テキスト型)のレコードを連結させたい お世話になります。アクセスの超初心者です。 数値型であれば同じ列の合計できますが、テキスト型で以下のように 連結できる方法がございませんでしょうか? <元テーブル> レコード番号 列:キーワード(テキスト型) 列:抽出条件 1 "山,川" aaa 2 "海外,国内" aaa 3 "熊,馬" bbb ↓このテーブルを元にクエリをかける <クエリ出力結果> 列:抽出条件にaaaを指定 列:キーワードの合計(連結) "山,川、海外,国内" ^^ ↑連結の境目には"、"などの区切りを入れたい。 宜しくお願い致します。
回答: クエリに dbselect関数を組み込む場合は、次のように書きます。 ・select文で使う。 ・top 1 を使う。 がミソです。 select top 1 dbselect("select キーワード from テーブル2 where 抽出条件='aaa'","、") as 式1 from テーブル2; <クエリ3> 山,川、海外,国内、 という実行結果を得ます。 さて、この場合、区切り子が最後にも付いています。 これが、邪魔であれば dbselect 関数を修正します。 修正後の実行結果です。 [イミディエイト] ? dbselect("select キーワード from テーブル2 where 抽出条件='aaa'", "、") 山,川、海外,国内 ? dbselect("select キーワード from テーブル2 where 抽出条件='aaa'") 山,川;海外,国内 念のために dbselect 関数を再度示して置きます。 public function dbselect(byval strquerysql as string, _ optional byval strseparator as string = ";") as string on error goto err_dbselect dim i as integer dim j as integer dim r as integer dim c as integer dim m as integer dim n as integer dim rst as adodb.recordset dim fld as adodb.field dim datas as string set rst = new adodb.recordset ' ================= ' begin with: rst ' ----------------- with rst .open strquerysql, _ currentproject.connection, _ adopenstatic, _ adlockreadonly if not .bof then m = .recordcount - 1 n = .fields.count - 1 .movefirst for r = 0 to m for c = 0 to n datas = datas & .fields(c) & strseparator next c .movenext next r end if end with ' --------------- ' end with: rst ' =============== exit_dbselect: on error resume next dbselect = left(datas, len(datas) - 1) & "" exit function err_dbselect: msgbox "select 文の実行時にエラーが発生しました。(dbselect)" & chr$(13) & chr$(13) & _ "・err.description=" & err.description & chr$(13) & _ "・sql text=" & strquerysql, _ vbexclamation, " 関数エラーメッセージ" resume exit_dbselect end function