SQLでテキストを取り込む


NineBall  2005-03-08 20:32:00  No: 120095

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のテーブルの型はテキスト型です。


LESIA  2005-03-08 20:50:15  No: 120096

> strSQL2 = strSQL2 & " INSERT INTO "
一行目がこうなってますが、この時点でstrSQL2に何か入ってたら
SQLはめちゃくちゃになってしまいますよ。
strSQL2 = "INSERT INTO "
と、したほうが良いかも。

あと、フィールドがテキスト型の場合は
strSQL2 = strSQL2 & "    ,'" & Trim$(txtYear.Text) & "'"
のようにクォーテーションで囲む必要があります。


aa  2005-03-08 21:19:46  No: 120097

エラーメッセージとかないの?


aa  2005-03-08 21:21:16  No: 120098

> If Not F_UpdHyouka2_bln(strSQL2) Then
ここにブレークポイントをおいてstrSQL2の中を調べてみて


NineBall  2005-03-08 21:42:48  No: 120099

説明不足で申し訳ないです・・
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文をどうしたら良いのでしょうか?


aa  2005-03-08 21:47:29  No: 120100

>VBから出るエラーメッセージは特にありません。
あの。。自分が作ったコードも理解できないんでしょうか?
>Public Function F_UpdHyouka2_bln(pstrSQL2 As String) As Boolean 
>On Error GoTo ERR_F_UpdHyouka2_bln
ここでエラートラップしてるからじゃないんですか?
Errオブジェクトにエラーコードとエラーメッセージが入っているはずですよ。
まあ、そんなことしなくても上のクエリーをみれば
>あと、フィールドがテキスト型の場合は
>strSQL2 = strSQL2 & "    ,'" & Trim$(txtYear.Text) & "'"
>のようにクォーテーションで囲む必要があります。
が正しいんでしょうね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加