请教大家个问题 为什么我想用 clientdataset动态查询 通过 params.parambyname().value:= 传递参数怎么不行呢? 我是我客户端 DBGrid -> database-> clientdataset->soketcomnect
服务器端:datesetprovider->adoquery->adoconnection 我试这样写的:
DataModule2.ClientDataSet1.Close;
DataModule2.ClientDataSet1.CommandText:='select * from dbo.通讯录 where 单位=:pm';
DataModule2.ClientDataSet1.Params.ParamByName('pm').Value:='上海';
DataModule2.ClientDataSet1.Open;没有报错,dbgrid 也没数据,不知何原因?请高手给于解答…… 最好能给个demo ~~~
服务器端:datesetprovider->adoquery->adoconnection 我试这样写的:
DataModule2.ClientDataSet1.Close;
DataModule2.ClientDataSet1.CommandText:='select * from dbo.通讯录 where 单位=:pm';
DataModule2.ClientDataSet1.Params.ParamByName('pm').Value:='上海';
DataModule2.ClientDataSet1.Open;没有报错,dbgrid 也没数据,不知何原因?请高手给于解答…… 最好能给个demo ~~~
解决方案 »
- Delphi 连接SQL SERVER 2000数据库巨迷惑问题...
- 如何根据错误提示找到代码位置?
- 请问有什么比较方便的Grid控件,能支持打印的,还能修改单元格的颜色
- 在listbox中,当我选了一条记录后,记录的背景色 是深蓝色的,我如何把颜色变成红色?
- 怎样获取windows文件的图标?
- "Could not convert Variant of type(null) into type(String)"!!!!!!!!!!!!!
- 为什么不能结贴!!!!!!!!!!!!!!!!
- 高分求教:"变速齿轮"的原理?
- string-->word??????????
- 纯api读取注册表谁会?
- 帮帮忙啊,遇到兼容性问题windows7,delphi7程序调用 dll 不能正常运行
- 如何得到一个控件所在的窗体的名称?
DataModule2.ClientDataSet1.Params.AddParam(param)
参数前缀
DataModule2.ClientDataSet1.Params.ParamByName('@pm').Value:='上海';
传递参数为中文(上海),所以传递后会截取中文一部分,因而查询不到结果,现在问题又来了,如何让中文参数能顺利查询出结果呢? 高手指点,小弟感激不尽……
DataModule2.ClientDataSet1.Params.ParamByName('@pm').DataType := ftWideString;DataModule2.ClientDataSet1.Params.ParamByName('@pm').Value:='上海';
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString,
ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob,
ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd);
为什么啊?请高手解答&…… 在线等&
function VarDataSize(const Value: OleVariant): Integer;
begin
if VarIsNull(Value) then
Result := -1
else if VarIsArray(Value) then
Result := VarArrayHighBound(Value, 1) + 1
else if TVarData(Value).VType = varOleStr then
begin
//Result := Length(PWideString(@TVarData(Value).VOleStr)^);改为下面这句
Result:=Length(Value);
if Result = 0 then
Result := -1;
end
else
Result := SizeOf(OleVariant);
end; 可以把改过的文件手动加入到工程中,也可以复盖掉原来的文件,最好是把ADODB.DCU全部删除,再重编译改过后的ADODB.pas,要确保改过后ADODB.pas生效就行了 --------以上网络中搜索而来, 为什么还不行呢?