關於的MIDAS的問題(50分)

  • 主题发起人 主题发起人 yby
  • 开始时间 开始时间
Y

yby

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一台機器上做的項目
在應用服務器放上一個 query,一個DataSetProvider1,在query中的SQL為空.
在客戶端放上一個 一ClientDataSet個,
undm.ClientDataSet4.close;
undm.ClientDataSet4.CommandText:='select * from jlysd where djhm=:djhm';
undm.ClientDataSet4.Params.ParamByName('djhm').value:=trim(edit3.text);
undm.ClientDataSet4.Open;
錯誤提示:ClientDataSet4:paramater 'djhm' not found
這是為什麼,謝謝
 
1、把djhm改个名字,不要跟字段重名
2、ParamByName('xxxx').AsString := Trim(Edit3.Text);
请指定类型,要记住pascal是强类型语言
3、如果后台是oracle,试试改为'where DJHM=...'--即改为大写
 
to szf
我後台SQL SERVER7.0
我剛剛改了還是出現同樣的錯誤提示
 
用动态SQL写:
var strBaseSql,strSql,strTemp:string;
begin
strBaseSql:='select instNo,styleNo,deptNo,subjects,toUsers,ccUsers,'+
'fromUsers,dateChkConfm,chkConfm,dateSecConfm,secConfm,dateDivConfm,'+
'divConfm,dateMgrConfm,mgrConfm,dateChargeConfm,chargeConfm,'+
'createdBy from TqcCustErr where status<>''D''';
strSql:='';
//增加查询条件 //指令号
if trim(edtInstNo.Text)<>'' then
strSql:=strSql + ' and instNo='+QuotedStr(edtInstNo.Text);
//型体号
if trim(edtStyleNo.Text)<>'' then
strSql:=strSql + ' and styleNo='+QuotedStr(edtStyleNo.Text);
//部门
if trim(edtDeptNo.Text)<>'' then
strSql:=strSql + ' and deptNo='+QuotedStr(edtDeptNo.Text);
//主旨
if trim(edtSubject.Text)<>'' then
begin
strTemp:='%'+edtSubject.Text+'%';
strSql:=strSql + ' and subjects like '+QuotedStr(strTemp);
end;

{ if strSql='' then
begin
Showmessage(btbQuery.Hint);
Exit;
end;
}
DMQC.cdsCustErr.Close;
DMQC.cdsCustErr.CommandText:=strBaseSql+strSql;
DMQC.cdsCustErr.Open;
 
装一下Delphi6的Update2
按szf的写法
另外注意,将服务器端AdoQuery的Lock Type 设为ltReadOnly
 
试试commandtext:=format('select * from table where xx=%s',[varstring]);
 
yby,试过我的方法了吗?
 
楼主有没有试过你这句SQL在SQL-Server的ISQL能否执行啊?
 
参数的类型指定了吗?
 
昨天我专门试了一下三层传参数的问题。你要在中间层产生一个参数,然后把参数取到
ClientDataSet中,并给参数定义类型。这样就可以调用了。。。
 
下面是我的代码:
procedure TDMSC.cdsGiveParamAfterOpen(DataSet: TDataSet);
begin
if DataSet.RecordCount=0 then
Exit;
cdsTest.Close;
cdsTest.Params.ParamByName('userNo').asstring:=DataSet['userNo'];
cdsTest.Open;
end;
 
yby,我试了可以呀。
with cdsBooksdo
begin
cdsBooks.Close;
cdsBooks.CommandText :='Select * from books where bkid=:bkid';
cdsBooks.Params.ParamByName('bkid').AsString := edit1.text;
cdsBooks.Open;
end;
 
你要在你的undm.ClientDataSet4控件的Paras属性里事先加入名称为 djhm 的参数,
然后再执行你的代码即可。
undm.ClientDataSet4.close;
undm.ClientDataSet4.CommandText:='select * from jlysd where djhm=:djhm';
undm.ClientDataSet4.Params.ParamByName('djhm').value:=trim(edit3.text);
undm.ClientDataSet4.Open;
也就是说你动态赋给ClientDataSet4.CommandText的SQL语名中的参数djhm必须要在
ClientDataSet4的Paras中能找到。
 
后退
顶部