DAO µ¥ÀÌÅͺ£À̽º Ŭ·¡½º¿¡ ´ë ÇÑ TN053: »ç¿ëÀÚ Á¤ÀÇ DFX ·çƾ

ÀÌ ±â¼ú ³ëÆ®¿¡¼­´Â DAO ·¹ÄÚµå ÇÊµå ±³È¯ (DFX) ¸ÞÄ¿´ÏÁòÀ» ¼³¸íÇÕ´Ï´Ù. DFX ·çƾ¿¡¼­ ¹«½¼ ÀÏÀÌ ÀϾ´Â°¡ ÀÌÇØ ÇÏ·Á¸é DFX_Text ÇÔ¼ö ¿¹Á¦·Î ÀÚ¼¼È÷ ¼³¸í ÇϰڽÀ´Ï´Ù. ÀÌ ±â¼ú ³ëÆ® Á¤º¸ÀÇ Ãß°¡ ¿øº»À¸·Î °Ë»çÇÒ ¼ö ÀÖ½À´Ï´Ù ´Ü¼øÈ÷ Äڵ带 ´Ù¸¥ °³º° DFX ÇÔ¼ö.´ç½ÅÀº ¾Æ¸¶ ÇÊ¿ä ÇÏÁö ¾Ê½À´Ï´Ù »ç¿ëÀÚ Á¤ÀÇ DFX ·çƾ ÀÚÁÖ »ç¿ëÀÚ ÁöÁ¤ RFX ·çƾ (ODBC µ¥ÀÌÅͺ£À̽º Ŭ·¡½º¿Í ÇÔ²² »ç¿ë) ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

ÀÌ ±â¼ú ³ëÆ® Æ÷ÇÔ:

DFX °³¿ä

DAO ·¹ÄÚµå ÇÊµå ±³È¯ ¸ÞÄ¿´ÏÁò (DFX) °Ë»ö ¹× CDaoRecordset Ŭ·¡½º¸¦ »ç¿ë ÇÏ´Â °æ¿ì µ¥ÀÌÅ͸¦ ¾÷µ¥ÀÌÆ® ÇÏ´Â ÀýÂ÷¸¦ ´Ü¼øÈ­ Çϱâ À§ÇØ »ç¿ë µË´Ï´Ù. ÇÁ·Î¼¼½º´Â CDaoRecordset Ŭ·¡½ºÀÇ µ¥ÀÌÅÍ ¸â¹öÀÇ »ç¿ëÀ» ÅëÇØ °£¼ÒÈ­ µË´Ï´Ù. CDaoRecordset¿¡¼­ ÆÄ»ý ÇÏ ¿© ÆÄ»ýµÈ Ŭ·¡½º¸¦ ³ªÅ¸³»´Â Å×ÀÌºí ¶Ç´Â Äõ¸®ÀÇ °¢ Çʵ忡 µ¥ÀÌÅÍ ¸â¹ö¸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ "Á¤Àû ¹ÙÀεù" ¸ÞÄ¿´ÏÁòÀº °£´Ü ÇÕ´Ï´Ù, ÇÏÁö¸¸ ±×°ÍÀº ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ë ÇÑ ¼±ÅÃÀÇ µ¥ÀÌÅÍ ¹ÝÀÔ/update ¸Þ¼­µå µÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. DFX´Â ÇöÀç ·¹Äڵ尡 º¯°æ µÉ ¶§¸¶´Ù ¸ðµç ¹Ù¿îµå Çʵ带 °Ë»ö ÇÕ´Ï´Ù. ÅëÈ­ º¯°æ µÉ ¶§ ¸ðµç Çʵ带 °¡Á®¿À´Â ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â ¼º´É¿¡ ¹Î°¨ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥À» °³¹ß ÇÏ´Â °æ¿ì ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù "µ¿Àû ¹ÙÀεù" CDaoRecordset::GetFieldValue ¿Í CDaoRecordset::SetFieldValue ¸¦ ÅëÇØ µ¥ÀÌÅÍ ¾×¼¼½º ¼±Åà ¹æ¹ý¡£

