各位高手:
.....
self.ADOQuery3.sql.add('select '+a+' from '+edit1.Text+'');
   self.ADOQuery3.open; self.ADOQuery3.SaveToFile(d:/test.txt);结果,这样输入到txt中的是两句话
select name from login
select password from login怎样在txt中出现name和password的数据阿

解决方案 »

  1.   

    以xml形式保存比较好self.ADOQuery1.Close;
    self.ADOQuery1.SQL.Clear;
    self.ADOQuery1.SQL.Add( 'select * from table1' );
    self.ADOQuery1.Open;
    self.ADOQuery1.SaveToFile( 'd:\12345676.xml',pfXML );
      

  2.   

    我需要调用的,所以只能存成txt.或者excel的,
    各位高手帮忙啊,会马上分分的
      

  3.   

    1.
    VAR
      TEST1:TStringList;
    begin
      TEST1:=TSTRINGLIST.CREATE
      WITH ADOQUERY1 DO
      BEGIN
        CLOSE;
        SQL.CLEAR;
        SQL.TEXT:='SELECT .........';
        OPEN;
        WHILE NOT EOF DO
        BEGIN
          TEST1.ADD(FILEDBYNAME('').ASSTRING);
          NEXT;
        END;
      TEST1.FREE;
    endEND;
    end;
      

  4.   

    或者直接用ADO驱动连接文本文件或Excel,和操作数据表一样!
      

  5.   

    可是我还是不明白如何把数据库中的数据保存到excel或者Txt中阿,
    test1.savefile吗
    出现的也不是数据,而是FILEDBYNAME(entity_code).ASfloat
    FILEDBYNAME(entity_code).ASfloat
    FILEDBYNAME(entity_code).ASfloat
    FILEDBYNAME(entity_code).ASfloat
    怎么样才会把表中的内容保存在txt文件中呢
      

  6.   

    我的做法就是先open 出来的数据写入一个StringGrid 然后
    StringGrid1.SaveToXLS(SaveDialog1.FileName);
    大体写法如下:
    procedure TForm_ouput.Output_Excel();
      function L_Format( s: string ): string;
      var   Code: Integer;    N: Double;
      begin
         if length( s ) > 11 then begin
            try   Val( s, N, Code );
              if (Code = 0) then   s := '''' + s;
            except    end;
         end;
        Result := s;
      end;
    var i, j:integer;
        s: string;
        SaveDialog1: TSaveDialog;
    begin
      inherited;
      StringGrid1.RowCount:= DmIds.Query.RecordCount + 1;
      StringGrid1.ColCount:= 2;
    //列标题
      StringGrid1.Cells[ 0, 0 ] := '序号';
      StringGrid1.Cells[ 1, 0 ] := '名称';
      StringGrid1.Cells[ 2, 0 ] := '密码';
      
    //列值
      DmIds.Query.first;   I := 1;
      while not DmIds.Query.Eof do begin     StringGrid1.Cells[ 0, I ] := IntToStr( I );
         StringGrid1.Cells[ 1, I ] := L_Format( trim( DmIds.Query.FindField('name').AsString ) );
         StringGrid1.Cells[ 2, I ] := L_Format( trim( DmIds.Query.FindField('password').AsString ) );
         DmIds.Query.Next;    
         inc( I );
      end;  SaveDialog1 := TSaveDialog.Create(self);
      SaveDialog1.Title := '保存文件';
      SaveDialog1.InitialDir := 'c:\Excel\';  SaveDialog1.DefaultExt := 'XLS';
      SaveDialog1.FileName :=  self.Caption;
      SaveDialog1.Filter := 'EXCEL文件(*.xls)|*.XLS';
      try
        if SaveDialog1.Execute then begin
          case SaveDialog1.FilterIndex of
            1: StringGrid1.SaveToXLS(SaveDialog1.FileName);
            2: StringGrid1.SaveToASCII(SaveDialog1.FileName);
            3: StringGrid1.SaveToHTML(SaveDialog1.FileName);
            4: StringGrid1.SaveToCSV(SaveDialog1.FileName);
          end;
          Application.MessageBox('文件保存成功!', '', MB_OK + MB_ICONASTERISK
                                + MB_DEFBUTTON1 + MB_APPLMODAL);
        end;
      finally
        SaveDialog1.Free;
      end;end;
      

  7.   

    提示SaveToXLS,SaveToASCII,SaveToHTML,SaveToCSV没有定义。出错
    没有用过savedialog
      

  8.   

    简单呀,数据查询出来以后,放到一个MEMO控件中,然后再用MEMO控件的SAVETO就行了。self.ADOQuery3.sql.add( "select   "+a+ "   from   "+edit1.Text+ " "); 
          self.ADOQuery3.open; 
    while not self.ADOQuery3.eof do
    begin
      memo1.lines.add(self.AdoQuery3.fields.fieldbyname('name')+','+self.AdoQuery3.fields.fieldbyname('password'))
      self.AdoQuery3.next
    end
    memo1.lines.savetofile('d:/test.txt')大概就这个意思,因为有些属性写程序的时候都是DELPHI自动显示出来的,记得不是很清,估计memo1的saveto这一行是错的,试一下正确的应该是什么属性吧。
      

  9.   

    不好意思,写SQL代码写多了,忘了带分号了,呵呵,楼主自己补上哈!
      

  10.   

    数字已经出来了,但是我的name和password处是变量a
    我写的代码是
    memo1.lines.add(self.adoquery3.fields.fieldbyname('''+a+'''));
    这样不对阿。提示'+a+'字段不对。再加两个引号也不对阿
    还有数字对应的字段名可以显示吗
    谢谢
      

  11.   

    var
     str : TStringList;
     s : string;
     i : integer;
    begin
      ADOQuery1.open;
     if SaveDialog1.Execute then begin
        str:=TStringList.Create();
     try
           s:='';
          for i:=0 to ADOQuery1.FieldCount-1 do begin
            s:=s+ADOQuery1.Fields[i].FieldName+#9;
            Application.ProcessMessages;
            //showmessage(s);
          end;
            str.Add(s);
        ADOQuery1.First;
       while not  ADOQuery1.Eof  do begin
           s:='';
          for i:=0 to ADOQuery1.FieldCount-1 do begin
            s:=s+ADOQuery1.Fields[i].AsString+#9;
            Application.ProcessMessages;
            //showmessage(s);
          end;
            str.Add(s);
            ADOQuery1.Next;
       end;
        str.SaveToFile(SaveDialog1.FileName);
        MessageBox(Application.Handle,'数据导出完毕!','系统提示',MB_ICONINFORMATION or MB_OK);
      except
           MessageBox(Application.Handle,'数据不能正常导出,请重试!','系统提示',MB_ICONINFORMATION or MB_OK);
           str.Free;
      end;
     end;