在三层结构中,如何动态执行SQL语句(20分)

  • 主题发起人 主题发起人 zy155
  • 开始时间 开始时间
Z

zy155

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道在两层结构中是:
qytemp.Close;
qytemp.SQL.Clear;
qytemp.SQL.Add();
qytemp.open;
那么在三层结构中该怎么写呢???
是不是用
DM.ClientDataSet1.Close;
DM.ClientDataSet1.CommandText:='select max(cast(Rtrim(substring(采购单号,4,13)) as int)) maxcode From 采购定单主表';
DM.ClientDataSet1.open;
 
那怎么会报错说:“该语句无效呢”
 
你把datasetprovider中的属性option设为poAllowCommandText。
 
对!就这么写,又返回结果的用DM.ClientDataSet1.open;
没有的用DM.ClientDataSet1.execute;
不过你要参数是动态的话,where 中参数的格式要注意,一般用":pramas",DM.ClientDataSet1.params.paramsbyname('params').value:=yourvalue;
比较清晰.当然,你也可以直接用SQL,注意用'''+yourvalue+'''
 
我也是那么做的但是还是报错:‘对象名select max(cast(Rtrim(substring(采购单号,4,13)) as int)) maxcode From 采购定单主表’无效。
 
我也检查过着条SQL语句在两层结构中是对的。
 
请各位大侠,帮忙啊————————!!!!
 
请把sql语句大写!
三层中的sql 一定要大写,两层中无所谓!----这个我也曾经很困惑!
 
to vmao 应该不是哦,我随便怎么写(不分大小写)都是对的!!
 
'select max(cast(Rtrim(substring(采购单号,4,13)) as int)) as maxcode From 采购定单主表'
 
在三层中必须将DspServer(TDataSetProvider)的属性poAllowCommandText设置为True;
才能够通过TClientDataset下达标准的Sql语句.即相应的Dsp组件要连接上呢(TQuery,TDataaset);
 

Similar threads

后退
顶部