¸Þ¸ðnbsp;??DFX¿Í µ¿Àû ¹ÙÀεù µÇÁö »óÈ£ ¹èŸÀûÀÎ Á¤Àû ¹× µ¿Àû ¹ÙÀεù »ç¿ë ÇÏ´Â ÇÏÀ̺긮µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù(&N).

¿¹Á¦ 1-DAO ·¹ÄÚµå ÇÊµå ±³È¯¸¸ÀÇ »ç¿ë

(°¡Á¤ CDaoRecordset -ÆÄ»ýµÈ Ŭ·¡½º CMySet ÀÌ¹Ì ¿­·Á)

/ / Customers Å×ÀÌºí¿¡ »õ ·¹Äڵ带 Ãß°¡
mysetÀÔ´Ï´Ù.AddNew();
myset.m_strCustID = _T("MSFT");
myset.m_strCustName = _T("Microsoft");
mysetÀÔ´Ï´Ù.ÇØ½¬

¿¹Á¦ 2-»ç¿ë¸¸ µ¿Àû ¹ÙÀεù

(°¡Á¤ CDaoRecordset Ŭ·¡½º¸¦ »ç¿ë ÇÏ ¿© rs , ±×°ÍÀº ÀÌ¹Ì ¿­·Á)

/ / Customers Å×ÀÌºí¿¡ »õ ·¹Äڵ带 Ãß°¡
COleVariantnbsp; varFieldValue1 (_T("MSFT"), VT_BSTRT);
/ / Âü°í: VT_BSTRT ±âº» À¯´ÏÄÚµå ´ë½Å ANSI·Î string Çü½Ä Ç÷¡±×
COleVariant varFieldValue2 (_T("Microsoft"), VT_BSTRT);
rsÀÔ´Ï´Ù.AddNew();
rsÀÔ´Ï´Ù.SetFieldValue(_T("Customer_ID"), varFieldValue1);
rsÀÔ´Ï´Ù.SetFieldValue(_T("Customer_Name"), varFieldValue2);
rsÀÔ´Ï´Ù.ÇØ½¬(&N)

¿¹Á¦ 3-DAO ·¹ÄÚµå ÇÊµå ±³È¯ ¹× µ¿Àû ¹ÙÀεù »ç¿ë

(°Ë»ö Á÷¿ø µ¥ÀÌÅÍ·Î CDaoRecordset°¡Á¤-ÆÄ»ý Ŭ·¡½º emp )

/ / Ç¥½Ã µÉ ¼ö ÀÖµµ·Ï Á÷¿øÀÇ µ¥ÀÌÅ͸¦ ¾òÀ»
empÀÔ´Ï´Ù.MoveNext();

/ / »ç¿ëÀÚ°¡ Á÷¿øÀÇ »çÁøÀ» º¸°í ½Í¾î ÇÏ´Â °æ¿ì
/ / ±×°ÍÀ» ÀÎÃâ
COleVariant varPhoto;
°æ¿ì (bSeePicture)
empÀÔ´Ï´Ù.GetFieldValue(_T("photo"), varPhoto);

/ / µ¥ÀÌÅÍ Ç¥½Ã
PopUpEmployeeData (emp.m_strFirstName,
 emp.m_strLastName, varPhoto)

DFX ÀÛµ¿ ÇÏ´Â ¹æ¹ý

DFX ¸ÞÄ¿´ÏÁò Ȱ¿ë ÇÏ´Â MFC ODBC Ŭ·¡½º¿¡ ÀÇÇØ ·¹ÄÚµå Çʵå RFX (±³È¯) ¸ÞÄ¿´ÏÁòÀ» ºñ½ÁÇÑ ¹æ½ÄÀ¸·Î ÀÛµ¿ ÇÕ´Ï´Ù. RFX¿Í DFX priciples µ¿ÀÏ ÇÏÁö¸¸ ¼ö¸¹Àº ³»ºÎ Â÷ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù. DFX ÇÔ¼ö µðÀÚÀÎ °³º° DFX ·çƾ¿¡ ÀÇÇØ °øÀ¯ µÇ´Â »ç½Ç»ó ¸ðµç ÄÚµå µî À̾ú´Ù. ÃÖ°í ¼öÁØÀÇ DFX¸¸ ¾Ê½À´Ï´Ù ¸î °¡Áö¡£

