with ADOQuery1 do
  begin
    i:=0;
    close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from Table1');
    ADOQuery1.Open;    
    ADOQuery1.First;
 
    while(not eof) do
    begin  
  
      Application.ProcessMessages;
      with ADOQuery2 do
       begin
       close;
       ADOQuery2.SQL.Clear;
       SQLstr:='insert into Table2(A1,CSRQ)  values(';
       SQLstr:=SQLstr+'''';
       SQLstr:=SQLstr+ADOQuery1.FieldByName('B1').AsString;
       SQLstr:=SQLstr+'''';
       SQLstr:=SQLstr+',';
       SQLstr:=SQLstr+'''';
       SQLstr:=SQLstr+ADOQuery1.FieldByName('B2').AsString;
       SQLstr:=SQLstr+'''';
       SQLstr:=SQLstr+')';
       //showmessage(SQLstr);
       ADOQuery2.SQL.Add(SQLstr);
       ADOQuery2.ExecSQL;
       end;    ADOQuery1.Next; 
这段代码的作用是取出表Table1中的B1,B2字段并且插入表Table2中。现在问题在于B2为datetime型,而CSRQ为varchar型。例如:B2: 2002-8-12
      想实现写入Table2中的CSRQ的值为 20020812请各位大虾指点迷津,完善一下程序。

解决方案 »

  1.   

    用formatdatetime函数
    或format函数, delphi帮助中都有示例
      

  2.   

    看是什麼數據庫一般加個 #20020812# 
    或者 %20020812%
    就變成 datetime類型的
      

  3.   

    formatdatetime('yyyymmdd', date);
      

  4.   

    如果你是sql server 数据库
    你可以在查询语句就实现这个.如下:
    convert(varchar(8),datetimefield,112)
      

  5.   

    ADOQuery1.SQL.Add('select *,convert(varchar(8),B2,112) as str_B2
     from Table1');
      

  6.   

    formatdatetime('yyyymmdd', date);
    这个就很好:)
      

  7.   

    SQLstr:=SQLstr+datetostr(shortdateformat(ADOQuery1.FieldByName('B2').AsString));
    试一下,初学者同学习。
      

  8.   

    SQLstr:=SQLstr+ADOQuery1.FieldByName('B2').AsString;
    你的字段不是datetime吗,这是怎么取的呢,?