将TXT里的内容取出,并写入ADO,自己写的有错,插入不进数据,请高手看下。ADO没连数据库哦。(我没用数据库,每个数据都存成一个TXT,然后查看的时候用流读出来,赋值到ADO,然后使用DBGridEh显示)就ADOQuery+DataSource+DBGridEh 三个控件。不知是不是没有创建临时表的原因,请问需要吗?请各位帮忙看下,然后修改下代码,谢谢!TXT的内容格式:08:07:35|37|134|175|37|43......procedure TForm1.btn1Click(Sender: TObject);
var
  MyLog,Temp:TStringList;
  i:Integer;
  LoadPtch:string;
begin
  MyLog:=TStringList.Create();
  Temp:=TStringList.Create();
  LoadPtch:=ExtractFilePath(Application.ExeName)+'TEST.TXT';
  MyLog.loadfromfile(LoadPtch);
  Temp.Delimiter := '|';
  for i:=0 to MyLog.Count-1 do
  begin
  Temp.Clear;
  Temp.DelimitedText :=trim(MyLog.strings[i]);
  qry1.Close;
  qry1.SQL.Clear;
  qry1.Sql.Text:='insert into TEMPDATA(NowTime,T1,F1,T2,F2,T3,F3,T4,F4,T5,F5,T6,F6,P,TP) values(:GTime,:GT1,:GF1,:GT2,:GF2,:GT3,:GF3,:GT4,:GF4,:GT5,:GF5,:GT6,:GF6,:GP,:GTP)';
  qry1.Parameters.ParamByName('GTime').Value:=StrToDate(Temp.Strings[0]);
  qry1.Parameters.ParamByName('GT1').Value:=StrToDate(Temp.Strings[1]);
  qry1.Parameters.ParamByName('GF1').Value:=StrToFloat(Temp.Strings[2]);
  qry1.Parameters.ParamByName('GT2').Value:=StrToFloat(Temp.Strings[3]);
  qry1.Parameters.ParamByName('GF2').Value:=StrToFloat(Temp.Strings[4]);
  qry1.Parameters.ParamByName('GT3').Value:=StrToFloat(Temp.Strings[5]);
  qry1.Parameters.ParamByName('GF3').Value:=StrToFloat(Temp.Strings[6]);
  qry1.Parameters.ParamByName('GT4').Value:=StrToFloat(Temp.Strings[7]);
  qry1.Parameters.ParamByName('GF4').Value:=StrToFloat(Temp.Strings[8]);
  qry1.Parameters.ParamByName('GT5').Value:=StrToFloat(Temp.Strings[9]);
  qry1.Parameters.ParamByName('GF5').Value:=StrToFloat(Temp.Strings[10]);
  qry1.Parameters.ParamByName('GT6').Value:=StrToFloat(Temp.Strings[11]);
  qry1.Parameters.ParamByName('GF6').Value:=StrToFloat(Temp.Strings[12]);
  qry1.Parameters.ParamByName('GP').Value:=StrToFloat(Temp.Strings[13]);
  qry1.Parameters.ParamByName('GTP').Value:=StrToFloat(Temp.Strings[14]);
  qry1.ExecSql;
  end;
  qry1.Close;
  qry1.SQL.Clear;
  qry1.SQL.Add('select * from TEMPDATA');
  qry1.Open;
  qry1.active:=false;
  qry1.active:=True;
  MyLog.Free;
  Temp.Free;
end;

解决方案 »

  1.   

    ado不连数据库?
    那应该使用Tclientdataset
      

  2.   

    你用ADO,那麼你的連接字符串是什麼?用的是什麼驅動?代碼中沒見到。如用文本文件作數據庫,也有格式規定,不是你想設成什麼就是什麼。
      

  3.   

    clientdataset 没用过
    能详细说下吗
      

  4.   

    TXT里的内容是以结构方式写入的吗,不是的话,就会出错的
      

  5.   

    那先吧TXT读到流里,然后再存到clientdataset里可以吗?
    主要没用过clientdataset,不知道代码怎么写,求教程代码
      

  6.   

    ADO不连数据库,你就用ADOQuery,当然不行啊,行的话要ADOConnection干吗
      

  7.   

    ADO不连数据库,你就用ADOQuery,当然不行啊,行的话要ADOConnection干吗
      

  8.   

    楼上有提到 clientdataset,请教如何 把TXT的内容直接写入到  clientdataset中呢!
      

  9.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DBGridEhGrouping, StdCtrls, DB, ADODB, GridsEh, DBGridEh,
      DBClient;type
      TForm1 = class(TForm)
        dbgrdh1: TDBGridEh;
        ds1: TDataSource;
        btn1: TButton;
        ds2: TClientDataSet;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
    var
      MyLog,Temp:TStringList;
      LoadPtch:string;
      i:Integer;
    begin
      LoadPtch:=ExtractFilePath(Application.ExeName)+'TEST.TXT';
      MyLog:=TStringList.Create();
      Temp:=TStringList.Create();
      MyLog.loadfromfile(LoadPtch);
      ds2.Close;
      ds2.CreateDataSet;
      ds2.Append;
      Temp.Delimiter := '|';
      for i:=MyLog.Count-1 downto 0 do
      begin
      Temp.Clear;
      Temp.DelimitedText :=trim(MyLog.strings[i]);
      ds2.Insert;
      ds2.FieldByName('NowTime').AsString:=Temp.Strings[0];
      ds2.FieldByName('T1').AsString:=Temp.Strings[1];
      ds2.FieldByName('F1').AsString:=Temp.Strings[2];
      end;
      MyLog.Free;
      Temp.Free;
    end;
    end.自己写了下,可以使用,谢谢以上大侠给予提示和思路