Access VBA質問箱 IV

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

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


1279 / 2272 ツリー ←次へ | 前へ→

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

【7915】レコードの丸めてについて
質問  hyot  - 06/6/1(木) 15:11 -

引用なし
パスワード
   こんにちは
Access勉強中です。すごく難しい問題を抱えています。
いくら考えても、解決までに至らなくて、
投稿しました。
CodeとName同じのレコードのFild_1〜4の文字
(重複除外)を丸めるには、可能でしょうか?
ご伝授ください。
元テーブル: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    あ    い,いい,いいい う,うう  え,ええ

【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;

1279 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078227
(SS)C-BOARD v3.8 is Free