1. °³¹ß/½ÇÇà Ç÷§Æû (1) OS : Windows Vista (2) °³¹ßÅø : Delphi embarcadero XE (3) »ç¿ë Database : Oracle XE 10g
2. °³¹ß ÁßÀÎ ÇÁ·Î±×·¥ ÇØ¿Ü ¹è¼Û°ü·Ã ¿¬µ¿ ÇÁ·Î±×·¥
3. Áú¹® ³»¿ë ÇØ¿Ü ±¸¸Å»çÀÌÆ®¿¡¼ ±¸¸ÅÆÄÀÏ(¿¢¼¿ÆÄÀÏ)À» ´Ù¿î¹Þ¾Æ µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇÏ¿© µ¥ÀÌÅ͸¦ °¡°øÁßÀÔ´Ï´Ù.
¿¢¼¿ÆÄÀÏÀ» uniquery(UniDac)·Î µ¥ÀÌÅÍ ÀԷ½à ÀϺ»¾î ƯÁ¤´Ü¾î°¡ ?·Î ÀúÀåµÇ´Â Çö»óÀÌ ¹ß»ýÇÕ´Ï´Ù. ÇØ´ç Çʵå´Â ÁÖ¼Ò Çʵå·Î ¿©±â´Â ¿µ¾î, Çѱ¹¾î, ÀϺ»¾îµî °¢±¹ÀÇ ¾ð¾î°¡ µé¾î°©´Ï´Ù.
¿À¶óŬ ¹®ÀÚ¼ÂÀº AL32UTF8, Å×À̺íÀÇ ÁÖ¼ÒÇʵå(ADDRESS1)´Â NVARCHAR2·Î ÀâÇôÀÖ½À´Ï´Ù.
procedure TSALE41IF.BtnSaveClick(Sender: TObject); var iField, iTot: Integer; iRow, iCol: Integer; sInsert, sInsHead, sInsField, sValues: String; sQuery : WideString; src:UTF8String;
begin //inherited;
iTot := HdrCtrCol.Sections.Count-1;
sInsert := ''; sInsHead := ''; sInsField := ''; sValues := ''; sInsHead := 'INSERT INTO SALE0001T_XLS ( ';
for iField := 1 to iTot do begin if iField = 1 then sInsField := HdrCtrCol.Sections.Items[iField].Text else sInsField := sInsField+', '+HdrCtrCol.Sections.Items[iField].Text; end;
sInsert := sInsHead+sInsField+') VALUES (';
try with cxShtExcel do begin for iRow := 0 to Sheet.RowCount - 1 do begin try sQuery := ''; sValues := ''; if Sheet.GetCellObject(0,iRow).Text = '' then begin Exit; end;
for iCol := 0 to iTot - 1 do begin if iCol = 0 then sValues := ''''+Sheet.GetCellObject(iCol,iRow).Text+'''' else if (iCol = 3) or (iCol = 4) or (iCol = 17) then //NVARCHAR2Çʵå begin src := ''; src := UTF8Encode(Sheet.GetCellObject(iCol,iRow).Text); sValues := sValues+',' +' N' +''''+src+'''' ; end else sValues := sValues+', '''+Sheet.GetCellObject(iCol,iRow).Text+''''; end; sQuery := sInsert+sValues+')';
if Not SetExcelToImport(sQuery) then Continue; except Continue; end; end; end; finally DisplayMsg_Ok('Import ¿Ï·á!','¿¢¼¿ÀÇ ¸ðµç ÀÚ·á°¡ Import µÇ¾ú½À´Ï´Ù.'); end; end;
function TSALE41IF.SetExcelToImport(Const sSQLText: String): Boolean; begin Result := False; try with qryTmp do begin Close; SQL.Clear; SQL.Add(sSQLText); ExecSQL;
if RowsAffected = -1 then Result := False else Result := True; Close; end; except Result := False; end; end;
sSQLText°ªÀº ¿¢¼¿ÆÄÀÏ ·çÇÁµ¹·Á °ªÀ» ¹Þ¾Æ ¿¹¸¦µé¾î ¾Æ·¡Ã³·³ µé¾î°©´Ï´Ù.
INSERT INTO SALE0001T_XLS ( ORDER_NO, ADDRESS1) VALUES ('249-3200-0007', N'渋ÍÛ区ÓÛ々ÙÊ5-9-8')
sSQLText¸¦ WideStringÀ¸·Î Çغ¸¾Æµµ °°Àº Çö»óÀÔ´Ï´Ù.
±×¸®°í Å×ÀÌºí¿¡ '渋ÍÛ区ÓÛ々ÙÊ5-9-8' °ªÀ» TOAD·Î ÀúÀå ÈÄ Á¶È¸½Ãµµ(uniquery,cxGrid) ƯÁ¤´Ü¾î ±úÁö³×¿ä.
Âü°í·Î uniqueryÀÇ sql¹®¿¡ Á÷Á¢ À§ÀÇ Insert¹®ÀåÀ» ºÙ¿©³Ö¾îµµ ÀϺ»¾î°¡ ±úÁý´Ï´Ù.
±ä±Û ÀоîÁּż °¨»çÇÏ¸ç »ç¼ÒÇÑ°ÍÀÌ¶óµµ ÁÁÀ¸´Ï Á¶¾ð ºÎŹµå¸³´Ï´Ù..
|