VBでエクセルのセルを指定してテキストをDBにInsert Updateするものをつくっています。
下記の処理でどうしても失敗してしまいます;SQL文が間違っているのでしょうか?
strSQL2 = strSQL2 & " INSERT INTO "
strSQL2 = strSQL2 & " JIKO"
strSQL2 = strSQL2 & " ( ID "
strSQL2 = strSQL2 & " ,NENDO"
strSQL2 = strSQL2 & " ,TUKI"
strSQL2 = strSQL2 & " ,SOUHYOU"
strSQL2 = strSQL2 & " ,KAIZEN"
strSQL2 = strSQL2 & " ,YOUBOU"
strSQL2 = strSQL2 & " ,SIKAKU)"
strSQL2 = strSQL2 & " VALUES "
strSQL2 = strSQL2 & " ( " & lngID
strSQL2 = strSQL2 & " ," & Trim$(txtYear.Text)
strSQL2 = strSQL2 & " ," & Trim$(txtMonth.Text)
strSQL2 = strSQL2 & " ," & CStr(objWrkSht.Cells(31, 2).Value)
strSQL2 = strSQL2 & " ," & CStr(objWrkSht.Cells(31, 9).Value)
strSQL2 = strSQL2 & " ," & CStr(objWrkSht.Cells(38, 2).Value)
strSQL2 = strSQL2 & " ," & CStr(objWrkSht.Cells(38, 9).Value)
strSQL2 = strSQL2 & " ) "
'###勤怠Tbl更新処理
If Not F_UpdHyouka2_bln(strSQL2) Then
MsgBox "勤怠テーブルの登録に失敗しました。"
Exit For
End If
Public Function F_UpdHyouka2_bln(pstrSQL2 As String) As Boolean
On Error GoTo ERR_F_UpdHyouka2_bln
F_UpdHyouka2_bln = False
cnL.Execute pstrSQL2
F_UpdHyouka2_bln = True
Exit Function
ERR_F_UpdHyouka2_bln:
DBのテーブルの型はテキスト型です。
> strSQL2 = strSQL2 & " INSERT INTO "
一行目がこうなってますが、この時点でstrSQL2に何か入ってたら
SQLはめちゃくちゃになってしまいますよ。
strSQL2 = "INSERT INTO "
と、したほうが良いかも。
あと、フィールドがテキスト型の場合は
strSQL2 = strSQL2 & " ,'" & Trim$(txtYear.Text) & "'"
のようにクォーテーションで囲む必要があります。
エラーメッセージとかないの?
> If Not F_UpdHyouka2_bln(strSQL2) Then
ここにブレークポイントをおいてstrSQL2の中を調べてみて
説明不足で申し訳ないです・・
If Not F_UpdHyouka2_bln(strSQL2) Then
の処理で、値がFalseになるため、下記のメッセージが出ます。
MsgBox "勤怠テーブルの登録に失敗しました。"
VBから出るエラーメッセージは特にありません。
ちなみにstrSQL2の中身は・・
?strSQL2
INSERT INTO JIKO ( ID ,NENDO ,TUKI ,SOUHYOU ,KAIZEN ,YOUBOU ,SIKAKU) VALUES ( 906 ,2005 ,2 ,総評コメント ,改善コメント ,要望コメント ,資格コメント )
です。F_UpdHyouka2_blnの値をTrueにするにはSQL文をどうしたら良いのでしょうか?
>VBから出るエラーメッセージは特にありません。
あの。。自分が作ったコードも理解できないんでしょうか?
>Public Function F_UpdHyouka2_bln(pstrSQL2 As String) As Boolean
>On Error GoTo ERR_F_UpdHyouka2_bln
ここでエラートラップしてるからじゃないんですか?
Errオブジェクトにエラーコードとエラーメッセージが入っているはずですよ。
まあ、そんなことしなくても上のクエリーをみれば
>あと、フィールドがテキスト型の場合は
>strSQL2 = strSQL2 & " ,'" & Trim$(txtYear.Text) & "'"
>のようにクォーテーションで囲む必要があります。
が正しいんでしょうね。
ツイート | ![]() |