DFXÀÇ ÇÙ½É ¸ÞÄ¿´ÏÁò CDaoRecordset ÆÄ»ý Ŭ·¡½ºÀÇ DoFieldExchange ÇÔ¼öÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ÀûÀý ÇÑ ÀÛ¾÷ À¯ÇüÀÇ °³º° DFX ÇÔ¼ö¸¦ È£ÃâÀ» µð½ºÆÐÄ¡ÇÕ´Ï´Ù. ³»ºÎ MFC DoFieldExchange ¸¦ È£Ãâ Çϱâ Àü¿¡ ÇÔ¼ö ÀÛ¾÷ À¯ÇüÀ» ¼³Á¤ ÇÕ´Ï´Ù. ´ÙÀ½ ¸ñ·ÏÀº ´Ù¾ç ÇÑ ÀÛ¾÷ Á¾·ù ¹× °£´ÜÇÑ ¼³¸í¡£

ÀÛ¾÷ ¼³¸í
AddToParameterList ¸Å°³ º¯¼ö ÀýÀ» ºôµå
AddToSelectList ºôµå SELECT Àý
BindField ¹ÙÀεù ±¸Á¶¸¦ ¼³Á¤
BindParam ¸Å°³ º¯¼ö °ª ¼³Á¤
¼öÁ¤ NULL »óÅ ¼³Á¤
AllocCache ´õ·¯¿î °Ë»ç¿¡ ´ë ÇÑ Ä³½Ã¸¦ ÇÒ´ç
StoreField ÇöÀç ·¹Äڵ尡 ij½Ã¿¡ ÀúÀå
LoadField ¸â¹ö °ªÀ» º¹¿ø ij½Ã
FreeCache ij½Ã¸¦ ÇØÁ¦
SetFieldNull ¼³Á¤ ÇÊµå »óÅ amp; NULL °ª(&A)
MarkForAddNew Ç¥½Ã ÇÊµå ´õ·¯¿î ¾Æ´Ï¶ó¸é ÀÇ»ç NULL
MarkForEdit Ç¥½Ã ÇÊµå ´õ·¯¿î °æ¿ì ij½Ã¸¦ ÀÏÄ¡ ÇÏÁö ¾Ê½À´Ï´Ù.
SetDirtyField ¼³Á¤ Çʵå Ä¿¹ÔµÇÁö ¾ÊÀº °ÍÀ¸·Î Ç¥½Ã ÇÏ´Â °ª

´ÙÀ½ ¼½¼Ç¿¡¼­ °¢ ÀÛ¾÷ ¼³¸í ÇϰڽÀ´Ï´Ù ÀÚ¼¼È÷ DFX_Text ¿¡ ´ë ÇÑ¡£

DAO ·¹ÄÚµå ÇÊµå ±³È¯ ÇÁ·Î¼¼½º¿¡ ´ë ÇÑ ÀÌÇØ¸¦ °¡Àå Áß¿ä ÇÑ ±â´ÉÀº ICDaoRecordset °³Ã¼ÀÇ GetRows ÇÔ¼ö¸¦ »ç¿ë ÇÕ´Ï´Ù. DAO GetRows ÇÔ¼ö´Â ¿©·¯ °¡Áö ¹æ¹ýÀ¸·Î ÀÛ¾÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±â¼ú ³ëÆ®´Â °£·«ÇϰԸ¸ ¼³¸í GetRows ÀÌ ±â¼ú ³ëÆ®ÀÇ ¹üÀ§¸¦ ¹þ¾î³µ½À´Ï´Ù.

DAO getrows¿¡¼­´Â ¿©·¯ °¡Áö ¹æ¹ýÀ¸·Î ÀÛ¾÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

»ç¿ëÀÚ Á¤ÀÇ DFX ·çƾÀº ¹«¾ùÀԴϱî

