sqlstr := 'select a.finputdoctorname,c.fypbh,c.fmc,c.fgg,d.fcj,d.fypjxmc,sum(c.fsl) '+
'from zy.tzydoctororder a '+
'left join zy.tzynurseorder b '+
'on a.forderid = b.fadviceid '+
'left join ypgl.tzyfymx c '+
'on b.fid=c.fyzid '+
'left join hisbase.tdrugcode d '+
'on c.fypbh=d.fmcode '+
'where c.ffyrq >= to_date(:a1,‘yyyy-mm-dd’) ' +
'and c.ffyrq<= to_date(:a2,‘yyyy-mm-dd’) '+
'and c.fypbh in(:a3) '+
'group by a.finputdoctorname,c.fypbh,c.fmc,c.fgg,d.fcj,d.fypjxmc';
ADOQuery1.sql.Add(sqlstr); DateTimePicker1.Date:=now;
DateTimePicker2.Date:=now;
ADOQuery1.Parameters.ParamByName('a1').Value := FormatdateTime('yyyy-mm-dd',DateTimePicker1.Date);
ADOQuery1.Parameters.ParamByName('a2').Value := FormatdateTime('yyyy-mm-dd',DateTimePicker2.Date);
ADOQuery1.Parameters.ParamByName('a3').Value := edit1.Text; ADOQuery1.Open;
请问这段oracle的sql语句怎么拼接,新手一只,调试了3天没有搞好。主要还是日期这个地方很要命!
'from zy.tzydoctororder a '+
'left join zy.tzynurseorder b '+
'on a.forderid = b.fadviceid '+
'left join ypgl.tzyfymx c '+
'on b.fid=c.fyzid '+
'left join hisbase.tdrugcode d '+
'on c.fypbh=d.fmcode '+
'where c.ffyrq >= to_date(:a1,‘yyyy-mm-dd’) ' +
'and c.ffyrq<= to_date(:a2,‘yyyy-mm-dd’) '+
'and c.fypbh in(:a3) '+
'group by a.finputdoctorname,c.fypbh,c.fmc,c.fgg,d.fcj,d.fypjxmc';
ADOQuery1.sql.Add(sqlstr); DateTimePicker1.Date:=now;
DateTimePicker2.Date:=now;
ADOQuery1.Parameters.ParamByName('a1').Value := FormatdateTime('yyyy-mm-dd',DateTimePicker1.Date);
ADOQuery1.Parameters.ParamByName('a2').Value := FormatdateTime('yyyy-mm-dd',DateTimePicker2.Date);
ADOQuery1.Parameters.ParamByName('a3').Value := edit1.Text; ADOQuery1.Open;
请问这段oracle的sql语句怎么拼接,新手一只,调试了3天没有搞好。主要还是日期这个地方很要命!
解决方案 »
- delphi如何向Access写入布尔值和时间值
- 你知道 SysShadow 嗎? 請賜教!
- 如何改变BUTTON控件的颜色
- 急!!!对acsess写数据时遇到的问题.
- ADOTable组件POST后如果能立刻写入数据库文件??
- 数据如何进行初始化清空?
- 为什么从记事本复制到IDE时,记事本中的汉字到了IDE里都变成了问号?我的电脑出了什么问题。
- help me 如何用sql语句表里增加一个字段。或如何在delphi中实现
- 急寻有“Delphamp”或MP3播放器开发经验的人才
- 宝兰公司把delphi卖了以后,delphi还是活不下去。不过
- 找人做关于连接外网数据库的二次开发
- delphi中如何调用函数过程
试试这个,字符串里面的单引号要写成两个。
试试这个,字符串里面的单引号要写成两个。
调试一下,将SQL语句复制出来,在TOAD或其他程序中运行看看。
另外,确认一下是否如1楼说的,单引号是要英文的,不能是中文的。
sqlstr := 'select * from ( '+
'select a.finputdoctorname,c.fypbh,c.fmc,c.fgg,d.fcj,d.fypjxmc,sum(c.fsl) total ' +
'from zy.tzydoctororder a ' +
'left join zy.tzynurseorder b ' +
'on a.forderid = b.fadviceid ' +
'left join ypgl.tzyfymx c ' +
'on b.fid=c.fyzid ' +
'left join hisbase.tdrugcode d ' +
'on c.fypbh=d.fmcode ' +
'where c.ffyrq>=to_date(:a1,'+quotedstr('yyyy-mm-dd')+') ' +
'and c.ffyrq<=to_date(:a2,'+quotedstr('yyyy-mm-dd')+') ' +
'and c.fypbh in(:a3) ' +
'union all ' +
'select a.finputdoctorname,c.fypbh,c.fmc,c.fgg,d.fcj,d.fypjxmc,sum(c.fsl) total ' +
'from zy.tcydoctororder a ' +
'left join zy.tcynurseorder b ' +
'on a.forderid = b.fadviceid ' +
'left join ypgl.tzyfymx c ' +
'on b.fid=c.fyzid ' +
'left join hisbase.tdrugcode d ' +
'on c.fypbh=d.fmcode ' +
' where c.ffyrq>=to_date(:a1,'+quotedstr('yyyy-mm-dd')+') ' +
'and c.ffyrq<=to_date(:a2,'+quotedstr('yyyy-mm-dd')+') ' +
'and c.fypbh in(:a3) ' +
'union all ' +
'select p.fname,e.fypbh,e.fmc,e.fgg,g.fcj,g.fypjxmc,sum(e.fsl) total from ypgl.tmzfymx e left join hisbase.tdrugcode g ' +
'on e.fypbh=g.fmcode ' +
'left join hisbase.tperson p ' +
'on e.fysh=p.ftybh ' +
'where e.ffyrq>=to_date(:a1,'+quotedstr('yyyy-mm-dd')+') ' +
' and e.ffyrq<=to_date(:a2,'+quotedstr('yyyy-mm-dd')+') ' +
' and e.fypbh in(:a3) ' +
') aa '+
'order by aa.fypbh,aa.total desc ';ADOQuery1.sql.Add(sqlstr);
ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text,true);
ADOQuery1.Parameters.ParamByName('a3').Value := edit1.Text;
ADOQuery1.Parameters.ParamByName('a1').Value := FormatdateTime('yyyy-mm-dd',DateTimePicker1.Date);
ADOQuery1.Parameters.ParamByName('a2').Value := FormatdateTime('yyyy-mm-dd',DateTimePicker2.Date); ADOQuery1.ParamCheck := False; ADOQuery1.Open;上面的问题解决了,但是这个用了union all后就报参数未正确定义