±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
ÀÚÀ¯°Ô½ÃÆÇ ÀÚÀ¯°Ô½ÃÆÇ ÀÔ´Ï´Ù.
±Û³»¿ë - ÀÚÀ¯°Ô½ÃÆÇ
 ÄÚµåÀÇ °¡µ¶¼ºÀÌ ÁÁ´Ù´Â ±âÁØÀº ´ëü ¹»±î? 
ÁÖÁ¤¼·
(ÁÖÁ¤¼·)
2016-12-05 ¿ÀÀü 9:50:43
2062ȸ Á¶È¸


µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
µ¨ÆÄÀ̷ΠÇÁ·Î±×·¥À» ¸¸µé´Ùº¸¸é Á¾Á¾ TTable, TQuery°°Àº TDataset °´Ã¼ Àüü¸¦ ¹Ýº¹¹®À¸·Î µÚÁ®¾ßÇϴ ÄÚµùÀ» ÀÚÁÖ ÇÏ°Ô µÈ´Ù. µ¨ÆÄÀÌ ¸Å´º¾óÀ» º¸¸é ÀÌ °æ¿ì ´ë·« ´ÙÀ½°ú °°Àº ½ÄÀ¸·Î ÄÚµùÀ» Ç϶ó°í ±ÇÇÑ´Ù. 

var
  dataset : TDataset;
  bookmark : TBookmark;
  tot : Double;
begin
  bookmark := dataset.bookmark; // ÇöÀç ·¹ÄÚµå Æ÷ÀÎÆ® À§Ä¡ º¸°ü
  dataset.DisableControls;      // Á¦ÀÏ Áß¿äÇÑ ÄÚµå
  tot := 0;
  dataset.First;
  try
    while not dataset.Eof do begin
  // ·¹Äڵ带 Ã³¸®Çϴ ÇٽɠÄڵ堽ÃÀÛ
      tot := tot + dataset.FieldByName('somevalue').AsFloat; 
  // ÇٽɠÄڵ堳¡
      dataset.Next;
    end;
  finally
    dataset.Bookmark := bookmark; // ·¹ÄÚµå Æ÷ÀÎÆ® º¹¿ø
    dataset.EnableControls        // ¿ª½Ã Áß¿äÇÑ ÄÚµå
  end;
  
À§ Äڵ忡¼­ Çٽɠ·ÎÁ÷Àº tot := tot + dataset.FieldByName('somevalue').AsFloat; ÀÌ´Ù. ³ª¸ÓÁö ÄÚµå´Â ÀÌ Äڵ带 ¼öÇàÇϱâ À§ÇÑ ¼±ÈĠ󸮠ÄÚµå, Áï º¯µÎ¸® ÄÚµåÀÌ´Ù. º¯µÎ¸® ÄÚµå¶ó ÇÔÀº ¾î¶² ±â´ÉÀ» Ã³¸®Çϱâ À§Çؼ­ ¹Ýµå½Ã ÇÊ¿ä´Â ÇÏÁö¸¸, Çٽɠ·ÎÁ÷¿¡¼­´Â º°·Î Áß¿äÇÏÁö ¾ÊÀº Äڵ带 ¸»ÇÑ´Ù. ¾î¶µç »ó´ç¼öÀÇ µ¨ÆÄÀÌ °³¹ßÀÚµéÀÌ Àú·± Äڵ带 ÀÚÁÖ ÀÛ¼ºÇÒ °ÍÀÌ´Ù. ±×·±µ¥, ³ª ¿ª½Ã Àú·± Äڵ带 ¹Ýº¹ÀûÀ¸·Î ÀÛ¼ºÇÏ´Ù°¡ ¸Å¿ì Â¥Áõ³ª´Â °æÇèÀ» ÇÏ¿´´Ù. Á¾Á¾ Áß¿äÇÑ ¶óÀÎÀ» »©¸Ô´Â´Ù´Â °ÍÀÌ´Ù. 

