Q&A

  • 워크시트가 3개 이상이 되면..
Servers 컴포넌트에 있는 엑셀 어플리케이션을 이용했는데요..

워크북 하나에 워크시트 다섯개를 연결 시켰거든요..

각 워크시트마다 다른 쿼리 결과를 저장하는데..

세번째 워크시트는 자신의 쿼리 레코드 카운트를 무시하고

두번째 워크시트에 들어가는 쿼리의 레코드 카운트만큼 데이터를 저장합니다..



다시 말하면

두번째 워크시트에 들어갈 쿼리 레코드 카운트가 50이고

세번째 워크시트에 들어갈 쿼리 레코드 카운트가 20이라면

자신의 것 20개를 찍고나서 50개가 될때까지 쿼리2의 결과를 저장합니다.



왜 이런 일이 생기는 걸까요..

제발 좀 도와주세요..ㅜ.ㅜ

==============================================================================

try

ExcelApplication1.Visible[0] := True ;

ExcelApplication1.Caption :='엑셀 테스트';

ExcelApplication1.WorkBooks.Add(xlWBATWorksheet,0);

ExcelWorkBook1.ConnectTo(ExcelApplication1.workbooks.Item[1]);



ExcelWorksheet1.ConnectTo(ExcelWorkBook1.sheets[1] as _worksheet);

ExcelWorksheet2.ConnectTo(ExcelWorkBook1.sheets[1] as _worksheet);

ExcelWorksheet3.ConnectTo(ExcelWorkBook1.sheets[1] as _worksheet);

ExcelWorksheet4.ConnectTo(ExcelWorkBook1.sheets[1] as _worksheet);

ExcelWorksheet5.ConnectTo(ExcelWorkBook1.sheets[1] as _worksheet);



except

on E: Exception do begin

showmessage(E.message);

ExcelApplication1.Disconnect;

end;

===========================================================================

procedure TF_execl.btn_MovedataClick(Sender: TObject);

var i, j :Integer ;

Myrange:Range;

begin

try

with Excelworksheet4 do

begin

for i:= 1 to Query1.FieldCount do

Cells.item[2,i] := Query1.Fields[i-1].Fullname ;

Query1.First;

for i:= 3 to Query1.Recordcount+2 do

begin

for j:=1 to Query1.FieldCount do

begin

Cells.Item[i,j] :=char(39)+Query1.Fields[j-1].AsString;

end;

Query1.next;

end;

myrange := Range[Cells.Item[2,1],Cells.Item[Query1.recordCount+2,Query1.FieldCount]];

myRange.Columns.AutoFit;

SaveAs('D:exambackup'+stdate.text+'_'+eddate.text+'처방관련Prescription.xls');

end;

Query3.close;

Query3.sql.clear;

Query3.SQL.add('delete from T_prescription where seq=:seq');

Query3.ParamByName('seq').AsInteger := Query1seq.Value ;

Query3.execsql;



with Excelworksheet5 do

begin

for i:= 1 to Query2.FieldCount do

Cells.Item[2,i] := Query2.Fields[i-1].Fullname ;

Query2.First;

for i:= 3 to Query2.Recordcount+2 do

begin

for j:=1 to Query2.FieldCount do

begin

Cells.Item[i,j] :=char(39)+Query2.Fields[j-1].AsString;

end;

Query2.next;

end;

myrange := Range[Cells.Item[2,1],Cells.Item[Query2.recordCount+2,Query2.FieldCount]];

myRange.Columns.AutoFit;

SaveAs('D:exambackup'+stdate.text+'_'+eddate.text+'처방관련medicine.xls');

end;

Query3.close;

Query3.sql.clear;

Query3.SQL.add('delete from T_medicine where ino=:ino');

Query3.ParamByName('ino').AsInteger := Query2ino.Value ;

Query3.execsql;



except

on E: Exception do begin

showMessage(E.message);

ExcelApplication1.Disconnect;

end;

end;

end;



//주문관련업무 백업

