A 回答 (16件中11~16件)
- 最新から表示
- 回答順に表示
No.11
- 回答日時:
担当者 種別
佐藤 りんご 2
鈴木 りんご 1
田中 りんご 1
佐藤 みかん 1
田中 みかん 2
佐藤 ぶどう 1
鈴木 ぶどう 1
佐藤 バナナ 1
鈴木 バナナ 1
…
といった感じにできれば。
の、.... 以下がどのようになっているのかが
問題なのですが・・・・。
質問のデータでは「鈴木」には「ぶどう」は無かったような・・・。
(1)
ともあれ、以下では
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim j As Long
Dim k As Long
Set db = CurrentDb
Set rs1 = db.OpenRecordset("テーブルA")
Set rs2 = db.OpenRecordset("テーブルB", dbOpenDynaset)
For k = 1 To rs1.Fields.Count - 1
rs1.MoveFirst
Do Until rs1.EOF
If Not IsNull(rs1.Fields(k)) Then
rs2.AddNew
rs2!担当者 = rs1!名前
rs2!種別 = rs1.Fields(k).Name
rs2!数量 = rs1.Fields(k).Value
rs2.Update
End If
rs1.MoveNext
Loop
Next k
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
データは、
ID 担当者 種別 数量
1 佐藤 りんご 2
2 鈴木 りんご 1
3 田中 りんご 1
4 佐藤 みかん 1
5 田中 みかん 2
6 佐藤 ぶどう 1
7 佐藤 バナナ 1
8 鈴木 バナナ 1
9 佐藤 いちご 1
10 鈴木 いちご 1
11 田中 いちご 1
のように、単純に「テーブルA」の先頭レコードから
データを取り出し、「テーブルB」に格納します。
なお、「テーブルA」でデータがNullのものも表示するならば、
rs2!数量 = rs1.Fields(k).Value
を、
rs2!数量 = Nz(rs1.Fields(k).Value)
Nullを0とするならば、
rs2!数量 = Nz(rs1.Fields(k).Value, 0)
とします。
(2)
以下では、
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim i As Long
Dim iMax As Long
Dim j As Long
Dim k As Long
Set db = CurrentDb
Set rs1 = db.OpenRecordset("テーブルA")
Set rs2 = db.OpenRecordset("テーブルB", dbOpenDynaset)
iMax = 1
rs1.MoveFirst
Do Until rs1.EOF
For i = 1 To rs1.Fields.Count - 1
If Not IsNull(rs1.Fields(i)) Then
If rs1.Fields(i).Value > iMax Then
iMax = rs1.Fields(i).Value
End If
End If
Next i
rs1.MoveNext
Loop
For j = 1 To iMax
For k = 1 To rs1.Fields.Count - 1
rs1.MoveFirst
Do Until rs1.EOF
If Not IsNull(rs1.Fields(k)) Then
If rs1.Fields(k).Value >= j Then
rs2.AddNew
rs2!担当者 = rs1!名前
rs2!種別 = rs1.Fields(k).Name
rs2!数量 = rs1.Fields(k).Value
rs2.Update
End If
End If
rs1.MoveNext
Loop
Next k
Next j
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
取り出したデータは、
ID 担当者 種別 数量
1 佐藤 りんご 2
2 鈴木 りんご 1
3 田中 りんご 1
4 佐藤 みかん 1
5 田中 みかん 2
6 佐藤 ぶどう 1
7 佐藤 バナナ 1
8 鈴木 バナナ 1
9 佐藤 いちご 1
10 鈴木 いちご 1
11 田中 いちご 1
12 佐藤 りんご 2
13 田中 みかん 2
のように、「テーブルB」に格納されます。
Nullのデータの処理については(1)と同じです。
(1)と(2)のどちらのデータの並びが必要なのかを
もう少し・・・。
以上です。たぶん動くと思いますが。
No.12
- 回答日時:
失礼しました。
訂正です。No11の(2)の終わりに、
Nullのデータの処理については(1)と同じです。
としていますが、処理には多少コードを
変更しなければならないので、必要ならば
提示しますが。
何度も申し訳ありません。
元々のデータが
佐藤…りんご2、みかん1、ぶどう1、バナナ1、いちご1
鈴木…りんご1、バナナ1、いちご1
田中…りんご1、みかん2、いちご1
となっているテーブルを
ID 担当者 種別 数量
1 佐藤 りんご 2
2 鈴木 りんご 1
3 田中 りんご 1
4 佐藤 みかん 1
5 田中 みかん 2
6 佐藤 ぶどう 1
7 佐藤 バナナ 1
8 鈴木 バナナ 1
9 佐藤 いちご 1
10 鈴木 いちご 1
11 田中 いちご 1
のようにできればOKなので、(1)のほうでしょうか。
No.13
- 回答日時:
>のようにできればOKなので、(1)のほうでしょうか。
はい。(1)です。できましたか?
No.14
- 回答日時:
>数量がゼロのところを表示しないようにはできないでしょうか?
(1)
それでは、Nullの場合も0の場合もはじく、ということならば、
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim j As Long
Dim k As Long
Set db = CurrentDb
Set rs1 = db.OpenRecordset("テーブルA")
Set rs2 = db.OpenRecordset("テーブルB", dbOpenDynaset)
For k = 1 To rs1.Fields.Count - 1
rs1.MoveFirst
Do Until rs1.EOF
If Not IsNull(rs1.Fields(k)) Then
If Not rs1.Fields(k).Value = 0 Then
rs2.AddNew
rs2!担当者 = rs1!名前
rs2!種別 = rs1.Fields(k).Name
rs2!数量 = rs1.Fields(k).Value
rs2.Update
End If
End If
rs1.MoveNext
Loop
Next k
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
(2)
テーブルのデータにはNullがないので、0の場合を
はじく、というのであれば、
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim j As Long
Dim k As Long
Set db = CurrentDb
Set rs1 = db.OpenRecordset("テーブルA")
Set rs2 = db.OpenRecordset("テーブルB", dbOpenDynaset)
For k = 1 To rs1.Fields.Count - 1
rs1.MoveFirst
Do Until rs1.EOF
If Not rs1.Fields(k).Value = 0 Then
rs2.AddNew
rs2!担当者 = rs1!名前
rs2!種別 = rs1.Fields(k).Name
rs2!数量 = rs1.Fields(k).Value
rs2.Update
End If
rs1.MoveNext
Loop
Next k
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
要するに、
If Not IsNull(rs1.Fields(k)) Then
If Not rs1.Fields(k).Value = 0 Then
の条件式を両方入れるか一方にするかの違いです。
No.15
- 回答日時:
【続】DXSelect()
DXSelect()の戻り値は添付図のようです。この戻り値をSplit関数で配列 strRecord()に格納。その後、For-Next でテーブルに挿入。
strSQL = "INSERT INTO テーブル3 (ID, 担当者, 種別, 数量) VALUES (XXXXX)"
N=UBound(strRecord)
For I = 0 To N
DoCmd.RunSQL Replace(strRecord(I), XXXXX, strRecord(I))
Next I
DBSelect関数では敢えて数量0を除外していません。もし、仮にそういう希望であれば、最後に
DoCmd.RunSQL "DELETE FROM ・・・・"
の1行を。
Public Function DXSelect(ByVal strQuerySQL As String, _
Optional strPause As String = ";") As String
On Error GoTo Err_DXSelect
Dim isTopField As Boolean
Dim I As Integer
Dim J As Integer
Dim N As Integer
Dim rst As ADODB.Recordset
Dim fld As ADODB.Field
Dim strTanto As String
Dim strList As String
Dim strNewList As String
Set rst = New ADODB.Recordset
With rst
.Open strQuerySQL, _
CurrentProject.Connection, _
adOpenStatic, _
adLockReadOnly
If Not .BOF Then
J = 0
N = .RecordCount - 1
.MoveFirst
For I = 0 To N
isTopField = True
For Each fld In .Fields
If isTopField Then
strTanto = "'" & fld.Value & "'"
isTopField = False
Else
strList = strList & J & "," & _
strTanto & "," & _
"'" & fld.Name & "'" & "," & _
fld.Value & Chr(13)
End If
J = J + 1
Next fld
.MoveNext
Next I
Else
strList = ""
End If
End With
Exit_DXSelect:
On Error Resume Next
rst.Close
Set rst = Nothing
DXSelect = IIf(Len(strList) > 0, Replace(strList & "[END]", Chr(13) & "[END]", ""), "")
Exit Function
Err_DXSelect:
MsgBox "SELECT 文の実行時にエラーが発生しました。(DXSelect)" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & Err.Description & Chr$(13) & _
"・SQL Text=" & strQuerySQL, _
vbExclamation, " 関数エラーメッセージ"
Resume Exit_DXSelect
End Function
No.16
- 回答日時:
× DoCmd.RunSQL Replace(strRecord(I), XXXXX, strRecord(I))
〇 DoCmd.RunSQL Replace(strSQL, ”XXXXX”, strRecord(I))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) 日本語について 3 2022/04/07 22:50
- PHP MySql PHP 2つのテーブルをJOINで結合 user_idで抽出 1 2023/01/03 14:04
- Android(アンドロイド) アンドロイドのスマホ2台の連絡先のクラウドへの同期について 5 2023/08/20 09:34
- Access(アクセス) アクセスで教えてください。 例えばテーブル1に 1 佐藤 2 鈴木 3 佐々木 コードと住所一覧があ 3 2022/06/11 20:45
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- 野球 世界一ですか 4 2022/11/11 06:17
- Excel(エクセル) ランダムに並んだ人の名前から、全種類の人を抜き出す関数 7 2022/07/08 08:06
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- 野球 世界一ですか 2 2022/11/11 06:15
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ACCESSで縦に並んだテーブルデータを横に並べることは出来ますか?
Access(アクセス)
-
アクセスで教えてください。 縦持ちデータを横持ちデータに変更したいです。 項目数が多くてクロス集計で
Access(アクセス)
-
【アクセス】クエリで、行と列を入れ替えるには?【access】
Access(アクセス)
-
-
4
アクセス 項目毎にデータを横に並べる方法
Access(アクセス)
-
5
ACCESSのテーブルの行と列を入れ替えたい
Excel(エクセル)
-
6
縦持ちのデータを横持ちにする方法
Excel(エクセル)
-
7
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
8
Accessの桁区切りについて教えてください。
Access(アクセス)
-
9
ACCESS側からEXCELの書式を設定するには?
Visual Basic(VBA)
-
10
クロス集計クエリの結果をテーブルにしたい
Access(アクセス)
-
11
「#エラー」の回避
Access(アクセス)
-
12
アクセスで同じ種類のものを横に並べたい
Access(アクセス)
-
13
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
14
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
15
Access で 特定の文字の個数をしりたい
Access(アクセス)
-
16
アクセス テーブル 列を行にしたいのですが・・・・
Access(アクセス)
-
17
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
18
アクセス2016 チェックボックス☑表記が-1,0表記になってしまったので直す方法
Access(アクセス)
-
19
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
20
Accessのスプレッドシートエクスポートで、シートが追加されてしまう
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS DCOUNTの抽出条件について
-
エクセルで、日付を入力すると...
-
「ご処理進めて頂きますようお...
-
インタラクティブの反対語は?
-
ImageMagickでgif画像の一部が...
-
UWSC 画像判定と条件分岐について
-
お家デートをしててハグを長い...
-
UWSCを使った画像認証マク...
-
リョウ・・・量?料?
-
VBA エンターキーでイベントに...
-
UWSCでIEが開いているか判定す...
-
uwcs のマクロで画像認識をして...
-
NoxPlayerとUWSCのadbの座標に...
-
switch の範囲指定
-
こんなことてしますか??
-
Excelシート上のマクロを登録し...
-
IQテストの数列
-
UWSCの色判定
-
Pythonでgif画像が上手く作れない
-
ビープ音を連続して鳴らす
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
【access】複数のフィールドの...
-
ACCESS VBAでテーブル内の特定...
-
Access vbaで重複レコードの削...
-
ACCESS DCOUNTの抽出条件について
-
Accessで縦と横を入れ替えたい
-
VBAでテーブル名とカラム名を動...
-
DataGridViewで複数条件の抽出...
-
Access から Excelのシートをイ...
-
重複した複数のレコードを1レ...
-
DAOでSQLServerに接続し、LeftJ...
-
SQLServer→Access インポート
-
ACCESSで実行時エラー3008
-
sql文で削除クエリを書く
-
別のaccessファイルからデータ...
-
access追加クエリーでform入力...
-
抽出条件でデータ型が一致しま...
-
【PHP/MySQL】コード上で生成...
-
Accessリンクするテーブルが見...
-
ACCESSで購入回数を表示する方...
おすすめ情報