µ¨ÆÄÀÌ·Î ÇÁ·Î±×·¥À» ¸¸µé´Ùº¸¸é Á¾Á¾ 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) ¹æ½ÄÀÌ ÁÁ´Ù°í ¹Ï±â¿¡, ¾ÕÀ¸·Îµµ Àú ¹æ½ÄÀ» °í¼öÇÒ °ÍÀÌ´Ù. ³ª´Â Äڵ尡 °£°áÇÒ¼ö·Ï °¡µ¶¼ºÀÌ ÁÁ´Ù°í ¹Ï´Â´Ù. ³ª´Â ±ä Äڵ带 ¸Å¿ì ½È¾îÇÏ´Â ¸Þ¸à¶Ç Çü °³¹ßÀÚÀ̱⠶§¹®ÀÌ´Ù.
|