请大家帮我看看这段代码(80分)

  • 主题发起人 主题发起人 孤雪
  • 开始时间 开始时间

孤雪

Unregistered / Unconfirmed
GUEST, unregistred user!
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 查询一天单个产品产量z(模具代号,模具名称,月份,日期,产量) select 模具代号,模具名称,月份,日期, sum(实际产量) as 产量 from 注塑随工单 where 日期=StrToDate('''+Edit1.Text+''')');
query1.SQL.Add('group by 模具代号,模具名称,月份,日期');
query1.ExecSQL;


报错:提示strtodate这个函数没有定义,
请问如何解决
 
where 日期='+StrToDate(Trim(Edit1.text))
 
把Edit1.text单独提出来,作为一个参数。
可以搞定。
 
把'strtodate'變為'to_date'就可以,另外,add部分最好單獨寫一個const字符比較規範.
 
如果是ACCESS数据库: where 日期= #2003-09-18#
where 日期=StrToDate('''+Edit1.Text+''')');
应为:
where 日期=#'+StrToDate(trim(Edit1.Text))+'#');
 
请看:http://www.delphibbs.com/delphibbs/dispq.asp?lid=2072998
 
我都试了还是不行呀,
 
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 查询一天单个产品产量z(模具代号,模具名称,月份,日期,产量) select 模具代号,模具名称,月份,日期, sum(实际产量) as 产量 from 注塑随工单 where 日期='+''''+StrToDate(Edit1.Text)+'''';
query1.SQL.Add('group by 模具代号,模具名称,月份,日期');
query1.ExecSQL;

 
楼上朋友,还是通不过呀
 
query1.Close ;
query1.sql.Clear;
query1.SQL.text:='insert into 查询一天单个产品产量z(模具代号,模具名称,月份,日期,产量) select 模具代号,模具名称,月份,日期, sum(实际产量) as 产量 from 注塑随工单 where 日期='+'''+FormatDateTime('yyyy-mm-dd',StrToDate(Edit1.Text))+'''+
' group by 模具代号,模具名称,月份,日期';
query1.ExecSQL;
 
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 查询一天单个产品产量z(模具代号,模具名称,月份,日期,产量) select 模具代号,模具名称,月份,日期, sum(实际产量) as 产量 from 注塑随工单 where 日期=:a group by 模具代号,模具名称,月份,日期');
query1.ParamByName('a').AsString:=Edit1.Text;
query1.ExecSQL;
 
上面的两位都可以,不访楼主试试?

就是个字符串,为何要转换成date,不懂!
 
不转换会提示类型不对
楼上两位我试试,谢谢大家
 
如果用的是SQL Server可以用
where 日期=GetDate()
如果用的是Access可以用
where 日期=Date()
 
我用xujunjie解决了,谢谢大家帮我
我派分
 
楼上两位的应该都可以了
其实楼主的问题是对一些基础的东西不了解
1、SQL语句对我们的程序来说其实就是一些拼凑的字符串,有数据库来执行这些字符串并返回值。按照你的写法,StrToDate在你拼凑的SQL语句里,所以将会被数据库服务器所执行,如果你使用的数据库没有这个函数,自然会报你所说的错误。
2、日期类型在数据库中其实就是固定格式的字符串,你没见在SqlServer里边字符串和日期类型都是用单引号括起来的吗?所以怎么写是次要的,对于时间日期类型的数据只要转化成相应格式的字符串传递过去就OK了
 
对于日期字段字段
access表示为[#1981-28-12#]//[]里面的
SQLSERVER2000表示为[''1981-02-12'']
首先要知道您的数据库类型且edit1有这样的格式edit1:='1981-02-12';
access表示:adoquery.sql.text:='select * from table1 where 日期=#'+trim(Edit1.Text)+'#');
SQLSERVER2000表示:adoquery.sql.text:='select * from table1 where 日期='+QuotedStr(trim(Edit1.Text));

xmlhy:您的这下面句对吗?
where 日期=#'+StrToDate(trim(Edit1.Text))+'#');
 
谢谢大家,我会努力的,呵
怎么我不能给大家派分呀
没有给大家送分的地方,晕哟
 
嘿嘿,来晚了,没有派上分~
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部