Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5303 / 9994 ←次へ | 前へ→

【7917】Re:レコードの丸めてについて
回答  小僧  - 06/6/2(金) 9:56 -

引用なし
パスワード
   ▼hyot さん:
おはようございます。

>Access勉強中です。

Accessの事だけでなく、RDB(リレーショナルデータベース)についても
知識を付けられたほうが良いかと思われます。

ご提示した内容は RDBを扱う上で必要となる
「テーブルの正規化」という概念に思い切り反しているモノです。

Accessにおいては正規化されていないテーブルでも
VBAを駆使してデータを操作する事は可能ですが、
フォームやクエリを作る上で都度面倒な処理を行う事になります。


>元テーブル:T1
>Code  Name  Fild_1  Fild_2  Fild_3  Fild_4
>A1   A    あ    い    う    え
>A1   A    あ    いい   うう   ええ
>A1   A    あ    いいい  うう   え
>
>結果クエリ:Q1
>Code  Name  Fild_1  Fild_2      Fild_3  Fild_4
>A1   A    あ    い,いい,いいい う,うう  え,ええ

上記の様な事をどうしても行いたいのでしたら
まず標準モジュールに下記コードを転記し、保存して下さい。

Function Chofuku(FName As String, strCode As String, _
         strName As String, strField As String)
        
'要参照 Microsoft DAO x.x Object Library
Dim strSQL As String
Dim RS As DAO.Recordset
Dim strF As String

  strSQL = "SELECT DISTINCT " & FName & " FROM T1 " _
      & "WHERE Code='" & strCode & "' AND Name ='" & strName & "'"
  
  
  Set RS = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
    Do Until RS.EOF
      strF = strF & "," & RS(FName)
      RS.MoveNext
    Loop
  RS.Close
  
  Chofuku = Mid(strF, 2)
End Function

上記コードが保存されましたら、
クエリのSQLビューに下記SQLを記述し実行されてみて下さい。

SELECT DISTINCT T1.Code, T1.Name,
Chofuku("Field_1",[Code],[Name],[Field_1]) AS F1,
Chofuku("Field_2",[Code],[Name],[Field_2]) AS F2,
Chofuku("Field_3",[Code],[Name],[Field_3]) AS F3,
Chofuku("Field_4",[Code],[Name],[Field_4]) AS F4
FROM T1;
226 hits

【7915】レコードの丸めてについて hyot 06/6/1(木) 15:11 質問
【7917】Re:レコードの丸めてについて 小僧 06/6/2(金) 9:56 回答

5303 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free