안녕하십니다..
델파이 초보 입니다..
다름이 아니라
델파이 프로그램에서
A라는 DB에서 AOD를 사용하여서 DBGrid에 보여지는것까지 했는데
그 DBGrid에 보여진 데이터를 B라는 DB에 insert시키고 싶은데
알려주세요~
DB는 MS SQL SERVER거든요.....
마이그레이션 하는 작업이시면 DB 상에서 처리해도 될 문제지만...응용프로그램을
통해서 처리하시려면...
우선 생각나는 방법은 ADO 를 두개 사용하시는 방법이겠군요.
DB Grid를 사용하지 않고 StringGrid를 사용하신다면..
A 란 DB에서 읽어온 데이터를 StringGrid에 각 셀에 저장해놓고 활용하는 방법도 있겠구요. 그럼 ADO 1개면..
어쨌든, 쉽게쉽게 ADO 2개 사용해서 각각의 A, B DB에 연결하고
ADOQuery compo 각각 연결하시고
각 쿼리 컴포 넴은
qry_A (A DB connect)
qry_B (B DB connect)
이럼 준비는 되었고 예를 들어 A 디비의 AA 라는 테이블의 정보를 읽어 B 디비의 BB 란 테이블에
저장하고자 한다면 (쉽게 AA 와 BB는 테이블 구조가 같다고 하겠습니다.)
procedure TForm1.ButtonOnClick(Sender : TObject);
var
ssql : String;
i : integer;
begin
ssql := 'SELECT * FROM AA';
with qry_A do
begin
close;
sql.clear;
sql.text := ssql;
open;
end;
// 위까지 쿼리까지 진행하면 DB Grid에는 이미 내용이 나와있게지요. 데이터가 있다면..
// 이벤트를 따로 들수도 있겠지만..걍 여기서 같이 데이터도 옮긴다면..
if not qry_A.IsEmpty then
begin
qry_A.First;
for i := 1 to qry_A.RecordCount do
begin
ssql := 'INSERT INTO BB('
+ 'BB1, BB2, BB3) VALUES('
+ '''' + qry_A.FieldByName('AA1').AsString + ''''
+ ',''' + qry_A.FieldByName('AA2').AsString + ''''
+ ',''' + qry_A.FieldByName('AA3').AsString + ''')';
with qry_B do
begin
close;
sql.clear;
sql.text := ssql;
ExecSQL;
end;
qry_A.Next;
end;
end;
end;
쩝 걍 쫌 허접하네. 그래도 이 방법이 나을 것 같습니다.
즐코. 혹 다른 방법이 필요하신거라면~~리플
마이그레이션 하는 작업이시면 DB 상에서 처리해도 될 문제지만...응용프로그램을
통해서 처리하시려면...
우선 생각나는 방법은 ADO 를 두개 사용하시는 방법이겠군요.
DB Grid를 사용하지 않고 StringGrid를 사용하신다면..
A 란 DB에서 읽어온 데이터를 StringGrid에 각 셀에 저장해놓고 활용하는 방법도 있겠구요. 그럼 ADO 1개면..
어쨌든, 쉽게쉽게 ADO 2개 사용해서 각각의 A, B DB에 연결하고
ADOQuery compo 각각 연결하시고
각 쿼리 컴포 넴은
qry_A (A DB connect)
qry_B (B DB connect)
이럼 준비는 되었고 예를 들어 A 디비의 AA 라는 테이블의 정보를 읽어 B 디비의 BB 란 테이블에
저장하고자 한다면 (쉽게 AA 와 BB는 테이블 구조가 같다고 하겠습니다.)
create table AA(
A1 varchar(10),
A2 varchar(20),
A3 varchar(30));
create table BB(
B1 varchar(10),
B2 varchar(20),
B3 varchar(30));
procedure TForm1.ButtonOnClick(Sender : TObject);
var
ssql : String;
i : integer;
begin
ssql := 'SELECT * FROM AA';
with qry_A do
begin
close;
sql.clear;
sql.text := ssql;
open;
end;
// 위까지 쿼리까지 진행하면 DB Grid에는 이미 내용이 나와있게지요. 데이터가 있다면..
// 이벤트를 따로 들수도 있겠지만..걍 여기서 같이 데이터도 옮긴다면..
if not qry_A.IsEmpty then
begin
qry_A.First;
for i := 1 to qry_A.RecordCount do
begin
ssql := 'INSERT INTO BB('
+ 'BB1, BB2, BB3) VALUES('
+ '''' + qry_A.FieldByName('AA1').AsString + ''''
+ ',''' + qry_A.FieldByName('AA2').AsString + ''''
+ ',''' + qry_A.FieldByName('AA3').AsString + ''')';
with qry_B do
begin
close;
sql.clear;
sql.text := ssql;
ExecSQL;
end;
qry_A.Next;
end;
end;
end;
쩝 걍 쫌 허접하네. 그래도 이 방법이 나을 것 같습니다.
즐코. 혹 다른 방법이 필요하신거라면~~리플