[[20140205171429]] 『エラー。更新可能なクエリである必要があります。』(のぶ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エラー。更新可能なクエリである必要があります。』(のぶ)

sql分を発行し、データがあったら、更新、なかったら追加をする処理をやっております。
そこで、エラー。更新可能なクエリである必要があります。というメッセージが登録または更新しようとした時にでます。 以下にソースをのせます。

    adoCon.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & Sheets("A").Range("A2") & ";" & _
                "ReadOnly=0"

    strSQL = ""
    strSQL = strSQL & " Select * "
    strSQL = strSQL & " From [A$] "
    strSQL = strSQL & " where b ='" & Stra & "'"
    strSQL = strSQL & "  and c =" & intb
    strSQL = strSQL & "  and d =" & intc
    strSQL = strSQL & "  and e =" & lngd

    Set adoRs = adoCon.Execute(strSQL)

    If Not adoRs.EOF Then
        strSQLNew = ""
        strSQLNew = strSQLNew & "UPDATE [A$] SET "
        strSQLNew = strSQLNew & "     A =" & lngInzz
        strSQLNew = strSQLNew & "     ,B =" & "9999/1/31"
        strSQLNew = strSQLNew & "     ,C ='" & StrInzzzzz & "'"
        strSQLNew = strSQLNew & "     ,D =" & intIna
        strSQLNew = strSQLNew & "     ,E =" & intInb
        strSQLNew = strSQLNew & "     ,F =" & intInc
        strSQLNew = strSQLNew & "     ,G =" & lngInd
        strSQLNew = strSQLNew & "     ,H =" & lngIne
        strSQLNew = strSQLNew & "     ,I =" & intInf
        strSQLNew = strSQLNew & " Where X ='" & StrIn & "'"

        adoCon.Execute strSQLNew

    Else

        '新規

        strSQLNew = ""
        strSQLNew = strSQLNew & "INSERT INTO [A$] ( "
	'insert分以下省略        

        adoCon.Execute strSQLNew

    End If

    Set adoRs = Nothing

    'データベースのクローズ
    adoCon.Close

< 使用 Excel:Excel2003、使用 OS:WindowsXP >


どの行でエラーになっているのだろう?
エラー停止した箇所のSQL文をイミディエイトウィンドウで確認すること。

例の場合、b〜d という項目名が、対象シートの1行目に存在しているか。
また、項目名に重複は無いか、等。

気になるのは、strSQLNewのB。日付型ならば #2014/01/31# のように記述。
(???) 2014/02/05(水) 17:50


insert文を実行する所でエラーが発生。
 ↓この行
 adoCon.Execute strSQLNew

Sql文をaccessで実行すると実行できる。(ExcelのテーブルをAccessにインポート。)
(のぶ) 2014/02/05(水) 19:44


実際のSQL文やDB扱いするシートを見ないことには原因解明できないわけですが、
あと気になる点は、strSQLNew では X を指定して UPDATE しているけれど、
strSQL には X を指定していないので、UPDATE対象レコードが存在していない、とか?
(INSERTならできるとか?)

しかし、それだとAccessのクエリなら動作するという点が納得できない。
あとはシート1行目の項目名として利用する文字列の前後に空白が入っている、とか?
(???) 2014/02/06(木) 08:57


返信ありがとうございます。

すべにopenしていたコネクションが読み込み専用になっていたため、再度openしても更新ができなかったのです。

チョンボです。お騒がせしました。
(のぶ) 2014/02/06(木) 12:43


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.