[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラー。更新可能なクエリである必要があります。』(のぶ)
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 >
例の場合、b〜d という項目名が、対象シートの1行目に存在しているか。
また、項目名に重複は無いか、等。
気になるのは、strSQLNewのB。日付型ならば #2014/01/31# のように記述。
(???) 2014/02/05(水) 17:50
adoCon.Execute strSQLNew
Sql文をaccessで実行すると実行できる。(ExcelのテーブルをAccessにインポート。)
(のぶ) 2014/02/05(水) 19:44
しかし、それだと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.