我在應用中將ODBC和access已經配置好,在事件中用SQLCA.AutoCommit = true,sqlca.sqlcode=0,然后執行ssql = "SELECT Count (*) into :Qty FROM MSysObjects WHERE MSysObjects.Name like :strname;",EXECUTE IMMEDIATE:ssql using sqlca;,sqlca.sqlcode=-1,出錯資訊,說是在MSysObjects上沒有讀取權限,這是為什么?急!!
uj5u.com熱心網友回復:
ssql = "SELECT Count (*) into :Qty FROM MSysObjects WHERE MSysObjects.Name like :strname;",EXECUTE IMMEDIATE:ssql using sqlca;
sql陳述句變數賦值那里寫的有問題吧。自己可以除錯看下賦值是否正常。
uj5u.com熱心網友回復:
我以前寫過,如果有into的話,整句放在字串中是不合適的,另外"...Name like :strname;"也是不對的(怎么給strname賦值?).EXECUTE IMMEDIATE:ssql using sqlca;
messagebox('',ssql)--這樣的sql在access中 可以執行嗎?
辦法:
直接寫SELECT Count (*) into :Qty FROM MSysObjects WHERE MSysObjects.Name like :strname using sqlca;
有不對之處歡迎指正.
uj5u.com熱心網友回復:
LZ 還需要搞清楚嵌入式SQL 和動態SQL 的用法區別。。。uj5u.com熱心網友回復:
嵌入式sql才支持直接取值到變數,類似于:select 欄位 into 變數 from 表 where 條件 using sqlca;
這個要用動態sql語法了,給個示例你
long rn
string ls_sql
//組織sql語法
ls_sql = "select count(自動編號) from 中心資料 where 理賠狀態='初檢' and (isnull(單位,'') not in ('內','墊')) and (1=1)"
//執行sql語法
prepare sqlsa from :ls_sql;
describe sqlsa into sqlda;
declare myprc dynamic procedure for sqlsa;
execute dynamic myprc using descriptor sqlda;
fetch myprc using descriptor sqlda;
close myprc;
//取出結果
rn = getdynamicnumber(sqlda,1)
if isnull(rn) then rn=0
return rn
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/81543.html
標籤:數據庫相關
下一篇:pb做的系統升級