procedure TF_execl.btn_Movedata1Click(Sender: TObject);

var i, j :Integer ;

Myrange:Range;

begin

try

with Excelworksheet1 do

begin

for i:= 1 to Query7.FieldCount do

Cells.Item[2,i] := Query7.Fields[i-1].Fullname ;

Query7.First;

for i:= 3 to Query7.Recordcount+2 do

begin

for j:=1 to Query7.FieldCount do

begin

Cells.Item[i,j] :=char(39)+Query7.Fields[j-1].AsString;

end;

Query7.next;

end;

myrange := Range[Cells.Item[2,1],Cells.Item[Query7.recordCount+2,Query7.FieldCount]];

myRange.Columns.AutoFit;

SaveAs('D:exambackup'+stdate1.text+'_'+eddate1.text+'주문관련return.xls');

end;

{Query3.close;

Query3.sql.clear;

Query3.SQL.add('delete from T_return where re_date=:re_date and '+

' re_seq=:re_seq and ds_id=:ds_id and re_no=:re_no');

Query3.ParamByName('re_date').AsString := Query7re_date.Value ;

Query3.ParamByName('re_seq').AsString := Query7re_seq.Value ;

Query3.ParamByName('ds_id').AsString := Query7ds_id.Value ;

Query3.ParamByName('re_no').AsInteger := Query7re_no.Value ;

Query3.execsql;}



with Excelworksheet2 do

begin

for i:= 1 to Query6.FieldCount do

Cells.Item[2,i] := Query6.Fields[i-1].Fullname ;

Query6.First;

for i:= 3 to Query6.Recordcount+2 do

begin

for j:=1 to Query6.FieldCount do

begin

Cells.Item[i,j] :=char(39)+Query6.Fields[j-1].AsString;

end;

Query6.next;

end;

myrange := Range[Cells.Item[2,1],Cells.Item[Query6.recordCount+2,Query6.FieldCount]];

myRange.Columns.AutoFit;

SaveAs('D:exambackup'+stdate1.text+'_'+eddate1.text+'주문관련order_edit.xls');

end;

{Query3.close;

Query3.sql.clear;

Query3.SQL.add('delete from T_order_edit where or_date=:or_date and '+

' or_seq=:or_seq and ds_id=:ds_id and or_no=:or_no');

Query3.ParamByName('or_date').AsString := Query6or_date.Value ;

Query3.ParamByName('or_seq').AsString := Query6or_seq.Value ;

Query3.ParamByName('ds_id').AsString := Query6ds_id.Value ;

Query3.ParamByName('or_no').AsInteger := Query6or_no.Value ;

Query3.execsql;}



with Excelworksheet3 do

begin

for i:= 1 to Query5.FieldCount do

Cells.Item[2,i] := Query5.Fields[i-1].Fullname ;

Query5.First;

for i:= 3 to Query5.Recordcount+2 do

begin

for j:=1 to Query5.FieldCount do

begin

Cells.Item[i,j] :=char(39)+Query5.Fields[j-1].AsString;

end;

Query5.next;

end;

myrange := Range[Cells.Item[2,1],Cells.Item[Query5.recordCount+2,Query5.FieldCount]];

myRange.Columns.AutoFit;

SaveAs('D:exambackup'+stdate1.text+'_'+eddate1.text+'주문관련order.xls');

end;

{Query3.close;

Query3.sql.clear;

Query3.SQL.add('delete from T_order where or_date=:or_date and '+

' or_seq=:or_seq and ds_id=:ds_id and or_no=:or_no');

Query3.ParamByName('or_date').AsString := Query5or_date.Value ;

Query3.ParamByName('or_seq').AsString := Query5or_seq.Value ;

Query3.ParamByName('ds_id').AsString := Query5ds_id.Value ;

Query3.ParamByName('or_no').AsInteger := Query5or_no.Value ;

Query3.execsql;}

except

on E: Exception do begin

showMessage(E.message);

ExcelApplication1.Disconnect;

end;

end;



end;



0  COMMENTS