我有一個TQuery對象,指向一個dBase數據庫,我想知道如何去參數化我的插入語句。爲什麼使用整數字段的參數化查詢失敗?
以下INSERT查詢就會將正常工作與qry.ExecSQL:
qry.SQL.Text :=
'INSERT INTO KUNDE ' +
'(FNAVN, ENAVN, INSTNR) ' +
'VALUES ' +
'(:FirstName, :LastName, ' + IntToStr(InstructorNo) + ')';
qry.ParamByName('FirstName').AsString := FirstName;
qry.ParamByName('LastName').AsString := LastName;
但是,這完全參數化的版本失敗,BDE錯誤 '類型mismtach在表達':
我已嘗試InstructorNo的賦值的各種變體,如.Value而不是AsInteger,但它們都產生相同的錯誤。
「INSTNR」列定義爲數字,最大寬度= 4,小數= 0。我試圖分配的值爲999.
函數參數InstructorNo的類型爲Integer。
這是BDE中的某種已知錯誤嗎?
編輯:我已經想通部分這一個
我可以用.AsSmallInt代替.AsInteger克服一些字段的這個問題,但另一個數字字段沒有整型,SMALLINT或Word作品。唯一的方法是手動將值插入到SQL語句中。帶寬最大值爲6的dBase數字字段有什麼特別之處?
ANOTHER編輯:終於有
我不得不用.AsFloat獲取存儲的值。雖然對於CustomerID使用float類型字段有點奇怪。
小抱怨:dBase是一個特定的應用程序,不是數據庫的基因名稱。只是其中的一件事。 – 2010-07-21 15:30:25
不過,這是一個dBase製作的數據庫。如果我將其稱爲xBase或'DBF文件',將會更清晰:) – 2010-07-21 16:34:20
啊。哇,你好1995年。我感到你的痛苦。 =) – 2010-07-24 16:29:59