ADOQueryzy_xy_hj是ADOQuery控件,字符串:select * from zy_xy_hj
1、初始化代码:
procedure Tfrm_zybryp_hj.FormActivate(Sender: TObject);
begin
//按最大处方号打开划价表
ADOQueryzy_xy_hj.close;
ADOQueryzy_xy_hj.sql.Clear;
ADOQueryzy_xy_hj.sql.add('select * from zy_xy_hj');
ADOQueryzy_xy_hj.sql.add('where xzflag not like '''+g_ypstyle+'%''');
ADOQueryzy_xy_hj.sql.add(' and depa='''+depa_flag+'''');
ADOQueryzy_xy_hj.sql.add(' and fycode=:a1');
ADOQueryzy_xy_hj.sql.add('order by fydate');
ADOQueryzy_xy_hj.Parameters.ParamValues['a1']:=editfycode.Text;
ADOQueryzy_xy_hj.open;
end;2、保存数据代码如下:
if application.MessageBox('真的要将费用帐进行确认存储吗?','系统操作提示:', mb_okcancel+mb_iconquestion)=1 then
begin
//数据插入到住院病人药品划价表zy_xy_hj
ADOQueryzy_xy_hj.open;
ADOQueryzy_xy_hj.append;
ADOQueryzy_xy_hj.edit;
ADOQueryzy_xy_hj.fieldbyname('code').asstring:=zycode; //住院号
ADOQueryzy_xy_hj.FieldByName('fycode').asstring:=editfycode.text; //处方号
ADOQueryzy_xy_hj.fieldbyname('fydoctor').asstring:=edt_doctor.text;//开单医生
............................
ADOQueryzy_xy_hj.post;
ADOQueryzy_xy_hj.UpdateBatch;
label17.caption:='药品种数:'+inttostr(ADOQueryzy_xy_hj.RecordCount);
end;
运行保存时出错:
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
跟踪了一下:
发现问题出在 ADOQueryzy_xy_hj.append;这句,怎么回事?谢谢!!
1、初始化代码:
procedure Tfrm_zybryp_hj.FormActivate(Sender: TObject);
begin
//按最大处方号打开划价表
ADOQueryzy_xy_hj.close;
ADOQueryzy_xy_hj.sql.Clear;
ADOQueryzy_xy_hj.sql.add('select * from zy_xy_hj');
ADOQueryzy_xy_hj.sql.add('where xzflag not like '''+g_ypstyle+'%''');
ADOQueryzy_xy_hj.sql.add(' and depa='''+depa_flag+'''');
ADOQueryzy_xy_hj.sql.add(' and fycode=:a1');
ADOQueryzy_xy_hj.sql.add('order by fydate');
ADOQueryzy_xy_hj.Parameters.ParamValues['a1']:=editfycode.Text;
ADOQueryzy_xy_hj.open;
end;2、保存数据代码如下:
if application.MessageBox('真的要将费用帐进行确认存储吗?','系统操作提示:', mb_okcancel+mb_iconquestion)=1 then
begin
//数据插入到住院病人药品划价表zy_xy_hj
ADOQueryzy_xy_hj.open;
ADOQueryzy_xy_hj.append;
ADOQueryzy_xy_hj.edit;
ADOQueryzy_xy_hj.fieldbyname('code').asstring:=zycode; //住院号
ADOQueryzy_xy_hj.FieldByName('fycode').asstring:=editfycode.text; //处方号
ADOQueryzy_xy_hj.fieldbyname('fydoctor').asstring:=edt_doctor.text;//开单医生
............................
ADOQueryzy_xy_hj.post;
ADOQueryzy_xy_hj.UpdateBatch;
label17.caption:='药品种数:'+inttostr(ADOQueryzy_xy_hj.RecordCount);
end;
运行保存时出错:
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
跟踪了一下:
发现问题出在 ADOQueryzy_xy_hj.append;这句,怎么回事?谢谢!!
begin
//按最大处方号打开划价表
ADOQueryzy_xy_hj.close;
ADOQueryzy_xy_hj.sql.Clear;
ADOQueryzy_xy_hj.sql.add('select * from zy_xy_hj');
ADOQueryzy_xy_hj.sql.add('where xzflag not like '''+g_ypstyle+'%''');
ADOQueryzy_xy_hj.sql.add(' and depa='''+depa_flag+'''');
ADOQueryzy_xy_hj.sql.add(' and fycode=:a1');
ADOQueryzy_xy_hj.sql.add('order by fydate');
ADOQueryzy_xy_hj.Parameters.ParamValues['a1']:=editfycode.Text;
ADOQueryzy_xy_hj.open;
end;
ADOQueryzy_xy_hj.sql.add('where xzflag not like '''+g_ypstyle+'%''');
在这句的where前面加个空格
不然的你的sql语句是错误的
就是这样
ADOQueryzy_xy_hj.sql.add(' where xzflag not like '''+g_ypstyle+'%''');开来你delphi还不是很习惯,光标高亮显示在append那行上并不表示是那一行出错
一般都是表示上一句出错
高亮显示的行是正准备执行的语句,但是还未执行
前面也要加空格
begin
//数据插入到住院病人药品划价表zy_xy_hj
ADOQueryzy_xy_hj.open; //如果数据集已经打开了,这句又open就会出错。
ADOQueryzy_xy_hj.append;
ADOQueryzy_xy_hj.edit; //有append就不需要edit。
ADOQueryzy_xy_hj.fieldbyname('code').asstring:=zycode; //住院号
ADOQueryzy_xy_hj.FieldByName('fycode').asstring:=editfycode.text; //处方号
ADOQueryzy_xy_hj.fieldbyname('fydoctor').asstring:=edt_doctor.text;//开单医生
............................
ADOQueryzy_xy_hj.post;
ADOQueryzy_xy_hj.UpdateBatch; //有post就不需要UpdateBatch。
label17.caption:='药品种数:'+inttostr(ADOQueryzy_xy_hj.RecordCount);
end;