길동이 님이 쓰신 글 :
: 인터베이스에 있는 자료를 파라독스로 배치무브하거나 파라독스Db를 인터베이스로 배치무브를 해야할 문제가 생겼습니다.
: 코딩은 아래와 같습니다.
:
: BatchMove.Source :=IBTable1;// 또는 IBQuery1 <=이 부분에서 에러
: BatchMove.Destination:=Table1;
: BatchMove.Mappings.Add('TNO = TNO');
: BatchMove.Mappings.Add('ACODE = ACODE');
: BatchMove.Mappings.Add('BCODE = BCODE');
: BatchMove.Mappings.Add('SCODE = SCODE');
: BatchMove.Mappings.Add('NAME = NAME');
: BatchMove.Mappings.Add('STAN = STAN');
: BatchMove.Mappings.Add('UNIT = UNIT');
: BatchMove.Mappings.Add('INO = INO');
: BatchMove.Mappings.Add('CSTC11 = CSTC11');
: BatchMove.Mappings.Add('TCSTC12 = TCSTC12');
: BatchMove.Mappings.Add('CSTC21 = CSTC21');
: BatchMove.Mappings.Add('TCSTC22 = TCSTC22');
: BatchMove.Mappings.Add('CSTC31 = CSTC31');
: BatchMove.Mappings.Add('TCSTC32 = TCSTC32');
: BatchMove.Mappings.Add('TCSTCTOT = TCSTCTOT');
: BatchMove.Mode:=BatAppend;
: BatchMove.Execute;
:
: 에러메시지는
: incompatible type; 'TBDEDataSet' and 'TIBTable' 입니다.
:
: 짐작건데 서로 타입이 맞지 않아 내는 에러인것 같은데..........
: 원래 인터베이스는 배치무브가 안되는 것인지, 아니면 다른 비법(?)이 있는 것인지
: 도움을 주시면 고맙겠습니다. 고맙습니다.
:
BATCHMOVE는 BDE만 사용가능합니다.
그냥 쉽게 함수를 하나 만드시는게...
만일 덮어쓰기가 아니라면 패러독스를 BDE로 오픈 한 후에
var
i: integer;
begin
Table1.Open;
with IBTable1 do
begin
Open;
while Not Eof do
begin
// 키값이 존재하는지 확인...
// 필요하면 TLocateOptions에 [loCaseInsensitive, loPartialKey] 삽입
if Not Table1.Locate('KeyField1;KeyField2', VarArrayOf[FieldByNameKeyField1).Value,
FieldByName(KeyField1).Value], []) then
begin
Table1.Insert;
// 필드 수만큼 대입
for i:= 0 to Table1.FieldCount -1 do
Table1.FIelds[i].Value:= FieldByName(Table1.Fields[0].Name).Value;
end;
end;
end;
end;
이런 식으로 작성한 후 저장시키면 되겠지여....
|