お世話になります。アクセスの超初心者です。
数値型であれば同じ列の合計できますが、テキスト型で以下のように
連結できる方法がございませんでしょうか?
<元テーブル>
レコード番号 列:キーワード(テキスト型) 列:抽出条件
1 "山,川" AAA
2 "海外,国内" AAA
3 "熊,馬" BBB
↓このテーブルを元にクエリをかける
<クエリ出力結果> 列:抽出条件にAAAを指定
列:キーワードの合計(連結)
"山,川、海外,国内"
^^
↑連結の境目には"、"などの区切りを入れたい。
宜しくお願い致します。
No.7ベストアンサー
- 回答日時:
クエリに 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
すごい!!
できましたーーー!
ありがとうございます!!
欲張りついでにもう一点、お伺いしたいのですが。
こちらはお時間ある時に可能であればご教示ください。
抽出条件を、特定のフォームのテキストボックスに入力した文字を参照させるように変更可能でしょうか?
だめもとで以下のように指定してみましたが、やっぱりできませんでした。。。根本的にSQLを勉強しないとだめですね・・・
SELECT TOP 1 DBSelect("SELECT キーワード FROM テーブル2 WHERE 抽出条件='[Forms]![抽出条件]![テキストボックス]'","、") AS 式1
FROM テーブル2;
No.8
- 回答日時:
SELECT TOP 1 DBSelect("SELECT キーワード FROM テーブル2 WHERE 抽出条件='" & Forms!抽出条件!条件文 & "'","、") AS 式1
FROM テーブル2;
ビルドを利用してフォームを参照するようにした場合に生成されたSQL文です。
結果は、同じです。
<バグのお知らせ>
Exit_DBSelect:
DBSelect = Left(Datas, Len(Datas) + (Len(Datas) > 0))
Exit Function
Exit_DBSelect:ブロックで Left関数のエラー対策にバグがありました。
上述の訂正で、 Forms!抽出条件!条件文="AAC" でもエラーが出なくなります。
No.5
- 回答日時:
失礼、後段が欠落していたようです。
Exit_DBSelect:
DBSelect = Datas & ""
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
丁寧なご回答ありがとうございます。
教えていただきました構文をモジュールに貼り付け
クエリで関数から指定してみました。
式1: DBSelect("SELECT キーワード FROM テーブル1 WHERE 抽出条件='AAA'","、")
実行結果は、エラーはでないのですが、全て空欄でした。
根本的に使い方を間違えているのでしょうか?
もう少しご教示いただけると幸いです。
宜しくお願い致します。
No.4
- 回答日時:
<テーブル2>
ID___キーワード___抽出条件
1____山,川___________AAA
2____海外,国内_____AAA
3____熊,馬___________BBB
[イミディエイト]
? DBSelect("SELECT キーワード FROM テーブル2 WHERE 抽出条件='AAA'", "、")
山,川、海外,国内、
このような結果を得たいということでしょうか?
No2さんのアドバイスに従って関数を作成してみました。
これを提示することが妥当かどうかは疑問の残るところです。
が、知らなければ、なかなかでしょう。
これを機会にさらに自分で勉強されるという前提で上述の DBSelect関数を紹介しておきます。
Public Function DBSelect(ByVal strQuerySQL As String, _
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
' ------------------------------------
' 列情報を For-Next で配列に代入する
' ------------------------------------
.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
No.3
- 回答日時:
レコード番号というフィールドがあるのですね
抽出条件(変なフィールド名ですね)ごとにレコード番号の順に連番を振るクエリを作ります
連番:DCount("*","元テーブル","レコード番号<=" & [レコード番号] & " and 抽出条件='" & [抽出条件] & "'")
このクエリをクロス集計クエリに変え、
抽出条件:行見出し
連番:列見出し
キーワード:値:先頭
これで
抽出条件 1 2
--------------------------
AAA "山,川" "海外,国内"
BBB "熊,馬"
のような結果が得られます
ひとつのフィールドにしたければこれからもう一段クエリを組んでください
ご親切にありがとうございます。
やってみてできました!クロス集計は苦手で今まであまり手を出さなかったので、こうやって使うのかぁーと感嘆してます。。
大変恐縮ですがもう少しご教示いただけますでしょうか。
>ひとつのフィールドにしたければこれからもう一段クエリを組んでください
同じデータを読み込む際はクエリに以下の式を入れてできました。
結合: [1] & "、" & [2] & "、" & [3]
処理を自動化したいと思います。
毎回、読み込むデータ量が異なる場合に"もう一段"のクエリで
指定する式に困りました。
クロス集計クエリの結果で、抽出条件の横軸が増えたり減ったりしますよね?
抽出条件 1 2
--------------------------
AAA "山,川" "海外,国内"
BBB "熊,馬"
↓
抽出条件 1 2 3 4 ←増えた
----------------------------------------------------
AAA "山,川" "海外,国内" "町,都市" "鳥,魚"
BBB "熊,馬"
このような場合はどうやってクエリに結合する式を書けばいいのか困りました。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Oracle 列1と列2の関係性で列3の条件に一致するレコードを抽出したい 1 2022/04/13 07:46
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Access:クエリーにて集計後に文字列結合したい。
その他(データベース)
-
複数のレコードを1つのレコードにまとめる方法
Access(アクセス)
-
アクセスで複数のレコード情報を1レコードにまとめる方法
Access(アクセス)
-
-
4
[Access]異なるレコード間の文字列連結
その他(データベース)
-
5
Accessでテキストが合体できる関数ないですか?
Access(アクセス)
-
6
ACCESSでひとつのフィールドに内容をまとめる
Access(アクセス)
-
7
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
8
Accessのフィールド結合について
Access(アクセス)
-
9
access 複数フィールドを1フィールドに
Access(アクセス)
-
10
Accessでグループ化した結果フィールドをつなげるには?
その他(Microsoft Office)
-
11
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
12
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
13
ACCESSでの文字と数字の結合について
Access(アクセス)
-
14
Access サブフォームでの選択行の取得
その他(データベース)
-
15
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
16
ACCESS 一つのフィールドに複数レコードの値をセットしたい
その他(データベース)
-
17
クエリについて教えてください
Access(アクセス)
-
18
ACCESSのクエリで抽出条件「または」は9個までしかかけませんよね…
Access(アクセス)
-
19
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
20
access・カウント結果がゼロでも、「0」を表示させるには?
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
AccessのWHERE句において、変数...
-
未審査請求包袋抽出表作成とは...
-
エクセルで色の付いたセルを抽...
-
【AccessVBA】レコードセットOp...
-
Excel 文字列から6桁の数値の抽出
-
コンボボックス全ての値を取得...
-
Access チェックボックスを利用...
-
COUNTIFのやり方を教えてくださ...
-
「パラメータが少なすぎます。3...
-
access クエリ yes/no型のクエ...
-
PDFファイルから特定の文字を検...
-
鶏のトサカからヒアルロン酸?
-
X-Ripperというフリーウェアに...
-
Accessの選択クエリの抽出条件...
-
アクセス 同じフィールド(テキ...
-
Photoshop CS2で抽出の際輪郭が...
-
サイホンの原理
-
エクセル VBA メール本文に指定...
-
Advanced filter を使って空欄...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
「パラメータが少なすぎます。3...
-
PDFファイルから特定の文字を検...
-
AccessのWHERE句において、変数...
-
エクセルで色の付いたセルを抽...
-
ACCESSのクエリー抽出条件にIIF...
-
【AccessVBA】レコードセットOp...
-
Excel 文字列から6桁の数値の抽出
-
PDFファイル/抽出許可され...
-
X-Ripperというフリーウェアに...
-
アクセス 同じフィールド(テキ...
-
未審査請求包袋抽出表作成とは...
-
access クエリ yes/no型のクエ...
-
ACCESS クエリ 条件以外のレ...
-
血から鉄って作れないですか?
-
エクセル関数で住所から丁目番...
-
Access チェックボックスを利用...
-
COUNTIFのやり方を教えてくださ...
-
エクセル VBA メール本文に指定...
-
Accessの選択クエリの抽出条件...
おすすめ情報