如何把SQL数据库内容导入到Text文本中!(在delphi下用程序!)

解决方案 »

  1.   

    是表还是数据库啊?
    为什么用delphi啊?不用DTS?
    自己写循环吧
      

  2.   

    不知道楼主什么意思,你先读数据库,然后再写入txt文本啊,不懂你什么意思
      

  3.   

    实在不行,通过GRID去转,写什么程序
      

  4.   

    不知道楼主什么意思,你先读数据库,然后再写入txt文本啊,不懂你什么意思
      

  5.   

    我写了个
    procedure TForm1.Button2Click(Sender: TObject);
    var
      SL: TStringlist;
      lp: integer;
      Str1: string;
    begin
      SL := TStringlist.Create;
      try
        Query1.Close;
        Query1.SQL.Text := 'select * from table1';
        Query1.Open;
        Query1.first;
        while not Query1.eof do
        begin
          Str1 := '';
          for lp := 0 to Query1.Fields.Count - 1 do
            Str1 := Str1 + Query1.Fields[lp].AsString + '  ';
          SL.Add(Str1);
          Query1.Next;
        end;
        SL.SaveToFile('d:\aa.txt');
      finally
        SL.Free;
      end;
    end;
      

  6.   

    现链接到数据库上,如果用ADOCONNECTION;
    再sql中用BCP命令
    如下:
     bcp ''数据库名.dbo.表名'' out ''c:\文件名'' -c -u ''登陆用户名'' -p ''密码''
     再用delphi其他控件执行一下!
      

  7.   

    用ADOCONNEction连接数据库服务器
    ADoTable的SaveToFile()函数
    轻松的实现你的导出功能麻烦点的用huojiehai(海天子) 的也可以另外第三方控件Ems快速的导入导出功能,可以导出任一种格式
      

  8.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Buttons, Menus,StrUtils;type
      TForm1 = class(TForm)
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        ADOConnection1: TADOConnection;
        ADODataSet1: TADODataSet;
        Button1: TButton;
        Button2: TButton;
        Edit1: TEdit;
        Button3: TButton;
        OpenDialog1: TOpenDialog;
        ADOCommand1: TADOCommand;
        ADOQuery1: TADOQuery;
        procedure RePrint1PrintTitle(Row: Integer; Text: String);
        procedure FormCreate(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);  private
        { Private declarations }
         l_path :string;  public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses UMyFun;
    {$R *.dfm}procedure TForm1.RePrint1PrintTitle(Row: Integer; Text: String);
    begin
     if row=2 then
     begin end else
     begin end;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    var path :string;
    begin
      l_path:=ExtractFilePath(Application.ExeName);
      showmessage(path);
      ADOConnection1.ConnectionString:='DBQ='+path+'012003.adb;DefaultDir='+path+';Driver={Microsoft Access Driver (*.mdb)};DriverId=281;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;password=gasfdeveloper;UserCommitSync=Yes';
      ADOConnection1.Connected:=true;
      ADODataSet1.CommandText:='SELECT * FROM PreDVouch where  v_Month is null  and trashed=False  ORDER BY CopyMonth DESC , DV_No DESC;';
      ADODataSet1.Open;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
       f1:textfile;
        file1,mem:string;
        handle:integer;
       copymonth,dv_no,dv_date,acctype,accid,user,jine,bankname,bankaccount:string;
       subunitid,subbankname,subbankaccount,dept_id   :string;
       amount:real;
    begin
       ADODataSet1.First;
       if ADODataSet1.Eof then exit;
       file1:=l_path+'导出横向联网结果.txt';
       if not fileexists(file1) then
          begin
          handle:=filecreate(file1);
          fileclose(handle);
          end;
        assignfile(f1,file1);
        Rewrite(f1);
        //mem:='纳税人识别号,属期,发票代码,发票号码,金额,税额,开票日期,销方识别号';
        //writeln(f1,mem);
        ADODataSet1.first;
        while ADODataSet1.eof<>true do
         begin
           copymonth:=ADODataSet1.fieldbyname('copymonth').asstring;
           dv_no:=ADODataSet1.fieldbyname('dv_no').asstring;
           dv_date:=ADODataSet1.fieldbyname('dv_date').asstring;
           dv_date:=copy(dv_date,1,4)+copy(dv_date,6,2)+copy(dv_date,9,2);
           acctype:=ADODataSet1.fieldbyname('acctype').asstring;
           accid:=ADODataSet1.fieldbyname('accid').asstring;
           user:=ADODataSet1.fieldbyname('use').asstring;
           amount:=ADODataSet1.fieldbyname('amount').asfloat;
           jine:=Format('%14.2f', [amount]);
           bankname:=ADODataSet1.fieldbyname('bankname').asstring;
           bankaccount:=ADODataSet1.fieldbyname('bankaccount').asstring;
           subunitid:=ADODataSet1.fieldbyname('subunitid').asstring;
           subbankname:=ADODataSet1.fieldbyname('subbankname').asstring;
           subbankaccount:=ADODataSet1.fieldbyname('subbankaccount').asstring;
           dept_id:=ADODataSet1.fieldbyname('dept_id').asstring;
           mem:=copymonth+','+dv_no+','+dv_date+','+acctype+','+accid+','+user+','+jine+','+bankname+','+bankaccount;//+','+trim(shuie)+','+kprq+','+xfsh;
           mem:=mem+','+subunitid+','+subbankname+','+subbankaccount+','+dept_id ;
           writeln(f1,mem);
           ADODataSet1.Next;
          end;
           closefile(f1);
           showmessage('拨款书文件'+file1+'已生成,请导入横向联网系统!');
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
    if opendialog1.Execute then edit1.Text:=opendialog1.FileName;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var  f:textfile;
    file1,s:string;
    recnum,i,k,j,n:integer;
    sd:array[1..13] of string;
    sqltext,nsrbm,shuqi,bz:string;
    begin
        file1:=trim(edit1.Text);
        if length(file1)=0 then
           begin
           showmessage('请选择从横向联网系统导出的预算拨款凭证文件!');
           edit1.SetFocus;
           exit;
           end;
        assignfile(f,file1);
        Reset(F);
        Readln(F, S);
        j:=0;//共导入记录数
        repeat
           if GetStrLen(s)=12 then
           begin
               for k:=1 to 13 do  sd[k]:=getip(s,k);
               sqltext:='insert into PreDVouch (copymonth,dv_no,dv_date,acctype,accid,use,Amount,bankname,bankaccount,subunitid,subbankname,subbankaccount,dept_id) values(';
               sqltext:=sqltext+''''+sd[1]+''''+','; //凭证月份
               sqltext:=sqltext+sd[2]+',';           //拨款书凭证号
               sqltext:=sqltext+''''+rqzh(sd[3])+''''+','; //拨款日期
               sqltext:=sqltext+sd[4]+',';           //预算类型
               sqltext:=sqltext+''''+sd[5]+''''+','; //预算科目(类款项)
               sqltext:=sqltext+''''+sd[6]+''''+','; //用途
               sqltext:=sqltext+sd[7]+',';           //拨款金额
               sqltext:=sqltext+''''+sd[8]+''''+','; //付款单位开户银行名称
               sqltext:=sqltext+''''+sd[9]+''''+','; //付款单位帐号
               sqltext:=sqltext+''''+sd[10]+''''+','; //收款单位编码(通用会计编码)
               sqltext:=sqltext+''''+sd[11]+''''+','; //收款单位开户银行
               sqltext:=sqltext+''''+sd[12]+''''+','; //收款单位帐号
               sqltext:=sqltext+''''+sd[13]+''''+')'; //部门编码
               edit1.Text:=sqltext;
               ADOCommand1.Close;
               ADOCommand1.sql.Clear;
               ADOCommand1.SQL.Add(sqltext);
              try
               ADOCommand1.ExecSQL;
               j:=j+1;
              except
                 raise Exception.Create(sqltext+'运行出错!');
                 closefile(f);
                 exit;
              end;       end;
           Readln(F, S);
        until trim(s)='';
        closefile(f);
        showmessage('共复库记录'+inttostr(j)+'条!');
    end;end.
      

  9.   

    2.pas
    unit UMyFun;interface
       uses Windows, SysUtils, Classes,messages,filectrl,StrUtils;   function getfield(s:string;i:integer):string;
       function getip(s:string;i:integer):string;
       function rqzh(s:string):string;
       function GetStr2(SourceStr:string;index:integer):string;   function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
       procedure writelog(log:string);  //记录日志文件
       function GetOSVersion(): integer;
       function GetStrLen(s:string): integer;
       var
       p_dwmc: string; //单位名称
       p_sh: string;   //纳税号
       p_czy: string;  //操作员名称
       p_ver:integer;  //版本号
       p_password:string;//远程认证口令
       P_web:string;
       p_path:string;//程序运行路径
       p_winpath:string;
    implementationfunction rqzh(s:string):string;
    begin
       result:=copy(s,1,4)+'/'+copy(s,5,2)+'/'+copy(s,7,2);
    end;
    function getfield(s:string;i:integer):string;
    var wz1,wz2:integer;
         k:integer;
    begin
      wz1:=1;
      if i = 1  then
         begin
            wz1:=pos('~~',s);
            result:=copy(s,1,wz1-1);
         end
      else
      begin
      for k:=1 to i-1 do
          begin
          wz1:=pos('~~',s);
          s[wz1]:='_';
          s[wz1+1]:='_';
          end;
      wz2:=pos('~~',s);
      if wz2>0 then
         result:=copy(s,wz1+2,wz2-wz1-2)
         else
         result:=copy(s,wz1+2,length(s)-wz1-1);
      end;
      end;
    function getip(s:string;i:integer):string;
    var wz1,wz2:integer;
         k:integer;
    begin
      wz1:=1;
      if i = 1  then
         begin
            wz1:=pos(',',s);
            result:=copy(s,1,wz1-1);
         end
      else
      begin
      for k:=1 to i-1 do
          begin
          wz1:=pos(',',s);
          s[wz1]:='_';
          end;
      wz2:=pos(',',s);
      if wz2>0 then
         result:=copy(s,wz1+1,wz2-wz1-1)
         else
         result:=copy(s,wz1+1,length(s)-wz1);
      end;
    end;
    function GetStrLen(s:string): integer;
    var
      i,wz1:integer;
    begin
      i:=0;
      wz1:=pos(',',s);
      if wz1>0 then
      begin
          repeat
              s[wz1]:='_';
              wz1:=pos(',',s);
              i:=i+1;
          until wz1=0;
       end;
       Result := i;
    end;//**************************************
    // 记录上传下载时日志
    //******************************************
    procedure  writelog(log:string);
    var file2:string;
        f1:textfile;
        handle:integer;
        present:Tdatetime;
        Year,Month,Day:word;
    begin
          present:=now;
          DecodeDate(Present, Year, Month, Day);
          file2:=p_path+'\bak\log'+inttostr(year)+inttostr(month)+'.ini';
          if not fileexists(file2) then
          begin
              try
                 handle:=filecreate(file2);
              except
                 exit;
              end;
          fileclose(handle);
          end;
          try
            assignfile(f1,file2);
          Append(f1);
          log:=DateToStr(Date)+':'+log;
          writeln(f1,log);
          closefile(f1);
          except
            exit;
          end;
    end;
    function GetOSVersion(): integer;
    var
      sysVI: TosversionInfo;
    begin
      sysVI.dwOSVersionInfoSize := SizeOf(sysVI);
      GetVersionEx(sysVI);
      with sysVI do
      begin
         case dwPlatFormID of
           0: Result := 0;
          1:
          begin
             case dwMinorVersion of
              0: Result := 1;
               10: Result := 1;
             else
              Result := 0;
            end;
          end;
          else
            Result := 0;
        end;
      end;
    end;
    function GetStr2(SourceStr:string;index:integer):string;
    //分析批量文本字符串,过滤掉空格
    //SourceStr:要分析的字符串
    //Index:要分析的第几个位置
    var
      i:integer;
      j:integer;
      TmpStr:string;
    begin
      Result:=' ';
      TmpStr:=Trim(SourceStr)+',Nothing';
      for i:=1 to index do
        begin
          j:=Pos(',',TmpStr);
          Result:=LeftStr(TmpStr,j);
          TmpStr:=Trim(Midstr(TmpStr,j,length(TmpStr)-j));
        end;
    end;
    function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
    var
    sr: TSearchRec;
    t,tfile:String;
    FileAttrs:integer;
    begin 
    FileAttrs := faAnyFile;
    //messagebox(0,pchar(inttostr(FindFirst(sDirName, 0, sr))),'sr.name',MB_OK);
    if FindFirst(sDirName+'*.*', 0, sr) = 0 then
       begin
          repeat
              try
                  //messagebox(0,pchar(sr.name),'sr.name',MB_OK);
                  CopyFile(PChar(sDirName+sr.name),PChar(sToDirName+sr.name),false);
              except
                  result:=false;
              end;
          until FindNext(sr) <> 0;
          FindClose(sr);
       end
       else
       begin
       messagebox(0,pchar(sr.name+'中没有文件'),'提示',MB_OK);
       result:=false;
       end;
    end;
    end.
      

  10.   

    object Form1: TForm1
      Left = 214
      Top = 146
      Width = 714
      Height = 359
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object DBGrid1: TDBGrid
        Left = 10
        Top = 38
        Width = 687
        Height = 291
        DataSource = DataSource1
        TabOrder = 0
        TitleFont.Charset = DEFAULT_CHARSET
        TitleFont.Color = clWindowText
        TitleFont.Height = -11
        TitleFont.Name = 'MS Sans Serif'
        TitleFont.Style = []
        Columns = <
          item
            Expanded = False
            FieldName = 'copymonth'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'DV_No'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'dv_date'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'acctype'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'accid'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'use'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'amount'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'bankname'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'bankaccount'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'subunitid'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'subbankname'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'subbankaccount'
            Visible = True
          end
          item
            Expanded = False
            FieldName = 'dept_id'
            Visible = True
          end>
      end
      object Button1: TButton
        Left = 502
        Top = 4
        Width = 75
        Height = 25
        Caption = #23548#20837#25320#27454#20070
        TabOrder = 1
        OnClick = Button1Click
      end
      object Button2: TButton
        Left = 600
        Top = 4
        Width = 75
        Height = 25
        Caption = #23548#20986#21040#25991#26412
        TabOrder = 2
        OnClick = Button2Click
      end
      object Edit1: TEdit
        Left = 24
        Top = 8
        Width = 345
        Height = 21
        TabOrder = 3
      end
      object Button3: TButton
        Left = 376
        Top = 8
        Width = 65
        Height = 25
        Caption = #27983#35272'...'
        TabOrder = 4
        OnClick = Button3Click
      end
      object DataSource1: TDataSource
        DataSet = ADODataSet1
        Left = 80
        Top = 196
      end
      object ADOConnection1: TADOConnection
        LoginPrompt = False
        Provider = 'MSDASQL.1'
        Left = 54
        Top = 196
      end
      object ADODataSet1: TADODataSet
        Connection = ADOConnection1
        CursorType = ctStatic
        CommandText = 
          'select id as '#24207#21495','#33258#26377#25110#21512#21516', '#32500#20462#20225#19994#21517#31216', '#31867#21035', '#21512#21516#36215#35755#24180#38480', '#21512#21516#21495', '#35774#22791#21488#25968', '#24180#32500#20462', '#22266#23450#36164#20135' ' +
          'from  '#32500#20462#20225#19994#26723#26696
        Parameters = <>
        Left = 110
        Top = 196
      end
      object OpenDialog1: TOpenDialog
        DefaultExt = 'txt'
        Filter = '(*.txt)|*.txt'
        Left = 456
        Top = 8
      end
      object ADOCommand1: TADOCommand
        Connection = ADOConnection1
        Parameters = <>
        Left = 48
        Top = 152
      end
      object ADOQuery1: TADOQuery
        Connection = ADOConnection1
        Parameters = <>
        Left = 152
        Top = 136
      end
    end
      

  11.   

    方法很多,可以使用BCP命令,或者自己写程序将所有内容导出