[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラー。更新可能なクエリである必要があります。』(のぶ)
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.