¿¹¸¦ µé¾î dataset.DisableControls´Â ¸Å¿ì Áß¿äÇѵ¥µµ ºÒ±¸ÇÏ°í »©¸Ô°Å³ª, while dataset.Eof do ½ÄÀ¸·Î not À» »©¸Ô°Å³ª, ¸¶Áö¸· .EnableControls ¸¦ »©¸Ô°Å³ª, bookmark ÀúÀå ·ÎÁ÷À» »©¸Ô°Å³ª, dataset..Next ¸¦ »©¸Ô¾î¼­ ¹«ÇÑ ·çÇÁ¿¡ ºüÁö°Ô Çϴ µîÀÇ ½Ç¼ö´Ù. ¶Ç ±ÍÂú¾Æ¼­ Á¾Á¾ try finally ºí·°À» »ý·«Çϱ⵵ ÇÑ´Ù.

ÀÌ·± ½Ç¼ö¸¦ Çϸ頱נ¿øÀΠã±â°¡ ½¬¿ï ¶§µµ ÀÖÁö¸¸,  ¶§·Î´Â ¸Å¿ì ¾î·Á¿ï ¼öµµ ÀÖ´Ù. ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº ¼Ò½º·®ÀÌ Àå³­ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. ¾î·µç °£¿¡ Àú·± ½Ç¼ö¸¦ Çϸ頾µµ¥¾ø´Â µð¹ö±ë ¶§¹®¿¡ ½Ã°£³¶ºñ°¡ ¹ß»ýÇÑ´Ù. ³» °æÇè¿¡ ÀÇÇϸé DisableControls¿Í EnableControlsÀǠ¦ÀÌ ¾È¸Â¾Æ¼­ ÇÑÂü µ¿¾È µð¹ö±ëÇϴ °³¹ßÀÚ¸¦ º» Àûµµ ÀÖ°í,  DisableControls¿Í EnableControls¸¦ ¿ÏÀüÈ÷ »ý·«Çؼ­ ³¶Æи¦ ´çÇÑ °³¹ßÀÚ¸¦ º» Àûµµ ÀÖ´Ù. DisableControls¿Í EnableControls¸¦ Àý´ë·Î ¿ì½À°Ô º¸¸é ¾ÈµÈ´Ù. Àú°Å »©¸ÔÀ¸¸é Èñ¾ÈÇÑ ¿À·ù¸¦ ´çÇÒ ¼ö ÀÖ´Ù. ºÏ¸¶Å© ¿ª½Ã ¸¶Âù°¡Áö´Ù.

°³¹ßÀڷμ­ µð¹ö±ëÀ» ÇÇÇÒ ¼ö´Â ¾øÁö¸¸, °¡±ÞÀû µð¹ö±ë ½Ã°£À» ÁÙÀ̸頻ý»ê¼ºÀÌ Çâ»óµÈ´Ù´Â °ÍÀÌ °³¹ß ¼±¹èµéÀÇ ÁֵȠ±Ç°í»çÇ×À̱⿡, Àú·± ÇãÁ¢ÇÑ ½Ç¼ö¸¦ ¾î¶»°Ô Çϸé ÇÇÇÒ ¼ö ÀÖÀ»±î °í¹ÎÇÏ´Ù ´ÙÀ½°ú °°Àº ¹æ½ÄÀ» ¸¸µé¾ú´Ù. 

tot := 0;
Duck(dataset).First().Execute(
   procedure begin
      tot := tot + dataset.FieldByName('somevalue').asFloat;
   end );

Duck(dataset)Àº ´Ð È£Áö½º°¡ ¾´ Ã¥ ³»¿ë Áß¿¡, Duck Å¸ÀÌÇο¡ ¿µ°¨À» ¹Þ¾Æ¼­ ¸¸µç ÇÔ¼ö´Ù. Duck()´Â Fluent ÇÔ¼ö È£Ãâ°ú À͸íÇÔ¼ö¸¦ ÀÌ¿ëÇÑ´Ù. Duck ÇÔ¼ö´Â ºÏ¸¶Å© º¸°ü, DisableControls, EnableControls, .Next È£ÃâÀ» ¾Ë¾Æ¼­ Ã³¸®ÇÑ´Ù. Duck ÇÔ¼ö¸¦ ¸¸µç ´ÙÀ½ ³ª´Â Àú ÇÔ¼ö¸¦ ¸Å¿ì ¾Ö¿ëÇÏ°Ô µÇ¾ú´Ù. ÄÚµù·®µµ ÈξÀ ÁÙ¾îµé°í ¾û¶×ÇÑ ½Ç¼öµµ ÁÙ¾îµé°í, °¡Àå ÁÁÀº Á¡Àº, ·¹Äڵ带 Ã³¸®Çϴ Çٽɠ·ÎÁ÷ÀÌ È®¿¬È÷ µå·¯³­´Ù´Â °ÍÀÌ´Ù. 

