如何使用delphi将firebird数据迁移到sql数据库? [英] How to migrate firebird data to sql database using delphi ?

查看:124
本文介绍了如何使用delphi将firebird数据迁移到sql数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨朋友们,

我正在寻找有关使用delphi 6将Firebird迁移到SQL Server 2008的帮助。我在firebird中有一个数据库Inventory,我在SQL中创建了它也。例如:我想从库存数据库(firebird到sql)迁移数据。表名是ASSETCATEGMAS,列是ACATID,CATCODE和ACATDESC。我想在BUTTON点击中执行此操作。我附上我写的部分代码实际上是错误的。我不是普通的Delphi用户,所以我在编码方面不是很完美。任何示例代码或帮助将不胜感激。

Hi Friends,
I am looking for a help regarding the migration of Firebird to SQL Server 2008 using delphi 6. I have a database "Inventory" in firebird and the same I have created in SQL also. For eg: I want to migrate the data from "Inventory" database (firebird to sql). The table name is "ASSETCATEGMAS" and columns "ACATID","CATCODE" and "ACATDESC". I want to do this with in a BUTTON click. I am enclosing the part of code I have written which is actually wrong. I am not a regular Delphi user so I am not much perfect in coding. Any example code or help will be appreciated.

procedure TForm1.Button1Click(Sender: TObject);
begin
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('Select * from ASSETCATEGMAS');
SQLQuery1.Open;
   begin
     SQLQuery1.First;
   while not ADOQuery1.Eof do
       begin
       if not ADOTable1.Locate('ACATID',SQLQuery1.Fieldbyname('ACATID').AsInteger,[]) then
          begin
               SQLTable1.Append;
               SQLTable1.FieldByName('ACATID').AsInteger:= ADOTable1.Fieldbyname('ACATID').AsInteger;
          end
       else
         SQLTable1.Insert;
         SQLTable1.FieldByName('CATCODE').AsString:=ADOTable1.Fieldbyname('CATCODE').AsString;
         SQLTable1.FieldByName('ACATDESC').AsString:=ADOTable1.Fieldbyname('ACATDESC').AsString;
         SQLTable1.Post;
         SQLQuery1.Next;
         inc(i);
       end;
     end;
        showmessage(Inttostr(SQLQuery1.recordcount));
end;

推荐答案

大家好,

我得到了解决方案。如果你们想看看。我在这里给它。谢谢。



程序TForm1.Button1Click(发件人:TObject);

// var

// iRecCnt :整数;

开始



SQLQuery1.Close;

SQLQuery1.SQL.Clear;

SQLQuery1.SQL.Add('从ASSETCATEGMAS'选择count(*)as val);

SQLQuery1.Open;

iRecCnt:= SQLQuery1.Fieldbyname( 'val')。Asinteger;



SQLQuery1.Close;

SQLQuery1.SQL.Clear;

SQLQuery1 .SQL.Add('选择*来自ASSETCATEGMAS');

SQLQuery1.Open;

Pb.Min:= 0;

Pb。 Max:= iRecCnt;

Pb.Position:= 0;

Pb.Step:= 1;

SQLQuery1.First;

而不是SQLQuery1.Eof做

开始



如果不是ADOTable1.Locate('ACATID',SQLQuery1.Fieldbyname( 'ACATID')。AsInteger,[])然后

开始

ADOTable1.Append;

ADOTable1.FieldByName('ACATID ).AsInteger:= SQLQuery1.Fieldbyname('ACATID')。AsInteger;

end

else

ADOTable1.Edit;

ADOTable1.FieldByName('CATCODE')。AsString:= SQLQuery1.Fieldbyname('CATCODE')。AsString;

ADOTable1.FieldByName('ACATDESC')。AsString:= SQLQuery1.Fieldbyname ('ACATDESC')。AsString;

ADOTable1.Post;

inc(i);



SQLQuery1 .Next;

Pb.StepIt;

结束;

Pb.Position:= 0;

showmessage( Inttostr(SQLQuery1.recordcount));

end;
Hi all,
I got the solution. If u guys want to take a look. I am giving it here. Thanks.

procedure TForm1.Button1Click(Sender: TObject);
//var
//iRecCnt:integer;
begin

SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('Select count(*) as val from ASSETCATEGMAS');
SQLQuery1.Open;
iRecCnt:=SQLQuery1.Fieldbyname('val').Asinteger;

SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('Select * from ASSETCATEGMAS');
SQLQuery1.Open;
Pb.Min:=0;
Pb.Max:=iRecCnt;
Pb.Position:=0;
Pb.Step:=1;
SQLQuery1.First;
while not SQLQuery1.Eof do
begin

if not ADOTable1.Locate('ACATID',SQLQuery1.Fieldbyname('ACATID').AsInteger,[]) then
begin
ADOTable1.Append;
ADOTable1.FieldByName('ACATID').AsInteger:= SQLQuery1.Fieldbyname('ACATID').AsInteger;
end
else
ADOTable1.Edit;
ADOTable1.FieldByName('CATCODE').AsString:=SQLQuery1.Fieldbyname('CATCODE').AsString;
ADOTable1.FieldByName('ACATDESC').AsString:=SQLQuery1.Fieldbyname('ACATDESC').AsString;
ADOTable1.Post;
inc(i);

SQLQuery1.Next;
Pb.StepIt;
end;
Pb.Position:=0;
showmessage(Inttostr(SQLQuery1.recordcount));
end;


这篇关于如何使用delphi将firebird数据迁移到sql数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