
No.4ベストアンサー
- 回答日時:
データベース関数などと命名した標準モジュールに以下の関数をコピペして保存して下さい。
次に、イミディエイトウインドウでテストして頂ければ幸いです。
[イミディエイト]
? DBSelect("SELECT F2 FROM A WHERE F1=1111")
1;4
? DBSelect("SELECT F2 FROM A WHERE F1=1111", " And ")
1 And 4 And
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:
DBSelect = Left(Datas, Len(Datas) + (Len(Datas) > 0))
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
No.3
- 回答日時:
No1 さんの回答を具体化すれば・・・。
<A>
ID___F1_____F2
1____1111__1
2____1112__2
3____1113__3
4____1111__4
<クエリ2>
F1_______F2_New
1111____1,4
1112____2
1113____3
このクエリを SQLビューで見れば、割と簡単なものです。
SELECT A.F1, DBSELECT("SELECT F2 FROM A WHERE F1=" & F1, ",") AS F2_New
FROM A
GROUP BY A.F1;
まあ、課題は、DBSelect関数を用意できるか否かです。
<続く>
No.2
- 回答日時:
VBA ( DAO 使用 ) で作ってみました。
( このプログラムのまま使用するのであれば参照設定で Microsoft DAO X.X Object Library を設定してください。)Aテーブル→Table1
別テーブル→Table2
としました。
また、Table2 は空であることが前提です。
Private Sub コマンド0_Click()
Dim rsCode As Recordset
Dim strWhere As String
Dim rsNo As Recordset
Dim rsDst As Recordset
Dim strNos As String
Set rsCode = CurrentDb.OpenRecordset("SELECT DISTINCT Table1.コード FROM Table1", dbOpenForwardOnly)
Set rsDst = CurrentDb.OpenRecordset("SELECT * FROM Table2", dbOpenDynaset)
Do Until rsCode.EOF
strWhere = "WHERE Table1.コード=""" & rsCode.Fields("コード").Value & """"
Set rsNo = CurrentDb.OpenRecordset("SELECT Table1.No FROM Table1 " & strWhere, dbOpenForwardOnly)
strNos = ""
Do Until rsNo.EOF
If strNos <> "" Then
strNos = strNos & ","
End If
strNos = strNos & rsNo.Fields("No").Value
rsNo.MoveNext
Loop
Set rsNo = Nothing
With rsDst
.AddNew
.Fields("コード") = rsCode.Fields("コード").Value
.Fields("NO").Value = strNos
.Update
End With
rsCode.MoveNext
Loop
Set rsCode = Nothing
End Sub
No.1
- 回答日時:
こんばんは!
ご質問を読んで、
横もちに替えるためにクロス集計して、
カンマで結合させるユーザー定義関数を作って文字連結させる方法
があるかなぁって思いました。
カンマつきではありませんが、
文字連結部分のSQLのご参考になれば。。。
SELECT T.コード, [1] & [2] & [3] & [4] AS 番号 FROM [ TRANSFORM Min(番号) SELECT コード FROM Aテーブル GROUP BY コード PIVOT 番号 In(1,2,3,4);]. as T
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
アクセスで複数のレコード情報を1レコードにまとめる方法
Access(アクセス)
-
ACCESSでひとつのフィールドに内容をまとめる
Access(アクセス)
-
Access:クエリーにて集計後に文字列結合したい。
その他(データベース)
-
-
4
アクセスで複数レコードを1レコードにできますか?
その他(ソフトウェア)
-
5
複数のレコードを1つのレコードにまとめる方法
Access(アクセス)
-
6
access 複数フィールドを1フィールドに
Access(アクセス)
-
7
アクセスのクエリでSplit関数は使えないのですか
Access(アクセス)
-
8
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
9
アクセス 同じフィールド(テキスト型)のレコードを連結させたい
Access(アクセス)
-
10
Accessフィールド分割
その他(データベース)
-
11
Accessのクエリで2つのフィールドが同条件の場合に結合したい
その他(Microsoft Office)
-
12
Access フォーム上でのテキストボックスとテーブルの連結
Access(アクセス)
-
13
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
14
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
15
アクセス2003 複数の列に分かれたデータを1列にまとめたい
Access(アクセス)
-
16
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
17
ACCESSのテーブル複数行を1行にしてエクスポートは?
Access(アクセス)
-
18
Access 1レコードずつcsvで出力したい
その他(データベース)
-
19
アクセス 項目毎にデータを横に並べる方法
Access(アクセス)
-
20
Access クエリで連結する文字の間に空白を入力
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
請求と入金のテーブルの作成の...
-
ACCESS2000のテーブル構造
-
accessで移動平均する方法
-
2つのテーブルから条件に一致...
-
主キーの変更
-
続.ORACLEのSELECTのソートに...
-
ACCESS2007 フォーム 「バリア...
-
SQLで○○の値以外を持っているレ...
-
SELECT文でのデッドロックに対...
-
accessのロック
-
エクスポート時の改行コードに...
-
SQLServerで同一条件レコードの...
-
ACCESSのSQLで、NULLかNULLでな...
-
Accessの重複クエリで最小以外...
-
Accessにインポートしたら並び...
-
DataTableから条件を満たした行...
-
列名XXXXが無効です
-
sqlserverで集計結果をUPDATEし...
-
更新ロックとデッドロック
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
accessで移動平均する方法
-
請求と入金のテーブルの作成の...
-
ACCESS2000のテーブル構造
-
重複するキーから一番古い年月...
-
2つのテーブルから条件に一致...
-
Accessユニオンクエリーで2つ...
-
主キーの変更
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
続.ORACLEのSELECTのソートに...
-
Accessでフィールドを比較した...
-
行方向のデータを横に並べる
-
update文で質問です。 下記の条...
-
ACCESS2000です。
-
VIEWでテーブルの集計結果...
-
場合によって条件を変えるSQL
-
商品コード番号を入力すると商...
-
ACCESSのコンパイルエラーについて
-
Sheet1$が存在致しませんとエラー
おすすめ情報