제가 작업하고 있는 환경은 sybase sql server manager 11.0.2와 Delphi5를 사용하고 있습니다. 제가 하려고 하는 작업은 db 데이타를 엑셀에 표시한 후 다시 엑셀에서 데이타를 db에 올리는 것입니다.
제가 여태까지 한 작업은 bde를 사용하여 dbgrid에 데이타를 표시한 후 엑셀에 표시한 것 까지는 했습니다. 반대로 엑셀에서 db에 올리는 작업을 해야 하는데 방법을 모르겠습니다. 제가 질문하고자 하는 것은
1.dbgrid에 엑셀 값을 표시할 수있는지, 있다면 그 방법과
2.굳이 dbgrid를 사용하지 않고 바로 ttable에 바로 적용할 수 있는지, 있다면 그 방법과
3.위의 방법은 아마 bde를 사용하는 방법이겠지요? 위의 방법이 되지 않는다면 ado component를 사용하는 방법이 있는 것 같은데 connectstring 설정이 쉽지 않네요. provider item을 보면 sybase를 지원할 수있는 것이 없더군요. sybase를 지원할 수 있는 odbc를 설치하였고 dsn을 만들어서 데이타 가져오는 것까지 테스트하였구요.
마지막으로 제가 올린 문제에 대한 해답을 주실때는 상세한 코딩을 곁들여주시면 고맙겠습니다.
다시 DB로 Insert를 하였습니다...
참고하세요....
/////////////////////////////////////////////////엑셀자료 불러오기///////////
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
with ADOQuery1 do
begin
close;
ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
OpenDialog1.FileName + ';Extended Properties=Excel 8.0;Persist Security Info=False';
SQL.Clear;
SQL.Text := 'SELECT * FROM [Sheet1$]'; // 불러올 엑셀의sheet명
open;
end;
end;
/////////////////////////////////////////불러온 자료를 DB로 Insert 하기///////
procedure TForm2.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQl.ADD('Insert Into tbpubmstex');
Query1.SQl.ADD('(ORD_NO, ');
Query1.SQl.ADD('REMARK) ');
Query1.SQl.ADD('Values( ');
Query1.SQl.ADD(':ORD_NO, ');
Query1.SQl.ADD(':REMARK) ');
Query1.prepare;
ADOQuery1.First; //자료의 처음으로 옮기기
while not ADOQuery1.Eof do //자료가 끝날때 까지
begin
Query1.ParamByName('ORD_NO').asString := ADOQuery1.Fields[0].DisplayText;
//불러온 자료의 첫번째 필드를 ORD_NO에 대입한다.
Query1.ParamByName('REMARK').asString := ADOQuery1.Fields[7].DisplayText;
//불러온 자료의 8번째 필드를 ORD_NO에 대입한다.
Query1.execsql;
ADOQuery1.Next; //다음 레코드로 이동한다.
end;
end;
참고 하시고요
즐코딩 하세요///....
신명진 wrote:
> 제가 작업하고 있는 환경은 sybase sql server manager 11.0.2와 Delphi5를 사용하고 있습니다. 제가 하려고 하는 작업은 db 데이타를 엑셀에 표시한 후 다시 엑셀에서 데이타를 db에 올리는 것입니다.
> 제가 여태까지 한 작업은 bde를 사용하여 dbgrid에 데이타를 표시한 후 엑셀에 표시한 것 까지는 했습니다. 반대로 엑셀에서 db에 올리는 작업을 해야 하는데 방법을 모르겠습니다. 제가 질문하고자 하는 것은
>
> 1.dbgrid에 엑셀 값을 표시할 수있는지, 있다면 그 방법과
>
> 2.굳이 dbgrid를 사용하지 않고 바로 ttable에 바로 적용할 수 있는지, 있다면 그 방법과
>
> 3.위의 방법은 아마 bde를 사용하는 방법이겠지요? 위의 방법이 되지 않는다면 ado component를 사용하는 방법이 있는 것 같은데 connectstring 설정이 쉽지 않네요. provider item을 보면 sybase를 지원할 수있는 것이 없더군요. sybase를 지원할 수 있는 odbc를 설치하였고 dsn을 만들어서 데이타 가져오는 것까지 테스트하였구요.
>
> 마지막으로 제가 올린 문제에 대한 해답을 주실때는 상세한 코딩을 곁들여주시면 고맙겠습니다.