|
小僧さん、教えていただいてありがとうございます。
>下テーブルのフィールド数に変更がないのであれば
>ワーク用のテーブルとして使うのもありだと思われますが、
>上テーブルの結果によって可変するものであると
>下テーブルに伴うクエリ・フォーム・レポート・モジュールと
>大幅な変更が必要となってしまいます。
下テーブルのフィールド数に変更はありません。品目は7個までに限定できます。
ワーク用のテーブルとして使う形にしたいです。
>そのワークテーブルを何に使うのかによっては
>もうちょっと良い方法があるかもしれません。
ワークテーブルは契約者をキーに担当者テーブルと関連付けます。
>「rs2」に対して「FindFirst」メソッドを使い、
>結果が「Nomatch」プロパティの値が「True」でしたら「AddNew」で
>「False」でしたら「Edit」で開いて「Update」すれば良いと思われます。
下記のようにしてみましたが、
rs2.FindFirst "取引先名編集=" & cr
のところで「コンパイルエラー メソッドまたはデータメンバが見つかりません」とでます。
どのようにしたらよいでしょうか?
Public Function 横並び()
Dim cn As ADODB.Connection
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim cr As String
Application.Echo False
DoCmd.Hourglass True
Set cn = Application.CurrentProject.Connection
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
rs1.Open "list", cn, adOpenStatic, adLockReadOnly
rs2.Open "listyoko", cn, adOpenKeyset, adLockOptimistic
Rst.MoveFirst
keiyakusha = ""
j = 1
Do Until rs1.EOF
If IsNull(rs1.Fields("区分").Value) = True Then
rs1.MoveNext
Else
Set cr = rs1.Fields("契約者")
rs2.FindFirst "契約者=" & cr
If rs2.NoMatch = True Then
j = 1
rs2.AddNew
rs2.Fields("契約者") = rs1.Fields("契約者")
For i = 1 To 3
rs2.Fields(j) = rs1.Fields(i)
j = j + 1
Next i
rs2.Update
ElseIf rs2.NoMatch = False Then
j = 4
rs2.Edit
For i = 1 To 3
rs2.Fields(j) = rs1.Fields(i)
j = j + 1
Next i
j = j + 1
rs2.Update
keiyakusha = rs1.Fields("契約者").Value
End If
End If
rs1.MoveNext
Loop
rs1.Close
rs2.Close
cn.Close
End Function
|
|