ClientDataSet 如何識別 '' 字符串 ( 积分: 200 )

D

dylb

Unregistered / Unconfirmed
GUEST, unregistred user!
ClientDataSet.Params.ParamByName('Name').Value:=''
上面的語句在執行 Execute 時中間服務器總是報告 傳入的類型錯誤,需要 CONVERT 函數轉換才行。
最后發現是中間服務器層將 '' 自動識別為 NULL 了,造成上述錯誤。
但是用 ADOQuery 卻可以正常傳遞 '' 空字符串。
這個問題困擾了好幾天了,請各位兄弟姐妹幫忙。
 
ClientDataSet.Params.ParamByName('Name').Value:=QuotedStr('')
看这样行吗?
 
我有好幾萬行的代碼要轉換呢,我希望可用將 Adoquery 的格式直接轉到 ClientDataSet 下使用,
如果這種問題解決的話,我就只需要將 aodquery 替換為 ClientDataSet 就行了啊
 
ClientDataSet.Params.ParamByName('Name').Value:='''';
这样呢
 
試試。。。。
 
ClientDataSet.Params.ParamByName('Name').Value:=varAsType('',varString);
 
謝謝上面各位提供的方案,但是,我已經有好幾萬行代碼了,
我已經將ClientDataSet模擬成TADOQuery的賦值格式,包括SQL語句了什么的,
原則是這些語句都不用更改,只需要更改一下 ClientDataSet 或者中間服務層,讓系統
在碰到 ClientDataSet.Params.ParamByName('Name').Value:='' 不出錯,并可以將空字符串寫入數據庫就行。
謝謝各位了!!!
 
那你不如直接改数据库 允许这个Name字段为空
如果你不想再数据库里面存放NULL值 那你就再该字段允许为空的情况下加个默认值 ''
 
ClientDataSet.Params.ParamByName('Name').Value:='''';
ClientDataSet.Params.ParamByName('Name').Value:=QuotedStr('')
这两种都可以的
 
if ClientDataSet.Params.ParamByName('Name').Value = null then
else
if ClientDataSet.Params.ParamByName('Name').Value<>null then

ClientDataSet.Params.ParamByName('Name').Value:='' ;
 
顶部