读书人

三层结构中参数传递遭遇有关问题

发布时间: 2012-02-21 16:26:23 作者: rapoo

三层结构中参数传递遭遇问题
服务器端adoqueryd设定了参数billno,sql语句如下:

select * from t123 where fbillno=:billno

客户端通过用clientdataset连接,希望传递客户端参数给服务器端,并返回查询结果:
clientdataset1.close;
clientdataset1.fetchparams;
clientdataset1.params.paramsbyname( 'billno ').value:=edit1.text;
clientdataset1.open;

每当执行到clientdataset1.open时,程序报错:
.....EDBClient with message 'Invalid parameter. '...

请问如何解决该问题?原因?

[解决办法]
clientdataset1.params.paramsbyname( 'billno ').AsString:=edit1.text;
这样试过?
[解决办法]
服务端的 DataSetProvider1-> Options-> poAllowCommandText 属性设置为真没有
[解决办法]
你在 ClientDataSet1-> params 属性中有没有你设置的参数,如果没有就是你的参数设置有问题了
[解决办法]
clientdataset.CommandText := 'select * from t123 where fid=:id '

才行

[解决办法]
sorry!


AdoQury置 'select * from t123 where fid=:id '
后会自动设置参数id


Self.ClientDataSet1.Close;
Self.ClientDataSet1.FetchParams;
Self.ClientDataSet1.Params.ParamByName( 'id ').AsInteger := 1;
Self.ClientDataSet1.Open;
在我这里没问题。
[解决办法]
是的,当sql设置为 'select * from t123 where fid=:id '时

你打开Parameters可以看到参数已经存在


上面的做法我测试过,没问题
[解决办法]
value改成AsString试试
clientdataset1.params.paramsbyname( 'billno ').asstring:=edit1.text;

读书人网 >.NET

热点推荐