±×·±µ¥, ³ª´Â ³»°¡ ¸¸µç ¶óÀ̺귯¸® Äڵ带 ³²ÇÑÅ× º¸¿©ÁÖ°í, ÀÌ°Å ±¦ÂúÁö ¾Ê³Ä¶ó´Â Áú¹®À» Áñ±â´Â ÀھƵµÃ뺴ÀÌ ÀÖ´Ù. ±×·¡¼­, Àú Duck ÇÔ¼ö¸¦ ¸î¸î ´Ù¸¥ µ¨ÆÄÀÌ °³¹ßÀڵ鿡°Ô º¸¿©Áá´õ´Ï, ±× ¹ÝÀÀÀÌ ÂüÀ¸·Î Èñ¾ÈÇÏ¿´´Ù. 

¾î¶² °³¹ßÀڴ Çü´Ô Á÷À̳׿ä, ±â¶Ë Âý´Ï´Ù¿ä Çϴ Âù»ç¸¦ ´øÁö´Â°¡ Çϸé, ¾î¶² °³¹ßÀڴ Çü´Ô Àú·¸°Ô ÄÚµùÇϸ頰¡µ¶¼ºÀÌ ¶³¾îÁý´Ï´Ù ¶ó¸é¼­ °í°³¸¦ Àý·¡Àý·¡ Èçµå´Â °ÍÀ̾ú´Ù. ¹®Á¦´Â °í°³¸¦ Àý·¡Àý·¡ Èçµé¸é¼­ °¡µ¶¼ºÀÌ ¶³¾îÁý´Ï´Ù¿ä ¶ó´Â °³¹ßÀÚµéÀÌ ²Ï ÀÖ¾ú´Ù´Â °ÍÀÌ´Ù. 

´ëü Äڵ堰¡µ¶¼ºÀÇ Á¤ÀÇ°¡ ¹»±î? 

1. º¯µÎ¸® Äڵ堾øÀÌ, Çٽɸ¸ µå·¯³ª´Â °£·«ÇÑ ÄÚµå? 

2. ÁÖ±¸¸® Àåâ º¯µÎ¸® Äڵ带 ³ª¿­ÇÏ´õ¶óµµ µ¨ÆÄÀÌ ¸Å´º¾ó´ë·Î ±æ°Ô ÀÛ¼ºÇÑ ÄÚµå?

3. º»ÀÎÀÇ ½Ç·Â ¼öÁØ¿¡¼­ ÀÌÇØ °¡´ÉÇÑ ÄÚµå?

2. 3 ¹ø° ¹æ½ÄÀÌ °¡µ¶¼ºÀÌ ÁÁÀº ÄÚµå¶ó¸é, ³»°¡ µ¨ÆÄÀÌ °­Á¿¡¼­ ¼Ò°³ÇÑ Managed<T> ¿ª½Ã °¡µ¶¼ºÀÌ ¶³¾îÁö´Â ¹æ½ÄÀÌ ¾Æ´Ò±î? ÆÇ´ÜÀº ¿©·¯ºÐÀÇ ¸òÀÌ´Ù. ¾î¶µç ³ª´Â Duck(dataset) ¹æ½ÄÀÌ ÁÁ´Ù°í ¹Ï±â¿¡, ¾ÕÀ¸·Îµµ Àú ¹æ½ÄÀ» °í¼öÇÒ °ÍÀÌ´Ù. ³ª´Â Äڵ尡 °£°áÇÒ¼ö·Ï °¡µ¶¼ºÀÌ ÁÁ´Ù°í ¹Ï´Â´Ù. ³ª´Â ±ä Äڵ带 ¸Å¿ì ½È¾îÇϴ ¸Þ¸à¶Ç Çü °³¹ßÀÚÀ̱⠶§¹®ÀÌ´Ù.