|
スレッド57227のところで教えて頂いたコードの一部を研究中です。
いろいろご指摘頂いた点、まだ対応できていないかもしれませんが、
ネットで調べてみても見つからず、前に進めません。
どなたかご教示お願いいたします。
Private Enum TargetTableName
店別来店数
店別製品別売上数
店別個人別売上数
End Enum
Private Type RecordData
日付 As Date
店名 As String
人数 As Long
製品名 As String
担当名 As String
台数 As Long
End Type
Private Sub InsertMain()
Dim Cn As ADODB.Connection
Dim cnString As String
Dim typData() As RecordData
Dim fNum As Long
Dim Ret As Boolean
Const csvpath As String = "E:\Data\Office\Access\TestData.csv"
Dim Title(2) As String
Dim TitleName As String
Dim TableName(2) As String
Dim InputTable As String
Dim i As long
Dim j As long
Title(0) = "1.店別来店数"
Title(1) = "2.店別製品別売上数"
Title(2) = "3.店別個人別売上数"
TableName(0) = 店別来店数
TableName(1) = 店別製品別売上数
TableName(2) = 店別個人別売上数
TitleName = Title(0)
InputTable = TableName(0)
i = 0
On Error GoTo ErrTrap
Set Cn = New ADODB.Connection
cnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\hogehogeDirctory\Test.mdb;"
Cn.ConnectionString = cnString
Cn.Open
Dim objsheet As Worksheet
Set objsheet = Worksheets("sheet1")
objsheet.Range("A1").Select
ReDim typData(6 To objsheet.Cells(Rows.Count, 1).End(xlUp).Row)
For j = 6 To objsheet.Cells(Rows.Count, 1).End(xlUp).Row
If objsheet.Cells(j, 1).Value = Title(i) Then
TitleName = Title(i)
InputTable = TableName(i) 3.
i = i + 1
j = j + 1
End If
typData(j).日付 = Cells(2, 1)
typData(j).店名 = Cells(j, 1)
typData(j).人数 = Cells(j, 2)
Ret = InSertData(TargetTableName.店別来店数, typData, Cn)2.
Next j
Cn.Close
Set Cn = Nothing
Exit Sub
ErrTrap:
MsgBox "Err No: " & Err.Number & vbTab & Err.Description
End Sub
Private Function InSertData(ptbl As TargetTableName, pRec() As RecordData, pCn As ADODB.Connection) As Boolean
Dim sSQL As String
Dim Cmd As ADODB.Command
sSQL = "INSERT INTO "
'SQL生成
Select Case ptbl
Case TargetTableName.店別来店数
'個別のSQL生成 1.
sSQL = sSQL & ptbl & "(日付,店名,人数)" & _
" VALUES(#" & pRecpRec(j).日付 & "#,'" &
pRecpRec(j).店名 & "'," &
pRecpRec(j).人数 & ")"
Case TargetTableName.店別個人別売上数
Case TargetTableName.店別製品別売上数
End Select
' Commandオブジェクト生成
'command実行
End Function
1.sSQL = sSQL & ptbl & "(日付,店名,人数)" & _
" VALUES(#" & pRec(j).日付 & "#,'" & pRec(j).店名 & "'," & pRec(j).人数 & ")"
のところで「インデックスが有効範囲にありません」というエラーがでます。
どこを直したらよいでしょうか?
2.Ret = InSertData(TargetTableName.店別来店数, typData, Cn)
後、上記のコードのところで、Enumの値を動的に変える方法はありますでしょうか?
3.InputTable = TableName(i)で、テーブル名をデータの内容ごとに変えるようにしてありますが、Enumで列挙されているテーブル名をまた配列で列挙しているのもムダな気がします。Enumの上手な使い方をどなたかご教示お願いいたします。
|
|