±×°ÍÀº DFX ÇÔ¼ö¿¡¼­ ±¸Çö ÇÏ´Â °¡Àå Áß¿ä ÇÑ ÀÛ¾÷Àº ¼º°øÀûÀ¸·Î GetRows¸¦ È£Ãâ ÇÏ·Á¸é ÇÊ¿äÇÑ µ¥ÀÌÅÍ ±¸Á¶¸¦ ¼³Á¤ ÇÏ´Â ±â´É ÇØ¾ß ÇÕ´Ï´Ù.ÀÌ Åä·Ð¿¡¼­ ¸í¹éÇÑ. DFX ÇÔ¼ö »Ó¸¸ ¾Æ´Ï¶ó, Áö¿ø ÇØ¾ß ÇÏ´Â ´Ù¸¥ ÀÛ¾÷ÀÇ ¹øÈ£ ÇÏÁö¸¸ ¾Æ¹«µµ Áß¿ä Çѵµ Á¦´ë·Î GetRows ¿¡ ´ë ÇÑ Áغñ·Î º¹Àâ ÇÑÀ¸·Î ÀüÈ­¡£

DFX »ç¿ë ÇÏ ¿© ¿Â¶óÀÎ ¼³¸í¼­¿¡ ¼³¸í µÇ¾î ÀÖ½À´Ï´Ù. ±âº»ÀûÀ¸·Î, °Å±â¿¡ 2 ¿ä±¸ »çÇ×. ù°, °¢ ¹ÙÀεùµÈ ÇÊµå ¹× ¸Å°³ º¯¼ö CDaoRecordset ÆÄ»ý Ŭ·¡½º¿¡ ¸â¹ö¸¦ Ãß°¡ ÇØ¾ß ÇÕ´Ï´Ù. ´ÙÀ½ÀÌ CDaoRecordset::DoFieldExchange ÀçÁ¤ÀÇ ÇØ¾ß ÇÕ´Ï´Ù. µ¥ÀÌÅÍ ¸â¹öÀÇ Çü½ÄÀ» À¯ÀÇ ÇÏ´Â °ÍÀÌ Áß¿ä ÇÕ´Ï´Ù. ±×°ÍÀº µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â ÇʵåÀÇ µ¥ÀÌÅÍ¿Í ÀÏÄ¡ ÇØ¾ß ¶Ç´Â Àû¾îµµ ÇØ´ç À¯Çü¿¡ convertable µÉ. Long integer¿Í °°Àº µ¥ÀÌÅͺ£À̽ºÀÇ ¿¹¸¦ µé¾î ¼ýÀÚ Çʵ带 ÅØ½ºÆ®·Î º¯È¯ ÇÏ °í CString ¸â¹ö¿¡ ¹ÙÀεùµÈ Ç×»ó ¼ö ÇÏÁö¸¸ µ¥ÀÌÅͺ£À̽ºÀÇ ÅØ½ºÆ® Çʵå Á¤¼ö (long)¿Í °°Àº ¼ýÀÚ Ç¥ÇöÀ¸·Î º¯È¯ ÇÏ °í long Á¤¼ö¸¦ ¸â¹ö¿¡ ¹ÙÀεùµÈ ¹Ýµå½Ã ÀÖ½À´Ï´Ù. DAO¿Í Microsoft Jet µ¥ÀÌÅͺ£À̽º ¿£ÁøÀº º¯È¯ (´ë½Å MFC)¿¡ ´ë ÇÑ Ã¥ÀÓÀÌ¡£

Dfx_textÀÇ ¼¼ºÎ »çÇ×

¾Õ¿¡¼­ ¼³¸í Çß µíÀÌ, ¾Æ¸¶ DFX ÀÛµ¿ ÇÏ´Â ¹æ¹ýÀ» ¼³¸í ÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ýÀº ´Ü¼øÈ÷ ¿¹¸¦ ÅëÇØ ÀÛµ¿ ÇÏ´Â. ÀÌ ¸ñÀûÀ» À§ÇØ DFX_Text ³»ºÎ¸¦ Åë°ú ÇØ¾ß ¾ÆÁÖ Àß ÀÛµ¿ DFXÀÇ Àû¾îµµ ±âº»ÀûÀÎ ÀÌÇØ¸¦ Á¦°ø ÇÏ´Â µ¥¡£

AddToParameterList

