本当にシンプルなSQLでのテーブル追加コード
正直、
ココが号泣ポイント
本当にエラーの理由が分からずに3時間を費やしました!
数値型や文字列などの違いや、文字数の違いなどを疑って様々なデバッグをしました。
本当なら下記のコードでちゃんと動くはずでした。
Sub log_arrival() Dim cn As New ADODB.Connection Dim SQL As String Dim uname As String On Error GoTo ErrRtn uname = DLookup("user", "login", "ID = 1") SQL = "INSERT INTO dbo_log(log_user,what1,what2,what3,number) " SQL = SQL & "VALUES ('" & uname & "', '入庫登録修正','" & trans_edit_product_code & "' ,'" & trans_edit_reason & "','" & trans_edit_arrival & "') " Set cn = CurrentProject.Connection cn.BeginTrans DoCmd.RunSQL SQL cn.CommitTrans cn.Close: Set cn = Nothing ExitErrRtn: Exit Sub ErrRtn: MsgBox "ログ収集エラー: " & Err.description cn.RollbackTrans cn.Close: Set cn = Nothing End End Sub
様々なデバッグを繰り返した結果
3時間が経過した頃、以前にも不可解な事を解決できた「データベースの修復」を行いました。
結果無意味でした。
原因は違うようです。
そして、行きついた結果が、
ココに注意
フィールド名がダメ
って事でした。
確かに、
注意ポイント
特殊文字などを使ったらエラーがでる可能性は知っていましたが、普通に「number」ってフィールド名がダメだって知りませんでした。
あと、valueもダメでした。
これを教訓にフィールド名は、パソコン自体がめったに使わないような言葉にした方が良いってことを知りました。
そして、ちゃんと動いたコードは、numberを変えて、what4にしたら問題解決しました。
SQL = "INSERT INTO dbo_log(log_user,what1,what2,what3,what4) "
SQL = SQL & "VALUES ('" & uname & "', '入庫登録修正','" & trans_edit_product_code & "' ,'" & trans_edit_reason & "','" & trans_edit_arrival & "') "
こんなところに時間を費やすとはトホホ(´;ω;`)ウゥゥ