±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
Áú¹®°ú ´äº¯ Áú¹®°ú ´äº¯ ÀÔ´Ï´Ù.
±Û³»¿ë - Áú¹®°ú ´äº¯
 [Áú¹®]uniquery·Î insert½Ã, Á¶È¸½Ã Æ¯Á¤¹®ÀÚ ±úÁüÇö»ó
muserock
(ä°æ½Ä)
2017-06-22 ¿ÀÈÄ 3:38:05
1196ȸ Á¶È¸


µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
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¹®ÀåÀ» ºÙ¿©³Ö¾îµµ ÀϺ»¾î°¡ ±úÁý´Ï´Ù.

±ä±Û ÀоîÁּż­ °¨»çÇϸ砻ç¼ÒÇÑ°ÍÀ̶󵵠ÁÁÀ¸´Ï Á¶¾ð ºÎŹµå¸³´Ï´Ù..