プロが教えるわが家の防犯対策術!

辞めた人のプログラムを書き換えています。
初心者なもので、あまりコードを理解しておりませんが、
一応できるところまで直してみました。

CSVファイルをアクセスにインポート、その後項目(FileName)を追加し、CSVのファイル名を追加した項目にいれたいです。

下記構文で、インポートまではできましたが
最後の方の dbs.Execute sql
でエラーになります。
ここをクリアするにはどこを修正すればよろしいでしょうか?
アクセスは2003です。


Private Sub Cmd_01_Click()
Dim ercd As Integer
Dim dbs As adodb.Connection
Dim LsName As String
Dim TName As String
Dim Name1 As String
Dim teigi As String


Set dbs = CurrentProject.Connection
If Nz(Me.txt_01) = "" Then
MsgBox "インポートするファイル名を入力して下さい", vbOKOnly, "エラー"
Me.txt_01.SetFocus
Exit Sub
End If
'ファイル名の取得
strError = 0
LsName = "\\St1\第2業務部\$運用\1010030 アールジービー\業務\RGB一時作業ファイル\なるには不備チェック\TESTkanno\"
TName = Me.txt_01
LsName = LsName & TName & ".csv"
'インポートの確認
ret = MsgBox(TName & "をインポートしますか?", vbYesNo + vbQuestion, "インポート確認")

If ret = vbNo Then
Exit Sub
End If
Debug.Print LsName
'レコードの追加
teigi = "RGB定義"
DoCmd.TransferText acImportDelim, teigi, TName, LsName, False, ""

ret = MsgBox(TName & "をマスターに追加しますか?", vbYesNo + vbQuestion, "インポート確認")

If ret = vbNo Then
Exit Sub
End If

Call FileTuika




End Sub

Sub FileTuika()
Dim sql As String
Dim aa As Long


sql = "INSERT INTO T_Mas (処理状況,請求日,学校識別コード,学校名,学校分類名,メールアドレス,名前,ふりがな,性別,生年月日,職業,高校所在地,高校名,学年,郵便番号,都道府県,区市町村&町域,番地以下,電話番号,FileName,区分,不備,不備理由,yu,gid,保留,処理済,件数報告日,納品日 )" & _
" SELECT [" & T_Mas & "].[処理状況], [" & T_Mas & "].[請求日]," & _
" [" & T_Mas & "].[学校識別コード], [" & T_Mas & "].[学校名], [" & T_Mas & "].[学校分類名], [" & T_Mas & "].[メールアドレス]," & _
" [" & T_Mas & "].[名前], [" & T_Mas & "].[ふりがな], [" & T_Mas & "].[性別], [" & T_Mas & "].[生年月日]," & _
" [" & T_Mas & "].[職業], [" & T_Mas & "].[高校所在地], [" & T_Mas & "].[高校名], [" & T_Mas & "].[学年]," & _
" [" & T_Mas & "].[郵便番号], [" & T_Mas & "].[都道府県], [" & T_Mas & "].[区市町村&町域], [" & T_Mas & "].[番地以下]," & _
" [" & T_Mas & "].[電話番号], '" & LsName & "'," & FileName & " From" & "LsName"


Debug.Print sql
dbs.Execute sql



dbs.Close

Set dbs = CurrentDb()
With dbs
For Each tdfa In .TableDefs
If tdfa.Name = TName Then
dbs.TableDefs.Delete tdfa.Name
End If
Next tdfa

End With
dbs.Close

End Sub

A 回答 (3件)

ぱっと見。


ヒントはスコープの問題かな。
(変数を参照できる範囲をスコープと呼びます。)
ローカル変数はプロシジャー内のみ有効。

'Call FileTuika
'End Sub
'Sub FileTuika()

コメントにすれば動くかな?

dbs.Execute sqlが越えても、次のステップでエラーになりそう。
それと Option Explicit をつけておいた方が良いよ。
    • good
    • 0

エラーの内容を書かれないと分かりにくいと思いますが・・・


見たところ、インサートで記述している項目の
>区分,不備,不備理由,yu,gid,保留,処理済,件数報告日,納品日
が入れ込むデータ側(SELECT)の記述にありませんよね?
項目の数が違うのでエラーになっている気がします。
    • good
    • 0

LsName がテーブル名を入れた変数なんだったら、


" [" & T_Mas & "].[電話番号], '" & LsName & "'," & FileName & " From " & LsName
とすべきだと思うが、、、
(Fromのあとにスペースが必要)
イミディエィト・ウィンドウに表示させているSQLを再度ご確認ください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す