具体内容是这样的:我有一个EXCEL的表格,然后里面的数据我要写到SQL2000里面已经建立好的数据库,而且要求EXCEL中的字段和SQL2000数据库中的字段相对应,举个例子就是:EXCEL里面有姓名,编号,联系方式。然后数据库里面也有姓名,编号,联系方式!然后要求一一对应!!
   求高手说说怎么写代码???

解决方案 »

  1.   

    ado可以连接excel,连接后对应着写就可以了
      

  2.   

    两个数据集,一个连接sql server ,一个连接excel,然后循环excel数据集,逐条写到sql server数据集,无非就是append,post
      

  3.   

      这个朋友麻烦写下过程好吗??或者发到我邮箱,谢谢你了!!我确实不知道怎么做!!
      [email protected]
      

  4.   

      这个朋友,麻烦你写下具体的过程!!或者发到我邮箱[email protected]
    谢谢你了,我确实不知道怎么写!~~
      

  5.   

    连接两个数据集会吗
    连接用TADOConnection,
    数据集控件用TADOQuery,用两个这样的控件
    sqlQ 连接sql server;
    excelQ 连接 excel
    都open后
    while not excelQ.eof do
    begin
      sqlQ.append;
      sqlQ.FieldByName('编号').Asstring := excelQ.FieldByName('编号').Asstring;
      //其他字段
      sqlQ.Post;
      excelQ.Next;
    end;
      

  6.   

    TADOQuery 这个控件怎么调用EXCEL呢??SQL语句怎么写呢??
      

  7.   

    双击TADOConnection-build,在其中找找有没有excel的连接驱动,具体的可以到网上查一下,很多的
      

  8.   

      TADOConnection这个EXCEL连接成功,但是我想用DBGRID显示出来,那样观察容易一点,SQL的我能成功显示,但是EXCEL的,我不知道怎么在TADOQuery的TStrings里面写语句
      

  9.   

    select * from [Sheet1$]
    [Sheet1$]为excel中的页签
      

  10.   

    成功显示出来了!~谢谢你!!下一步是否就是放一个BitBtn按钮,然后
    procedure TForm1.RzBitBtn1Click(Sender: TObject);
     begin while not ADOTable1.eof do
     begin
      ADOQuery1.SQL.Append;
      ADOQuery1.SQL.FieldByName('编号').Asstring := adotable1.sql.FieldByName('编号').Asstring;
      //其他字段 
      ADOQuery1.SQL.Post;
      ADOTable1.Next;
    end;end;
    就行了?
      

  11.   


    最好在循环之前加上ADOTable1.first,这样保证不丢失记录
      

  12.   

    procedure TForm1.RzBitBtn1Click(Sender: TObject);
     begin while not ADOQuery2.eof do
     begin
      ADOQuery1.SQL.Append;
      ADOQuery1.SQL.FieldByName('编号').Asstring := ADOQuery2.sql.FieldByName('编号').Asstring;
      //其他字段 
      ADOQuery1.SQL.Post;
      ADOQuery2.Next;
    end;end;
    报错
    [Error] Unit1.pas(51): Not enough actual parameters
    [Error] Unit1.pas(52): Undeclared identifier: 'FieldByName'
    [Error] Unit1.pas(52): Missing operator or semicolon
    [Error] Unit1.pas(52): Undeclared identifier: 'FieldByName'
    [Error] Unit1.pas(52): Missing operator or semicolon
    [Error] Unit1.pas(54): Undeclared identifier: 'Post'
    [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
      

  13.   

    最笨的办法,借用OLE,写代码输出给excel.
      

  14.   

    qryexcel.connection:='provider=microsoft.jet.oledb.4.0;data source=aa.xls;extended property=excel 8.0;persist security info=false';qrysql.connection:='sqloledb.1;......';with qryexcel do begin
      sql.clear;
      sql.add('select * from [sheet1$]');
      open;
      first;
    end;while not qryexcel.eof do begin
      with qrysql do begin
      begin
        sql.clear;
        sql.add('insert into t1 (f1,f2) values (:v1,:v2)');
        parametersbyname('v1').value=qryexcel.fieldbyname('f1').asstring;
        execsql;
      end;
      qryexcel.next;
      end;
    end;
    大概这个样子,另外你可以搞一个通用的导入导出程序
      

  15.   

    Excel中各个字段均为String,因此你先要判断一下SQL Server中各个字段的字段类型,然后将Excel中的各个字段值转换成相应的字段就OK了!
      

  16.   

    我找不出错误了!!!大家帮帮忙
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, RzButton, ADODB, Provider, DBClient, DB, Grids, DBGridEh,
      RzShellDialogs;type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        DBGridEh1: TDBGridEh;
        DataSource1: TDataSource;
        ADOConnection2: TADOConnection;
        ADOQuery1: TADOQuery;
        DataSource2: TDataSource;
        DBGridEh2: TDBGridEh;
        RzBitBtn1: TRzBitBtn;
        ADOQuery2: TADOQuery;
        procedure FormCreate(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure RzBitBtn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    try
      ADOConnection2.Connected:=true;
     Except
      Application.MessageBox('数据库连接失败,请检查参数!','警告',mb_iconwarning)
     end;
    end;procedure TForm1.RzBitBtn1Click(Sender: TObject);
    begin
    with ADOQuery2 do begin
      ADOQuery2.SQL.clear;
      ADOQuery2.SQL.add('select * from [sheet1$]');
      open;
      first;
    end;while not ADOQuery2.eof do begin
      with ADOQuery1 do begin
      begin
        ADOQuery1.SQL.clear;
        ADOQuery1.SQL.add('insert into Pub_Btype (FullName,UserCode) values (:名称,:编码)');
        ADOQuery2('名称').value:=adoquery2.fieldbyname('FullName').asstring;
        execsql;
      end;
      ADOQuery2.next;
      end;
    end;
    end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
    ADOConnection2.Connected:=false;
    end;end.
    错误提示:
    [Error] Unit1.pas(60): Missing operator or semicolon
    [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
      

  17.   

    try      begin
            ADOQuery1.Close;
            ADOQuery1.SQL.Clear;
            ADOQuery1.SQL.Add('select * from T_RES_ECO_PASS');           
            ADOQuery1.Open;
            SMImportFromXLS.SourceFileName:=RzButtonEdit2.Text;
            SMImportFromXLS.Mappings.Clear;
            SMImportFromXLS.Mappings.Add('WKO_TYPE=A');
            SMImportFromXLS.Mappings.Add('SendData=B');
            SMImportFromXLS.Mappings.Add('ECONO=C');
            SMImportFromXLS.Mappings.Add('subject=D');
            SMImportFromXLS.Mappings.Add('EcrNo=E');
            SMImportFromXLS.Mappings.Add('ECOCC=F');
            SMImportFromXLS.Mappings.Add('Model=G');
            try
              SMImportFromXLS.Execute;
              InsertECOLOG;
            except
              MessageDlg('請選擇要導入的Excel檔案!',mtWarning,[mbOK],0);
              Exit;
            end;
            adosrp_eco.ExecProc;
            RefreshECO;
            ESPStoredProcedure;
          end;