ÀÌ ÀÛ¾÷Àº SQL ¸Å°³ º¯¼ö Àý ºôµå (" Parameters lt;param name>, <param type> ... ; ") Jet¿¡ ÇÊ¿äÇÑ. °¢ ¸Å°³ º¯¼ö ¶ó´Â À̸ç RFX È£Ãâ¿¡ ÁöÁ¤ µÈ) (·Î Çü½ÄÈ­ µË´Ï´Ù. °³º° Çü½Ä À̸§ ÂüÁ¶¸¦ CDaoFieldExchange::AppendParamType ÇÔ¼ö ÇÔ¼ö¸¦ ÂüÁ¶ ÇϽʽÿÀ. DFX_TextÀÇ °æ¿ì¿¡ »ç¿ë µÇ´Â Çü½ÄÀÌtext¡£

AddToSelectList

¼±Åà SQL ÀýÀ» ÀÛ¼ºÇÕ´Ï´Ù. À̰ÍÀº ²Ï °ðÀå ¾ÕÀ¸·Î DFX È£Ãâ ÇÏ ¿© ÁöÁ¤ µÈ ¿­ À̸§Àº ´Ü¼øÈ÷ Ãß°¡ (" SELECT lt;column name>, ... ")¡£

BindField

-Áö±Ý±îÁö ´ëºÎºÐÀÇ ÀÛ¾÷ÀÇ º¹Àâ ÇÑ. µíÀÌ À̰ÍÀÌ GetRows ¿¡¼­ »ç¿ë ÇÏ´Â DAO ¹ÙÀεù ±¸Á¶¸¦ ¼³Á¤ µË´Ï´Ù. DFX_Text Äڵ忡¼­ º¼ ¼ö ÀÖ´Â Á¾·ùÀÇ Á¤º¸ ±¸Á¶¸¦ DAO À¯ÇüÀÌ Æ÷ÇÔ »ç¿ë (DAO_CHAR ¶Ç´Â DAO_WCHAR DFX_TextÀÇ °æ¿ì). ¶ÇÇÑ, »ç¿ë ÇÏ´Â ¹ÙÀεùÀÇ Á¾·ù´Â ¶ÇÇÑ ¼³Á¤ µË´Ï´Ù. ÀÌÀü ¼½¼Ç¿¡¼­ GetRows ´Â °£·«ÇϰԸ¸ ¼³¸í Çß´Ù ÇÏÁö¸¸ MFC¿¡¼­ »ç¿ë ÇÏ´Â ¹ÙÀεù À¯ÇüÀ» Á÷Á¢ ÁÖ¼Ò ¹ÙÀεù (DAOBINDING_DIRECT)Àº Ç×»ó ¼³¸í Çϱ⿡ ÃæºÐ Çß´Ù. ¶ÇÇÑ ( DFX_Text)¿Í °°Àº °¡º¯ ±æÀÌ ¿­ ¹ÙÀεù MFC ¸Þ¸ð¸® ÇÒ´çÀ» Á¦¾î ÇÏ °í ¿Ã¹Ù¸¥ ±æÀÌÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÄÝ¹é ¹ÙÀεùÀÌ »ç¿ë µË´Ï´Ù. ÀÌ Àǹ̴ MFC°¡ DAO "where" µû¶ó¼­ ¸â¹ö º¯¼ö¿¡ Á÷Á¢ ¹ÙÀεùÇÒ ¼ö ÀÖµµ·Ï µ¥ÀÌÅ͸¦ ³Ö¾î ¸»ÇÒ Ç×»ó ¼ö ÀÖ½À´Ï´Ù. ¹ÙÀεù ±¸Á¶ÀÇ ³ª¸ÓÁö ¸Þ¸ð¸® ÇÒ´ç Äݹé ÇÔ¼ö ÁÖ¼Ò ¿­ ¹ÙÀεù (¹ÙÀεù ¿­ À̸§)ÀÇ Á¾·ù °°Àº °Í µéÀ¸·Î °¡µæ¡£

BindParam

À̰ÍÀº ¸Å°³ º¯¼ö ¸â¹ö¿¡ ÁöÁ¤ µÈ ¸Å°³ º¯¼ö °ª°ú ÇÔ²² SetParamValue ¸¦ È£Ãâ ÇÏ´Â °£´ÜÇÑ ÀÛ¾÷¡£

¼öÁ¤

°¢ Çʵ忡 ´ë ÇÑ NULL »óÅ¿¡¼­ ä¿ì±â¡£

SetFieldNull

ÀÌ ÀÛ¾÷¸¸ NULL ·Î °¢ ÇʵåÀÇ »óŸ¦ Ç¥½Ã ÇÏ °í PSEUDO_NULL À» ¸â¹ö º¯¼öÀÇ °ªÀ¸·Î ¼³Á¤¡£

SetDirtyField

°¢ Çʵ忡 ´ë ÇÑ È£Ãâ SetFieldValue ´õ·¯¿î Ç¥½Ã¡£

¸ðµç ³²Àº ÀÛ¾÷¸¸ µ¥ÀÌÅÍ Ä³½Ã¸¦ »ç¿ë ÇÏ ¿© ó¸® ÇÕ´Ï´Ù. µ¥ÀÌÅÍ Ä³½Ã´Â ƯÁ¤ °Í µéÀ» °£´Ü ÇÏ °Ô ÇÏ´Â µ¥ »ç¿ë ÇÏ´Â ÇöÀç ·¹Äڵ忡 ÀÖ´Â µ¥ÀÌÅÍÀÇ Ãß°¡ ¹öÆÛÀÔ´Ï´Ù. ¿¹¸¦ µé¾î "´õ·¯¿î" Çʵå ÀÚµ¿À¸·Î °Ë»ö µÉ ¼ö ÀÖ½À´Ï´Ù. ¿Â¶óÀÎ ¼³¸í¼­¿¡¼­ ¼³¸íÇÑ ´ë·Î ¿ÏÀüÈ÷ ¶Ç´Â ÇÊµå ¼öÁØ¿¡¼­ ÇØÁ¦ µÇ¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Áöµµ »ç¿ë ÇÏ´Â ¹öÆÛÀÇ ±¸Çö. ÀÌ Áöµµ "¹Ù¿îµå" Çʵå (¶Ç´Â CDaoRecordset derieved µ¥ÀÌÅÍ ¸â¹ö)ÀÇ ÁÖ¼Ò¿Í ÇÔ²² µ¥ÀÌÅÍÀÇ µ¿ÀûÀ¸·Î ÇÒ´ç µÈ º¹»çº»À» ÀÏÄ¡ ½ÃŰ´Â µ¥ »ç¿ë¡£

AllocCache

µ¿ÀûÀ¸·Î ij½Ã µÈ ÇÊµå °ªÀ» ÇÒ´ç ÇÏ °í Áöµµ Ãß°¡¡£

FreeCache

ij½Ã µÈ ÇÊµå °ªÀ» »èÁ¦ ÇÏ °í Áöµµ¿¡¼­ Á¦°Å¡£

StoreField

ÇöÀç ÇÊµå °ªÀÌ µ¥ÀÌÅÍ Ä³½Ã¿¡ º¹»ç¡£

LoadField

ij½Ã µÈ °ªÀÌ ÇÊµå ¸â¹ö¿¡ º¹»ç¡£

MarkForAddNew

ÇöÀç ÇÊµå °ªÀÌ ¾Æ´Ñ °æ¿ì È®ÀÎ-NULL ¹× ÇÊ¿äÇÑ °æ¿ì ´õ·¯¿î ¸¶Å©¡£

MarkForEdit

µ¥ÀÌÅÍ Ä³½Ã¸¦ »ç¿ë ÇÏ ¿© ÇöÀç ÇÊµå °ªÀ» ºñ±³ ÇÏ °í ÇÊ¿äÇÑ °æ¿ì ´õ·¯¿î Ç¥½Ã¡£

ÆÁnbsp;??»ç¿ëÀÚ Á¤ÀÇ DFX ·çƾ Ç¥ÁØ µ¥ÀÌÅÍ Çü½Ä¿¡ ´ë ÇÑ ±âÁ¸ DFX ·çƾ¿¡ ¸ðµ¨(&N)¡£

±â¼ú ³ëÆ® ¹øÈ£·Î |nbsp; Ä«Å×°í¸®º° ±â¼ú ³ëÆ®(&N)

Index