希望用DateTimePicker1.date赋值,但是不行,请问怎么改?
procedure TForm1.Button4Click(Sender: TObject);
begin
if SimpleDataSet1.fieldbyname('DateTimePicker1.date').AsString <>'' then
begin
Edit1.text:= SimpleDataSet1.fieldbyname('jlu').AsString;
Edit2.text:= SimpleDataSet1.fieldbyname('zhu').AsString;
end
else
begin
Edit1.Clear;
Edit2.Clear;
end;
end;

解决方案 »

  1.   

    if SimpleDataSet1.fieldbyname('DateTimePicker1.date').AsString <>'' then fieldbyname里面的值应该是字段名,你的字段名难道是'DateTimePicker1.date'?
      

  2.   

    1,你的fieldbyname('DateTimePicker1.date')有问题,[]里应该是字段。
    2,DATETIMEPICKER1里的数据可以先转换为string 变量。
    var
    date1:string;
    DATE1:=FORMATDATETIME('YYYYMMDD',DATETIMEPICKER1.Date)+FORMATDATETIME('HH24MMSS',DATETIMEPICKER2.Time);
      

  3.   

    改成下面这样还是不行:
    procedure TForm1.Button4Click(Sender: TObject);
    begin
     
      SimpleDataSet1.DataSet.CommandText:='select * from 表名 where shijian='''+QuotedStr(FormatDateTime('yyyyMMdd',DateTimePicker1.Date))+'''';
      simpleDataSet1.Open;
    if SimpleDataSet1.fieldbyname('shijian').AsString <>'' then
    begin
    RichEdit1.text:= SimpleDataSet1.fieldbyname('jlu').AsString;
    RichEdit2.text:= SimpleDataSet1.fieldbyname('zhui').AsString;
    end
    else
    begin
    Edit1.Clear;
    Edit2.Clear;
    end;
    end;
      

  4.   

    试试这样。。procedure TForm1.Button4Click(Sender: TObject); 
    var 
    data1:string;
    begin 
      DATE1:=FORMATDATETIME('YYYYMMDD',DATETIMEPICKER1.Date);
      SimpleDataSet1.DataSet.CommandText:='select TO_CHAR(shijian,''YYYYMMDD HH24:MI:SS'') AS shijian from 表名 where TO_CHAR(shijian,''YYYYMMDDHH24MISS'')='''+DATE1+''')
    ..
    ..
    ...
      

  5.   

    没有看懂楼主的意思
    procedure TForm1.btn1Click(Sender: TObject);
    begin
    ShowMessage(DateToStr(dtp1.Date));    //显示日期
    edt1.Text:=DateToStr(dtp1.Date);      //将日期转换为字符串赋值给编辑框
    end;
    希望以上代码能对你有所帮助
    不对之处望海涵
      

  6.   

    SimpleDataSet1.DataSet.CommandText := Format('select * from 表名 where shijian=''%s''',
            [FormatDateTime('yyyyMMdd', DateTimePicker1.Date)]);
      

  7.   


    SimpleDataSet1.DataSet.CommandText:='select * from 表名 where shijian='''+QuotedStr(FormatDateTime('yyyyMMdd',DateTimePicker1.Date))+''''; 
    这一句里前面已经加了一个引号,后面又用QuotedStr,就有两个引号了,多了一个引号,所以出错。
      

  8.   

    因为你没有描述清楚,所以可能有2种情况:1、SimpleDataSet1里面已经有数据了,并且可能有个和日期控件里日期一样的字段,这种情况就需要先判断这个字段是否存在,不存在肯定就会报错的,你的错误就在于把'DateTimePicker1.date'这个字符串当成了字段,而不是字符串里的日期作为字段,需要修改的代码如下:
        if not SimpleDataSet1.FindField(QuotedStr(DateToStr(DateTimePicker1.Date))).IsNull then
        begin
            if SimpleDataSet1.fieldbyname(QuotedStr(DateToStr(DateTimePicker1.Date))).AsString <>'' then
            begin
              Edit1.text:= SimpleDataSet1.fieldbyname('jlu').AsString;
              Edit2.text:= SimpleDataSet1.fieldbyname('zhu').AsString;
            end
        end;   //注意你数据库字段日期字段的保存格式,如果格式不对你的程序根本取不出数据的,当然即使取不出数据也不会报错;下面如果没有你要的格式,可以根据需要自己调整:
       //A、表中日期字段格式为:2009-08-08 10:10:10,则 FormatDateTime函数第一个参数格式为:'yyyy-mm-dd hh:mm:ss';
       //B、表中日期字段格式为:2009-08-08,则 FormatDateTime函数第一个参数格式为:'yyyy-mm-dd';
       //D、表中日期字段格式为:20090808 10:10:10,则 FormatDateTime函数第一个参数格式为:'yyyymmdd hh:mm:ss';
       //E、表中日期字段格式为:20090808,则 FormatDateTime函数第一个参数格式为:'yyyymmdd';
       //如果格式为:2009-8-8,直接使用上面代码里的方法即可;2、SimpleDataSet1中还是空的,还没有开始查询SQL,没有数据,代码如下:
      SimpleDataSet1.DataSet.CommandText := Format('select * from 表名 where 时间=''%s''', 
            [FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date)]);
       说明:FormatDateTime函数第一个参数的日期格式,需要和你数据库表里字段的格式保持一致。
             SQL里的 时间字段需要更改一下,更改为和DateTimePicker1.Date相关联的那个字段;
    我估计楼主应该是属于第一种情况,如果有问题,请继续发帖!~~
      

  9.   


    shijian(字段类型为日期型)是表的主键,记录中有shijian、jlu和zhu三个字段,用DateTimePicker1.Date选择的日期可能存在也可能不存在,先判断用DateTimePicker1.Date选择的日期是否存在,如果存在将jlu和zhu的内容显示在Edit控件上,如果记录不存在,则清空Edit控件。虽然我选择的日期是存在的,但是上面的代码不能显示jlu和zhu的内容,执行后清空Edit控件。 
      

  10.   

    在采用这段代码后,会出现异常提示:Access violation at address 004FA950 in module 'project1.exe'.Read of address 00000000.    if not SimpleDataSet1.FindField(QuotedStr(DateToStr(DateTimePicker1.Date))).IsNull then 
        begin 
            if SimpleDataSet1.fieldbyname(QuotedStr(DateToStr(DateTimePicker1.Date))).AsString <>'' then 
            begin 
              Edit1.text:= SimpleDataSet1.fieldbyname('jlu').AsString; 
                Edit2.text:= SimpleDataSet1.fieldbyname('zhu').AsString; 
            end 
        end; 在采用这段代码也不行。
      SimpleDataSet1.DataSet.CommandText := Format('select * from 表名 where 时间=''%s''', 
            [FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date)]); 数据库为firebird,表里字段的类型为Date,格式为2009-7-17,与yyyy-mm-dd不一致?怎么改?
      

  11.   

    去掉QuotedStr,如下:
    SimpleDataSet1.DataSet.CommandText:='select * from 表名 where shijian='''+FormatDateTime('yyyyMMdd',DateTimePicker1.Date)+'''';还是不行。
      

  12.   

    不是这种格式yyyyMMdd的,这种格式yyyy-mm-dd是下面这样的?
    2009-01-02
    本人数据库中日期的格式为:2009-1-2。
    清问如何处理?
      

  13.   


    formatdatetime('yyyy-M-d',datetimepicker1.Date)
      

  14.   

    改成下面这样还是不行:
       SimpleDataSet1.DataSet.CommandText:='select * from  表名 where shijian='''+FormatDateTime('yyyy-M-d',DateTimePicker1.Date)+'''';
      simpleDataSet1.Open;
    if SimpleDataSet1.fieldbyname('shijian').AsString <>'' then
      

  15.   

    修改后的代码就是这样:
    procedure TForm1.Button4Click(Sender: TObject); 
    begin   SimpleDataSet1.DataSet.CommandText:='select * from 表名 where shijian='''+FormatDateTime('yyyy-M-d',DateTimePicker1.Date))+''''; 
      simpleDataSet1.Open; 
    if SimpleDataSet1.fieldbyname('shijian').AsString <>'' then 
    begin 
    RichEdit1.text:= SimpleDataSet1.fieldbyname('jlu').AsString; 
    RichEdit2.text:= SimpleDataSet1.fieldbyname('zhui').AsString; 
    end 
    else 
    begin 
    Edit1.Clear; 
    Edit2.Clear; 
    end; 
    end;
      

  16.   

    我是菜鸟,我好象都是用下面的样子判断的:
    if SimpleDataSet1.fieldbyname('shijian').value <>null then
      

  17.   

    DateTimePicker1.date := SimpleDataSet1.FieldByName('时间字段').AsDateTime;
      

  18.   


    你了类型没?ADOCommand1.CommandType := cmdText;