数据移植!
将vf数据表中的数据传入oracle同名的表中,要求报出传输的记录数!(当vf的记录在oracle中存在的时候不能传入--视同错误)要求显示出错误的记录主键,所操作的数据表由combobox选择!
我使用batchmove传输,不知道具体怎么设置!
代码最好!

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, QuickRpt, QRCtrls,
      ExtCtrls, DBCtrls;type
      TForm1 = class(TForm)
        DataSource1: TDataSource;
        Query1: TQuery;
        Button1: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        DBGrid1: TDBGrid;
        ComboBox1: TComboBox;
        Edit3: TEdit;
        DataSource2: TDataSource;
        Query2: TQuery;
        BatchMove1: TBatchMove;
        DataSource3: TDataSource;
        Table1: TTable;
        Edit4: TEdit;
        procedure Button1Click(Sender: TObject);
        //procedure Button2Click(Sender: TObject);  private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      movedcount:longint;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin
    if combobox1.text='' then
    begin
     showmessage('请选择数据表');
     exit;
    end
    else
    begin
    query1.Close;
    query1.SQL.Text:='select * from '+combobox1.text+' where csrq >= :date1 and csrq <= :date2';
    query1.parambyname('date1').asdatetime := strtodatetime(edit1.Text);
    query1.parambyname('date2').asdatetime := strtodatetime(edit2.Text);
    query1.Open;
    batchmove1.Destination.TableName:=combobox1.Text;
    batchmove1.Execute;
    edit3.Text:=inttostr(movedcount);end;
    end;
    end.
    中batchmove1.Destination.TableName:=combobox1.Text;这一句对不对?
    为什么我想用combobox1来指定目标数据表不可以用,而且系统老是在提示所选择的数据表不存在!
      

  2.   

    batchmove1.Destination.TableName:=combobox1.Text  这样写是没有错误的
    关键可能在你的表名写的是否正确
      

  3.   

    batchmove的源数据库呢?只有Destination啊?
      

  4.   

    我也]怀疑我的表名写错了,但是,我的库中确实有这个表存在,而且,当将目标设置为table1
    而且将属性中的tablename改为我库中的表名时,一切正常!
      

  5.   

    最笨的办法,一个ADOconnect联oracle,一个ADOconnect联vfp.从vfp每读出一条记录就比较 oracle里有没有对应的记录,没有就insert,否则报错!
      

  6.   

    不要用BatchMove自己控制传送,就像楼上所说的。就很简单了,反正是作业,不要考虑效率了。
      

  7.   

    你的程序没有任何问题,我在机子里头已经试过了,应该是大小写没有区分,vf和oracle里头的情况是不一样了。:)