«á¤@­¶
«e¤@­¶
¦^¥Ø¿ý
¦^­º­¶
²Ä¤Q¤­³¹¡@¼Æ¾Ú¦s¨ú³¡¥óªºÀ³¥Î¤Îµ{¦¡³]­p¡]¤G¡^

15.3.6 ¼Æ¾Ú¶°³¡¥óªº¨Æ¥ó¡@

    ¼Æ¾Ú¶°³¡¥óTTable©ÎTQuery¨ã¦³«Ü¦hªº¨Æ¥ó¡C¬°³o¨Ç¨Æ¥ó½s¼g¬ÛÀ³ªºµ{¦¡¥N½X¥i¥H¶i¦æ¦³®Ä©ÊÅçÃÒ¡B­pºâ¥i­pºâÄæ¦ìªº­È¡B½T»{¹ï¸ê®Æ®wªíªº¦hºØ¾Þ§@µ¥µ¥¡C³o¨Ç¨Æ¥ó¤Î¨ä´y­z¦pªí15.4©Ò¥Ü¡C¡@

ªí15.4 ¼Æ¾Ú¶°³¡¥ó±`¥Îªº¨Æ¥ó

¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w

¨Æ ¥ó ´y ­z

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

BeforeOpen,Afteropen ¦b¼Æ¾Ú¶°³¡¥ó³Q¥´¶}¤§«e/¤§«á³QIJµo

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

BeforeClose,Afterclose ¦b¼Æ¾Ú¶°³¡¥ó³QÃö³¬¤§«e/¤§«á³QIJµo

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

BeforeInsert,AfterInsert ¦b¼Æ¾Ú¶°³¡¥ó¶i¤J´¡¤Jª¬ºA¤§«e/¤§«á³QIJµo

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

BeforeEdit,AfterEdit ¦b¼Æ¾Ú¶°³¡¥ó³Q½s¿è¤§«e/¤§«á³QIJµo

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

BeforePost,AfterPost ¦b¼Æ¾Ú¶°³¡¥ó§ë±H³Q­×§ïªº°O¿ý¤§«e/¤§«á³QIJµo

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

BeforeCancel,AfterCancel ¦b¼Æ¾Ú¶°³¡¥ó¨ú®ø«e¤@¨B¾Þ§@¤§«e/¤§«á³QIJµo

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

BeforeDelete,AfterDelete ¦b¼Æ¾Ú¶°³¡¥ó¸Ñ°£¥Ø«e°O¿ý¤§«e/¤§«á³QIJµo

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

OnNewRecord ·í«Ø¥ß¤@±ø·s°O¿ý®É³QIJµo

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

OnCalcFields ·í¬°ªí¤¤ªº­pºâÄæ¦ì­pºâÄæ¦ì­È®É³QIJµo

¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¡@

15.4 TTable³¡¥ó¤ÎÀ³¥Î¡@

¦b«e¤@¸`ùاڭ̤¶²Ð¤F¼Æ¾Ú¶°³¡¥óTTable ©MTQuery ªº¦@¦Pªº¤@¨ÇÄÝ©Ê©M¤èªk¡CTTable³¡¥ó¬ODelphi¸ê®Æ®wµ{¦¡³]­p¤¤­n¸g±`¨Ï¥Îªº³Ì­«­nªº³¡¥ó¤§¤@¡A¥¦¬O¸ê®Æ®wÀ³¥Îµ{¦¡¦s¨ú¸ê®Æ®w®É¥²¶·¨Ï¥Îªº¼Æ¾Ú¶°³¡¥ó¤§¤@¡A¦b³o¤@¸`ùØ¡A§Ú­Ì­«ÂI¤¶²ÐTTable³¡¥ó¯S¦³ªºÄÝ©Ê©M¤èªk¡ATTable³¡¥ó©Ò¦³ªºÄÝ©Ê¡B¤èªk©M¨Æ¥ó³£¥i¥H¦b³s½u»²§U±Ô­z¤¤¬d¨ì¡C¡@

15.4.1 TTabel³¡¥ó¥D­nªºÄÝ©Ê¡@

DatabaseNameÄÝ©Ê©MTableNameÄÝ©Ê¡G

DatabaseNameÄݩʬO±Ô­z¸ê®Æ®wÀ³¥Îµ{¦¡©Ò¾Þ§@ªº¸ê®Æ®wªº¦W¦r¡A¥¦¥i¥H¬O¥ÑBDE©w¸qªº¸ê®Æ®wªº§O¦W¡BÅ㦡±Ô­zªº¸ê®Æ®w¤å¥ó©Ò¦bªººÏºÐ¸ô®|©ÎªÌ¥ÑTDatabase³¡¥ó©w¸qªº¤@­Ó¸ê®Æ®w¦W¡CDatabaseNameÄݩʱ`±`¬O¤@­Ó¥ÑBDE©w¸qªº¸ê®Æ®wªº§O¦W¡C¨Ï¥Î¥ÑBDE©w¸qªº¸ê®Æ®wªº§O¦W¥N´À¸ê®Æ®w¹ê»Ú©Ò¦bªº¸ô®|©M¦W¦r¡A¦n³B¬O·í¹ê»Úªº¸ê®Æ®w¦s©ñªº¦ì¸mµo¥ÍÅܤƮɡA¥u»Ý§Q¥ÎBDE²³æ¦a³]©w¤@¤U¸Ó¸ê®Æ®wªº§O¦W¡A¦Ó¸ê®Æ®wÀ³¥Îµ{¦¡µL»Ý­×§ï¡C¦³ÃöBDEªº¨Ï¥Î½Ð°Ñ¬ÝBDEªº³]©wÀ³¥Î¡CTabelNameÄݩʥΥH±Ô­z¥Ø«eTTable³¡¥ó©Ò³s±µªº¹ê»Úªº¸ê®Æ®wªí¡C³o¨â­ÓÄݩʤ@¯ë³£¦b³]­p¶¥¬q«ü©w¡A·íµM¦bµ{¦¡°õ¦æ¹Lµ{¤¤¤]¥i¥H³]©w¡A¦ý¬O­n­×§ï³o¨â­ÓÄݩʮɡA ¥²¶·­n¦bTTabelªºActiveÄݩʬ°False®É¶i¦æ¡A·íTTableªºActiveÄݩʬ°True®É¡A³o¨â­ÓÄݩʬO¤£¯à³Q­×§ï©M³]©wªº¡C

TableTypeÄÝ©Ê¡G

¸ÓÄݩʱԭz»PTTable³¡¥ó¬Û³s±µªº¸ê®Æ®wªíªº«¬¦¡¡C·íTableTypeÄݩʳ]©w¦¨Default®É¡A¸ÓÄÝ©Ê©Ò±Ô­zªº¸ê®Æ®wªíªº«¬¦¡¥Ñ¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¨M©w¡C

¡´ ­Y¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¬°.DB©Î¨S¦³Àɮתþ¥[¦W¡Aªíªº«¬¦¡¬OParadoxªí

¡´ ­Y¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¬°.DBF®É¡Aªíªº«¬¦¡¬OdBASEªí

¡´ ­Y¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¬°.TXT®É¡Aªíªº«¬¦¡¬OASCIIªí¡@

¦pªGTableTypeÄݩʤ£³]©w¬°Default¡A¨º»ò»PTTable ³¡¥ó¬Û³sªº¸ê®Æ®wªíªº«¬¦¡¥ÑTableType¤¤ªº³]©wªº­È¨M©w¡A¤£¥Î¦Ò¼{¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¡C

KeyExclusiveÄÝ©Ê¡G

¸ÓÄݩʪº¤@­Ó§@¥Î¬O±Ô­z¦b¸ê®Æ®wªí¤¤§ä¨ì°O¿ý®É¡A±N°O¿ý²¾¨ì»P§ä¨ì­È¬Û¤Ç°tªº°O¿ý³BÁÙ¬O±N°O¿ý«ü¼Ð²¾¨ì»P§ä¨ì­È¬Û¤Ç°tªº°O¿ý«á­±¤@±ø°O¿ý³B¡C ¸ÓÄݩʬO¥¬º¸«¬ÅܼơA·í¥¦ªº­È¬°False®É(¯Ê¬Ù±¡ªp¤U¬°False)¡A ±N°O¿ý«ü¼Ð²¾¨ì¬Û¤Ç°tªº°O¿ý³B¡A¬°True®É¡A±N°O¿ý«ü¼Ð²¾¨ì¬Û¤Ç°t°O¿ýªº«á­±¤@±ø°O¿ý³B¡C¸ÓÄÝ©Ê¥t¤@­Ó§@¥Î¬O¦bªí¤¤«ü©wÀ˯Á½d³ò®É¡A¥Î¨Ó±Ô­z¬O§_¥]¬Aº¡¨¬¹LÂo±ø¥óªºÃä¬É°O¿ý¡C·íKeyExclusiveªº­È¬°False®É¡AÀ˯Á½d³ò¥]¬AÃä¬É°O¿ý¡A§_«h¤£¥]¬AÃä¬É°O¿ý¡A¦³Ãö¸Ô²Óªº¾Þ§@½Ð°Ñ¬Ý¡§­­©wªí¤¤°O¿ýªºÀ˯Á½d³ò¡¨¡C

IndexFieldsÄÝ©Ê©MIndexFieldsCountÄÝ©Ê¡G

IndexFieldsªºÄݩʭȬO¸ê®Æ®wªí¤¤Äæ¦ì¦W²M³æ¡A¥¦¥]§t»PTTable³¡¥ó¬Û³sªº¸ê®Æ®wªí¤¤ªº¥þ³¡¯Á¤Þ¦r§Æ¡CIndexFieldsCountÄݩʱԭzªí¤¤¯Á¤ÞÄæ¦ìªº­Ó¼Æ¡C³o¨â­ÓÄݩʭȳ£¬O°ßŪªº¡A¥u¦³¦bµ{¦¡°õ¦æ¹Lµ{¤¤¥i¥Î¡C

IndexNameÄÝ©Ê©MIndexFieldNamesÄÝ©Ê¡G

IndexNameÄݩʤ¤¦s©ñµÛ¦b«Ø¥ß¸ê®Æ®wªí®É¬°¸ê®Æ®wªí©w¸qªº©Ò¦³»²§U¯Á¤Þ¦W¡A¥¦¬O¤@­Ó»²§U¯Á¤Þ¦W²M³æ¡A¬O°ßŪÄÝ©Ê¡CIndexFieldNamesÄÝ©Ê«ü©w¥Î©ó¸ê®Æ®wªí¯Á¤Þ±Æ§ÇªºÄæ¦ì¦W¡A¦h­ÓÄæ¦ì¦W¤§¶¡¥Î¤À¸¹¹j¶}¡C¨Ò¦p¹ïCustomer.DBªí¤¤ªº¥Î¤á°O¿ý«ö¶l¬F½s½XZipCode©M¥Î¤á¸¹½XCustNo±Æ§Ç®É¥i¥H³]©wIndexFieldNamesªº­È¬°¡G

ZipCode ; CustNo

¦bIndexFieldNamesÄݩʤ¤«ü©wªºÄæ¦ì¥²¶·¦s¦b©ó¬ÛÀ³ªº¸ê®Æ®wªí¤¤¡A§_«h·|¾É­P¿ù»~¡CIndexName©MIndexFieldName¬O¤¬¥¸ªº¡A¨C¦¸¥u¯à«ü©w¨ä¤¤¤@­ÓÄݩʪº­È¡A¤£¯à¦P®É¬°¨â­ÓÄݩʳ£«ü©wÄÝ©Ê­È¡C

ExclusiveÄÝ©Ê¡G

¸ÓÄݩʬO¤@­Ó¥¬º¸«¬ÄÝ©Ê¡A¥¦¼Ð©ú¬O§_¥H¦@¨É¤è¦¡¥´¶}¸ê®Æ®wªí¡A¦pªGExclusiveªº­È¬°True¡A·í¥´¶}¤@­Ó¸ê®Æ®wªí®É¡A¨ä¥L¥Î¤á´N¤£¯à¦s¨ú¸Óªí¤F¡A­YExclusiveªº­È¬°False¡A±N¥H¦@¨É¤è¦¡¥´¶}¤@­Ó¸ê®Æ®wªí¡C ÅãµM¤£¯à±N¨ä¥L¥Î¤á¥¿¦b¦s¨úªºªí¥H¤¬¥¸¤è¦¡¥´¶}(³]©wExclusiveªº­È¬°True)¡C¹ï©óSQL¸ê®Æ®w¦øªA¾¹¤Wªº¸ê®Æ®wªí¡A·í¥H¤¬¥¸¤è¦¡³Q¤@­Ó¥Î¤á¥´¶}®É¡A¨ä¥L¥Î¤á¥i¥HŪ¨ú¸Óªí¤¤ªº¼Æ¾Ú¡A¦ý¤£¯à­×§ïªí¤¤ªº¼Æ¾Ú¡A·íµM¦³¨Ç¸ê®Æ®w¦øªA¾¹¤£¤ä´©³oºØ¤è¦¡¡A³o­n¨ãÅé°Ñ¬Ý¦³Ãöªº¸ê®Æ®w¦øªA¾¹ªº¤åÀÉ¡C

ReadOnlyÄÝ©Ê©MCanModifyÄÝ©Ê¡G

³o¨â­ÓÄݩʳ£¬O¥¬º¸«¬ÄÝ©Ê¡AReadOnlyÄݩʨM©w¥Î¤á¬O§_¯à°÷¹ïªí¤¤ªº¼Æ¾Ú¶i¦æŪ¼g¡CReadOnly¬°True ®É¡A¥Î¤á¥u¯àŪ¨úªí¤¤ªº¼Æ¾Ú¡AReadOnly¬°False®É¡A¥Î¤á¥i¥HŪ¼gªí¤¤ªº¼Æ¾Ú(°²³]¸ê®Æ®w¤w±ÂÅv¥Î¤á¯à°÷Ū¼g¨ä¤¤ªº¸ê®Æ®wªí)¡CCanModifyÄݩʬO¤@­Ó°ßŪÄÝ©Ê¡A¥Î¤á¤£¯à°÷­×§ï¨äÄÝ©Ê­È¡A¥¦¤Ï¬M¤F¥Î¤á¹ï¸ê®Æ®wªí¾Ö¦³ªº¹ê»Ú¯SÅv¡A·íReadOnly¬°True®ÉCanModify±N¦Û°Ê¦a³Q¸m¬°False¡A·íReadOnly¬°False®É¡A¦pªG¸ê®Æ®w¤¹³\¥Î¤á¹ïªí¶i¦æŪ¼g®É¡ACanModify¬°True¡A§_«hCanModify¬°False¡C·íCanModify¬°False®É¡A¸ê®Æ®wªí¬O°ßŪªº¡A¦ý¤£¯à±N¨ä¸m¦¨½s¿èª¬ºA©Î´¡¤Jª¬ºA¡F·íCanModifyÄݩʬ°True®É¡AÁöµM¸ê®Æ®wªí¹ïÀ³ªº¼Æ¾Ú¶°³¡¥ó¥i¥H¸m¦¨½s¿è©M´¡¤Jª¬ºA¡A¦ý¬O³o¨Ã¤£·N¨ýµÛ¥Î¤á¯à°÷´¡¤J©M­×§ïªí¤¤ªº¼Æ¾Ú¡A¦]¬°³oÁÙ­n¨ü¨ì¨ä¥L¦]¯Àªº­­¨î¡A¦p¥Î¤á¹ïSQL¸ê®Æ®w¦øªA¾¹ªº¦s¨úÅv­­µ¥ªº­­¨î¡C

TTable³¡¥óÁÙ¦³¨ä¥L¤@¨ÇÄݩʽаѬݳs½u»²§U±Ô­z

¡@

15.4.2 TTable³¡¥óªº¤èªk¤ÎÀ³¥Î

¡@

15.4.2.1 ³]©w¸ê®Æ®wªíªº¨Ï¥Î½d³ò

¡@

¦b§Ú­Ì¹ê»ÚÀ³¥Î¤¤ªº¸ê®Æ®wªí¤¤±`±`¦s©ñµÛ¤j¶qªº¼Æ¾Ú¸ê°T¡A¨ä¤¤¥]§tµÛ«Ü¦hªº°O¿ý¡A¦Ó§Ú­ÌªºÀ³¥Îµ{¦¡¥i¯à¥u»Ý¹ï¨ä¤¤¤@³¡¤À°O¿ý¶i¦æ¾Þ§@¡A¦]¦¹¡A¬°À³¥Îµ{¦¡«ü©w¤@­Ó¨Ï¥Î½d³ò´NÅã±o¯S§O­«­n¤F¡A¬°¤è«K¦³®Ä¦a«ü©w¸ê®Æ®wªíªº¨Ï¥Î½d³òDelphi¬°TTable³¡¥ó´£¨Ñ¤F¤U¦C¤èªk¨Ñ¥Î¤á¨Ï¥Î¡G

¡´ SetRangeStart©MEditRangeStart¤èªk

¡´ SetRangeEnd©MEditRangeEnd¤èªk

¡´ SetRange([Start Values],[End Values])¤èªk

¡´ ApplyRange¤èªk

¡´ CancelRange¤èªk

¡@

1. SetRangeStart¤èªk

¥Î©ó«ü©wÀ˯Á½d³òªº°_©l°O¿ý¡A©I¥sSetRangeStart¤èªk¤§«á¡A¥i¥H¬°°_©l°O¿ýªº¤@­Ó©Î¦h­ÓÄæ¦ì«ü©w¬ÛÀ³ªºÄæ¦ì­È¡CSetRangeEnd¤èªk¥Î©ó«ü©wÀ˯Á½d³òªºµ²§ô°O¿ý¡A©I¥sSetRangeEnd¤èªk¤§«á¡A¥i¥H¬°µ²§ô°O¿ýªº¤@­Ó©Î¦h­ÓÄæ¦ì«ü©w¬ÛÀ³ªºÄæ¦ì­È¡C

¡@

2. SetRange¤èªk

SetRange¤èªk¥]§t¤FSetRangeStart©MSetRangeEnd¤èªkªº¥\¯à¡A¥¦¥i¥H¦P®É«ü©wÀ˯Á½d³òªº°_©l©Mµ²§ô°O¿ý¡A°_©l°O¿ý©Mµ²§ô°O¿ýªºÄæ¦ì­È¥H¼Æ¸s¸s²Õ§Î¦¡°eµ¹SetRange¡A¨ä°ò¥»§Î¦¡¬O¡G

SetRange([°_©l­È]¡A[µ²§ô­È])

¡@

3. ApplyRange¤èªk

®Ú¾ÚSetRangeStart,SetRangeEnd©ÎSetRange¤èªk±Ô­zªºÀ˯Á½d³òªº°_©l©Mµ²§ô°O¿ý¡A¨ãÅé³]©w¤@­ÓÀ˯Á½d³ò¡A©I¥sApplyRange¤èªk¤§«á¡A À³¥Îµ{¦¡¥u¯à¹ïÀ˯Á½d³ò¤ºªº°O¿ý¶i¦æ¦³Ãöªº¾Þ§@¡C

¡@

4. CancelRange¤èªk

CancelRange¤èªkªº§@¥Î»PApplyRange¤èªkªº§@¥Î¬O¬Û¤Ïªº¡A³o¬O¨ú®ø¬°ªí³]©wªºÀ˯Á½d³ò¡A©I¥sCancelRange¤èªk¤§«áÀ³¥Îµ{¦¡¥i¥H¹ïªí¤¤¥þ³¡°O¿ý¶i¦æ¦³Ãöªº¾Þ§@¡C

¦b³oùØ­nª`·Nªº¬O¡G¦pªG§Ú­Ì¨Ï¥Îªº¬Oparadoxªí©ÎdBASEªí¡A¦b©I¥sSetRangeStart¡ASetRangeEnd¥H¤ÎSetRange¤èªk®É¡A¥u¯à¬°ªí¤¤ªº¯Á¤ÞÄæ¦ì©Î©w¸qªº¯Á¤Þ«ü©w¬ÛÀ³ªºÄæ¦ì­È¡A¥H³]©wÀ˯Á½d³ò¡C¦pªG¨Ï¥ÎSQL¸ê®Æ®w¦øªA¾¹¤¤ªº¸ê®Æ®wªí¡A¥i¥H¬°IndexFieldNamesÄݩʤ¤«ü©wªºÄæ¦ì«ü©w¬ÛÀ³ªºÄæ¦ì­È¡C

¨Ò¦p¡G°²³]Table1»PCustomer.DBªí¬Û³s¡ACustomer.DB¤¤¤@­Ó¯Á¤ÞÄæ¦ì¬OCustNo¡A¦P®ÉÀ³¥Îµ¡Å餤¦³¨â­Ó½s¿è®ØStartVal©MEndVal¥Î©ó¿é¤J°_©l¡Bµ²§ô°O¿ýªºÄæ¦ìCustNoªº­È¡A¤U­±ªºµ{¦¡¥N½X«K¥i¥H¬°§Ú­Ì³]©w¤@­ÓÀ˯Á½d³ò¡G

¡@

Tabel1.SetRangeStart; {«ü©wÀ˯Á½d³òªº°_©l°O¿ý}

Tabel1CustNo.AsString:= StartVal.Text {¬°°_©l°O¿ýªºCustNoÄæ¦ì«ü©wÄæ¦ì­È}

Tabel1.SetRangeEnd; {«ü©wÀ˯Á½d³òªºµ²§ô°O¿ý}

if EndVal.Text <> ' ' then

Tabel1CustNo.AsString := EndVal.Text; {¬°µ²§ô°O¿ýªºCustNo Äæ¦ì«ü©wÄæ¦ì­È}

Tabel1.ApplyRange; {®Ú¾ÚÀ˯Á½d³òªº°_©l¡Bµ²§ô°O¿ý³]©wÀ˯Á½d³ò}

¡@

ª`·N¤W­±ªºµ{¦¡¥N½X¡A¦b¬°µ²§ô°O¿ýªºCustNoÄæ¦ì«ü©wÄæ¦ì­È®É¡A ­º¥ýÀˬdEndValªº­È¬O§_¬°ªÅ¡A¦pªGEndValªº­È¬°ªÅ¡A¨º»ò³]©wªºÀ˯Á½d³ò¨S¦³¥]§t¤@±ø°O¿ý¡A ¦]¬°¨S¦³¥ô¦ó°O¿ýªºÄæ¦ì­È¤p©óNIL¡F¦pªGStartValªº­È¬°ªÅ¡A¨º»òÀ˯Á½d³ò±N±qªí¤¤ªº²Ä¤@±ø°O¿ý¶}©l¡A¦]¬°ªí¤¤¥ô¦ó°O¿ýªºÄæ¦ì­È³£¤j©óªÅ(NIL)¡C

¤W­z¥N½X¥i¥H¥ÎSetRange¤èªk§ï¼g¦¨¡G

¡@

If EndVal.Text <>' ' then

Tabel1.SetRane([StartVal.Text].[EndVal.Text]);

Table1.ApplyRange;

¡@

EditRangeStart©MEditRangeEnd¤èªkªº¨Ï¥Î§¹¥þÃþ¦ü©óSetRangeStart©MSetRangeEnd¤èªk¡A¥u¬O½Õ³o¨â­Ó¤èªk¬O³]©w¤@­Ó¥i½s¿èªº½d³ò¡C

¤S¦p¡G°²³]¤@­Óªí¤¤ªº¤@­Ó¯Á¤Þ¥]§t¨â­ÓÄæ¦ìLastName©MFirstName¡A§Ú­Ì¬°¯Á¤Þ¤¤ªº¤@­ÓÄæ¦ì©Î¦h­ÓÄæ¦ì«ü©w¬ÛÀ³ªºÄæ¦ì­È¡A³]©w¸ê®Æ®wªíªº¨Ï¥Î½d³ò¡C

¡@

Table1.SetRangeStart;

Table1.FieldByName('LastName').Asstring := 'Smith';

Table1.SetRangeEnd;

Tabel1.ApplyRange;

¡@

¤W­z¥N½X³]©wªº½d³ò¥]¬ALastNameÄæ¦ìªº­È¤j©ó©Îµ¥©óSmithªº©Ò¦³°O¿ý¡C¦Ó¤U­±ªº¥N½X³]©wªº½d³ò«h¥]¬ALastNameÄæ¦ìªº­È¤j©ó©Îµ¥©óSmith¥BFirstNameÄæ¦ìªº­È¤j©ó©Îµ¥©ó'J'ªº°O¿ý¡C

¡@

Table1.SetRangeStart;

Table1.FieldByName('LastName').Asstring := 'Smith';

Table1.FieldByName('FirstName').Asstring := 'J';

Table1.SetRangeEnd;

Tabel1.ApplyRange;

¡@

15.4.2.2 §ä¨ì¸ê®Æ®wªí¤¤ªº°O¿ý

¡@

¦pªG·Q§ä¨ì¸ê®Æ®wªí¤¤ªº°O¿ý¡A¥²¶··Q«ü©w§ä¨ì°O¿ýªº¤@¨ÇÄæ¦ìªºÄæ¦ì­È¡AµM«á¦bªí¤¤¶i¦æÀ˯Á¡AÀ˯Á¥X»P§ä¨ì­È¬Û¤Ç°tªº°O¿ý¨Ó¡C¦pªG§Ú­Ì¬O¦bParadox©ÎdBASE¸ê®Æ®w¤¤ªºªí¤¤§ä¨ì°O¿ý¡A¨º»ò§ä¨ì­È©Ò¹ïÀ³ªºÄæ¦ì¥²¶·¬Oªí¤¤ªºÃöÁäÄæ¦ì©Î»²§U¯Á¤ÞÄæ¦ì¡C¦pªG§ä¨ìSQL¸ê®Æ®w¦øªA¾¹¤¤ªºªí¡A¨º»ò§ä¨ì­È¥²¶·¬OªíªºIndexFieldNamesÄݩʤ¤«ü©wªºÄæ¦ì¡C

Delphi´£¨Ñ¤F¨âºØ¤è¦¡¦b¸ê®Æ®wªí¤¤§ä¨ì°O¿ý¡GGoto¤è¦¡©MFind¤è¦¡¡C³o¨âºØ¤è¦¡¤Q¤À¬Û¦ü¡A¥¦­Ìªº¥D­n°Ï§O¦b©ó¬°§ä¨ì«ü©w§ä¨ì­Èªº¤èªk¤£¤@¼Ë¡C

¨Ï¥ÎGoto¤è¦¡¶i¦æ¼Æ¾Ú§ä¨ì¨Ï¥Îªº¤èªk¦³SetKey¤èªk¡BGotoKey¤èªk©MGotoNearest¤èªk¡C¨ä¹ê»Ú¨BÆJ¦p¤U¡G

¡@

Æ¡½T«O­n§ä¨ìªºÄæ¦ì¬OÃöÁäÄæ¦ì©Î»²§U¯Á¤ÞÄæ¦ì¡C

Æ¢©I¥sSetKey¤èªk§â»Pªí¹ïÀ³ªºTTable³¡¥ó¸m¦¨§ä¨ìª¬ºA¡C

Æ£§â§ä¨ì­È½áµ¹¬ÛÀ³ªºÄæ¦ì¡C

Ƥ©I¥sGotoKey¤èªk¡A¨Ã´ú¸Õ¥¦ªºªð¦^­ÈÀËÅç§ä¨ì¬O§_¦¨¥\¡C

¡@

°²³]Table1¹ïÀ³ªºªí¤¤²Ä¤@­ÓÄæ¦ì¬OÃöÁäÄæ¦ì¡AEdit1¬OÀ³¥Îµ¡Å餤ªº¤@­Ó½s¿è®Ø¡A¥Î¤á¥i¥H³q¹LEdit1¿é¤J§ä¨ì­È¡C¤U­±ªº¥N½X±N³q¹LGoto¤è¦¡¶i¦æ§ä¨ì¡C

¡@

Table1.SetKey; {±NTable1¸m¦¨§ä¨ìª¬ºA}

Table1.Field[0].AsString := Edit1.Text; {«ü©w§ä¨ì­È}

Table1.GotoKey; {¶i¦æ§ä¨ì}

¡@

¤W­±³Ì«á¤@¦æ¥N½X¬O®Ú¾Ú¥Î¤á«ü©wªº§ä¨ì­È¡A¦bªí¤¤°õ¦æ§ä¨ì¡C§ä¨ìªºµ²ªG¦³¨âºØ¡A¤]³\¦¨¥\¤]³\¥¢±Ñ¡A³o¬O¥Ñ©I¥sGotoKey¤èªk¤§«áªð¦^ªº¥¬º¸­È¨Ó¨M©w¡A¦pªGªð¦^True¡A¨º»ò§ä¨ì¦¨¥\¡A¨Ã¥B°O¿ý«ü¼Ð·|«ü¦V»P§ä¨ì­È¤Ç°tªº°O¿ý¡A¦pªGªð¦^Fale¡A¨º»ò§ä¨ì¥¢±Ñ¡A°O¿ý«ü¼Ðªº¦ì¸m¤£µo¥ÍÅܤơC¤U­±ªº¥N½X¥i¥H´ú¸Õ©I¥sGotoKey¤èªk¤§«áªºªð¦^­È¡A§iª¾¥Î¤á§ä¨ì¬O§_¦¨¥\¡C

¡@

Table1.SetKey;

Table1.Field[0].AsString:= 'Smith';

If not Table1.GotoKey then

ShowMessage('°O¿ý¨S§ä¨ì')

¡@

¦b³o¤@¬q¥N½X¤¤¡A¦pªG¦bªí¤¤¨S¦³§ä¨ì²Ä¤@­ÓÄæ¦ì­È¬°Smithªº°O¿ý¡A¸ÓÀ³¥Îµ{¦¡·|¼u¥X¤@­Ó¹ï¸Ü¤è¶ô§iª¾¥Î¤á¡§°O¿ý¨S¦³§ä¨ì¡¨¡C

¦pªG¦bªí¤¤¦s¦b¦h­ÓÃöÁäÄæ¦ì©Î»²§U¯Á¤Þ¤¤¥]§t¦h­ÓÄæ¦ì®É¡A§A¦b¶i¦æ§ä¨ì®É¡A¥u·Q¬°²Ä¤@­ÓÄæ¦ì«ü©w§ä¨ì­È¡A¨º»ò¥²¶·­n³]©wTTable³¡¥óªºKeyFieldCountªºÄݩʭȬ°1¡C¦pªG·Q¬°¦h­ÓÄæ¦ì«ü©w§ä¨ì­È¡A¥u¯à¬°¬Û¾FªºÄæ¦ì«ü©w§ä¨ì­È¡A¨Ò¦p»²§U¯Á¤Þ¤¤¦@¦³¤T­ÓÄæ¦ì¡A¨º»ò§Ú­Ì¥u¯à¬°²Ä¤@­ÓÄæ¦ì¡B²Ä¤@©M²Ä¤G­ÓÄæ¦ì¡B²Ä¤@©M²Ä¤G¥H¤Î²Ä¤T­ÓÄæ¦ì«ü©w§ä¨ì­È¡A¦Ó¤£¯à¬°²Ä¤@©M²Ä¤T­ÓÄæ¦ì«ü©w§ä¨ì­È¡C

GotoNearest¤èªkªº¨Ï¥Î»PGotoKey¤èªk§¹¥þ¤@¼Ë¡A¥u¬O¥¦¥Î©ó¤£ºë½T§ä¨ì¡A¥¦¤£­n¨D§ä¨ìµ²ªG»P§ä¨ì­Èºë½T¤Ç°t¡A·íªí¤¤¦³»P§ä¨ì­Èºë½T¤Ç°tªº°O¿ý®É¡A¥¦±N°O¿ý«ü¼Ð²¾¨ì¸Ó°O¿ý³B¡A·íªí¤¤¨S¦³»P§ä¨ì­Èºë½T¤Ç°tªº°O¿ý®É¡A¥¦·|§ä¨ì¥X»P§ä¨ì­È³Ì±µªñªº°O¿ý¡A¨Ã±N°O¿ý«ü¼Ð²¾¨ì¸Ó°O¿ý³B¡C

¤U­±¬OÀ³¥ÎGotoNearest¤èªkªº¤@¬q¥N½X¡G

¡@

Table1.SetKey;

Table1.Fields[0].AsString:= 'Sm';

Table1.GotoNearest;

¡@

°õ¦æ¤W­z¥N½X«á¡A­Yªí¤¤¦s¦b²Ä¤@­ÓÄæ¦ì­Èµ¥©óSmªº°O¿ý®É¡A°O¿ý«ü¼Ð±N²¾¨ì¸Ó°O¿ý³B¡A­Yªí¤¤¤£¦s¦b²Ä¤@­ÓÄæ¦ì­Èµ¥©óSmªº°O¿ý¡A¦Ó¦s¦b²Ä¤@­ÓÄæ¦ì­Èµ¥©óSmithªº°O¿ý¡A¨º»ò°O¿ý«ü¼Ð·|²¾¨ì¸Ó°O¿ý³B¡C

¦pªG§Ú­Ì¤£¬O¥H¸ê®Æ®wªí¤¤ªºÃöÁäÄæ¦ì§@¬°§ä¨ìÄæ¦ì¡A§Ú­Ì¤]¥i¥H¬°TTable³¡¥óªºIndexFieldNameÄݩʤ¤ªºÄæ¦ì©ÎIndexNameÄݩʤ¤ªºÄæ¦ì«ü©w§ä¨ì­È¶i¦æ¼Æ¾Ú§ä¨ì¡C¨Ò¦p¡A°²³]Customerªí¤¤¦³¤@­Ó¦W¥sCityIndexªº»²§U¯Á¤Þ¡A§Ú­Ì¬°CityIndex¤¤ªºÄæ¦ì«ü©w§ä¨ì­È¶i¦æ§ä¨ì®É¡A­º¥ý³]©wTTable³¡¥óªºIndexNameÄݩʬ°CityIndex¡AµM«á¦A¶i¦æ§ä¨ì¡A¤U­±¬O¨ãÅ骺µ{¦¡¥N½X¡G

¡@

Table1.IndexName := 'CityIndex';

Table1.Open;

Table1.SetKey;

Table1.FieldByName{'City').AsString := Edit1.Text;

Table1.GotoKey;

¡@

¨Ï¥ÎFind¤è¦¡¡G¨Ï¥ÎFind¤è¦¡¦b¸ê®Æ®w¤¤¶i¦æ¼Æ¾Ú§ä¨ìªº¤èªk¦³¡GFindNearest¤èªk©MFindKey¤èªk¡C

FindKey¤èªk©MFindNearest¤èªk¬°¼Æ¾Ú§ä¨ì´£¨Ñ¤F¤@­Ó²³æªº¤èªk¡A¥¦­Ì±NSetKey¡B«ü©w§ä¨ì­È¡B°õ¦æ§ä¨ì¤T­Ó¨BÆJ¿Ä¦X¦b¤@¨Bùا¹¦¨¡A¥¦­Ì¦b«ü©w§ä¨ì­È®É¡A¬O§â¦UÄæ¦ìªº§ä¨ì­È¸s¸s²Õ¦¨¤@­Ó¼Æ¸s¸s²Õ¶Çµ¹FindKey©ÎFindNearest¡C¤U­±¬O¨ÏFindKey¤èªkªº¤@­Ó¨Ò¤l¡C

°²³]Tabel1¹ïÀ³ªºªí¤¤ªº²Ä¤@­ÓÄæ¦ì¬OÃöÁäÄæ¦ì¡C

¡@

Table.FindKey([Edit1.Text]);

¡@

¦pªG¥ÎGotoKey¤èªk§¹¦¨³o¤@¥\¯à«h»Ý­n½s¼g¤U­±¥N½X¡G

¡@

Table1.SetKey;

Table1.Fields[0].AsStrine := Edit.Text;

Table1.GotoKey;

¡@

FindKey¤èªk©MFindNearest¤èªkªº°Ï§O»PGotoKey©MGotoNearest¤èªkªº°Ï§O¬O¤@¼Ëªº¡C

¡@

15.4.2.3 «Ø¥ß¥D­n¡X¡X©ú²Ó¸ê®Æ®wÀ³¥Î

¡@

TTable³¡¥ó¤¤MasterSourceÄÝ©Ê©MMasterFieldsÄݩʬO¥Î©ó©w¸q¨â­Ó¸ê®Æ®wªíªº¤@¹ï¦hªºÃö«Y¡CMasterSourceÄÝ©Ê«ü©w¥Dªí¹ïÀ³ªºTDataSource³¡¥ó¡AMasterFieldsÄÝ©Ê«ü©w¥Dªí©M©ú²Óªí¤§¶¡«Ø¥ßÁpôªºÄæ¦ì¡A¥Dªí©M©ú²Óªí¤§¶¡«Ø¥ß¤@¹ï¦hÃö«Y®É¡A¥i¯à¤£¥u¬O°ò©ó¤@­ÓÄæ¦ì¡A¥i¯à¦³¦h­ÓÄæ¦ì¡C¦pªG¦³¦h­ÓÄæ¦ì¡A¨º»ò¦b±Ô­zMasterFieldsÄݩʮɡA¦h­ÓÄæ¦ì¤§¶¡­n¥Î¤À¸¹¹j¶}¡C¦pTable1.MasterFields := 'OrderNo;CustNo'¡C¦b³]­p¶¥¬q¥i¥H¨Ï¥ÎÄæ¦ì³s±µ³]­p¾¹(Field Link Designer)¬°¨â¤Wªí«Ø¥ß¤@¹ï¦hªºÃö«Y¡A¦bObject Inspector ¤¤³sÄò«ö¨â¤UTTable³¡¥óªºMasterFields«K¥i¥H¥´¶}Field Link Designer¡A¶i¦æ¤@¹ï¦hÃö«Yªº«Ø¥ß¡C ¦p«Ø¥ßCustomer.DBªí©MOrder.DBªí¤§¶¡ªº¤@¹ï¦hÃö«Y®É¡A¨Ï¥ÎField Link Designer ¦p¹Ï15.5©Ò¥Ü¡C

¡@

¡@

¡@

¹Ï15.5 ¨Ï¥ÎField Link Designer«Ø¥ß¤@¹ï¦hÃö«Y

¡@

Field Link Designer´£¨Ñ¤F¤@ºØ¥iµø¤Æªº¤èªk¨Ó«Ø¥ß¥D­n¡X¡X©ú²Óªí¤§¶¡ªº¤@¹ï¦hÃö«Y¡C¹Ï¤¤Available Indexes¸s¸s²Õ¦X®Ø¤¤¦s©ñµÛ©ú²Óªí¤¤ªºÃöÁäÄæ¦ì©M¯Á¤ÞÄæ¦ì¡A¥i¥H¿ï¾Ü¯Á¤ÞÄæ¦ì¶i¦æ³s±µ¡C¦b¥Dªí¤¤¿ï¾Ü¤@­Ó¥Î©ó³s±µªºÃöÁäÄæ¦ì¡AµM«á±N¨ä»P©ú²Óªí¤¤¬ÛÀ³ªºÃöÁäÄæ¦ì³s±µ¡A«ö¤@¤UAdd«ö¶s¡A¥D­n¡X¡X©ú²Óªíªº³s±µÄæ¦ì±NÅã¥Ü¦bJoined Fields¦C¥Ü¤è¶ô¤¤¡A¦p¡G

CustNo->CustNo¡@

15.5 TDataSource³¡¥ó¤Î¨äÀ³¥Î

¡@

TDataSource³¡¥ó¬O¶}µo¸ê®Æ®wÀ³¥Îµ{¦¡¤¤¥Î¨ìªº«D±`­«­nªº³¡¥ó¡A¥¦¬O³s±µ¼Æ¾Ú¶°³¡¥óTTable©ÎTQuery©M¼Æ¾ÚÂsÄý³¡¥óªº¾ô¼Ù¡CTDataSource³¡¥ó¥»¨­¤Q¤À²³æ¡A¥¦©Ò¾Ö¦³ªºÄÝ©Ê¡B¨Æ¥ó©M¤èªk³£¤ñ¸û¤Ö¡A¦b¨Ï¥Î¸Ó³¡¥ó®ÉµL»Ý§@¤Ó¦hªº¤u§@¡A¥¦¥D­n¬O¬°¼Æ¾ÚÂsÄý³¡¥óªA°Èªº¡A¦pªG¦bÀ³¥Îµ{¦¡¤¤¨S¦³¨Ï¥Î¼Æ¾ÚÂsÄý³¡¥ó¡A§Ú­Ì¤]¨S¦³¥²­n¬°À³¥Îµ{¦¡³]©wTDataSource³¡¥ó¡C

¡@

15.5.1 TDataSource³¡¥óªºÄÝ©Ê

¡@

TDataSource³¡¥ó°£¤F¨ä¥L³¡¥ó³£¾Ö¦³ªºNameÄÝ©Ê©MTagÄݩʤ§¥~¡A¥D­n¦³¤U­±´X­ÓÄÝ©Ê¡G

DataSetÄÝ©Ê¡G¸ÓÄݩʱԭzTDataSource³¡¥ó±q¤¤Àò¨ú¼Æ¾Úªº¼Æ¾Ú¶°ªº¦W¦r¡A¥¦¥i¥H¬OTTable³¡¥óªº¦W¦r¡A¤]¥i¥H¬OTQuery³¡¥óªº¦W¦r¡A¬Æ¦ÜÁÙ¥i¥H«ü©w¨ä¥Lµ¡Å餺ªº¼Æ¾Ú¶°§@¬°¸ÓÄݩʪº­È¡A¦p¦b¤U­±ªºµ{¦¡¤¤§Ú­Ì«ü©wµ¡ÅéForm2¤¤ªºtable1§@¬°µ¡ÅéForm1¤¤ªºDataSource1ªºDataSetÄÝ©Ê­È¡G

¡@

TForm1.Formcreate(Sender : Tobject);

Begin

DataSource1.DataSet := Form2.Table1;

end;

¡@

EnableÄÝ©Ê¡GEnableÄÝ©Ê¥i¥H¼È®É©Ê¦a¤ÁÂ_TDataSource³¡¥ó©M»P¤§¬Û³sªº¼Æ¾Ú¶°³¡¥óªº³s±µ¡C³o¬O¤@­Ó¥¬º¸«¬ÅܼơC·í¥¦ªº­È¬°False®É¡ATDataSource³¡¥ó©M¼Æ¾Ú¶°³¡¥óªº³s±µ³Q¤ÁÂ_¡A¥B©Ò¦³»PTDataSource³¡¥ó¬Û³sªº¼Æ¾ÚÂsÄý³¡¥ó¤¤±NÅܬ°¤@¤ùªÅ¥Õ¡A¤£Åã¥Ü¥ô¦ó¼Æ¾Ú¸ê°T¡C·íEnabledªº­ÈÅܬ°True®É¡ATDataSource³¡¥ó©M¼Æ¾Ú¶°³¡¥óªº³s±µ«ì´_¡A¥B»PTDataSource³¡¥ó¬Û³sªº¼Æ¾ÚÂsÄý³¡¥ó«ì´_Åã¥Ü¼Æ¾Ú¡C¤£¹L­n¹ê²{¤W­z³o¨Ç¥\¯à¡A¤@¯ë¤£¨Ï¥ÎTDataSource³¡¥óªºEnabledÄÝ©Ê¡A¦Ó¬O©I¥s¼Æ¾Ú¶°³¡¥óªºDisableControls¤èªk©MEnableControls ¤èªk¡A¦]¬°©I¥s³o¨â­Ó¤èªk¥i¥H¤è«K¦a±±¨î»P¼Æ¾Ú¶°³¡¥ó¬Û³sªº©Ò¦³TDataSource³¡¥ó¥H¤Î»PTDataSource³¡¥ó¬Û³sªº¼Æ¾ÚÂsÄý³¡¥ó¡C

AutoEditÄÝ©Ê¡G³o¬O¤@­Ó¥¬º¸«¬ÅܼơA¥¦¥Î©ó±Ô­z¬O§_±N»PTDataSource³¡¥ó¬Û³sªº¼Æ¾Ú¶°¸m©ó½s¿èª¬ºA¡C·íAutoEditªº­È¬°True®É¡AÀ³¥Îµ{¦¡°õ¦æ®É¡A»PTDataSource¬Û³sªº¼Æ¾Ú¶°³¡¥ó¦Û°Ê¦a³Q³]©w¦¨½s¿èª¬ºA¡A·í¥Î¤á¦b»PTDataSource³¡¥ó¬Û³sªº¼Æ¾ÚÂsÄý³¡¥ó¤¤¿é¤J·sªº­È®É¡A¼Æ¾Ú¶°³¡¥ó¤¤ªº°O¿ý¤]ÀH¤§§ïÅÜ¡C¦pªGAutoEditªº­È¬°False¡A¥Î¤á·Q³q¹L¼Æ¾ÚÂsÄý³¡¥ó©Îµ{¦¡­×§ï¼Æ¾Ú¶°¤¤ªº°O¿ý¡A¥²¶·­n©I¥s¼Æ¾Ú¶°³¡¥óªºEdit¤èªk¡A±N¨ä¸m¬°½s¿èª¬ºA¤§«á¤~¯à°÷¶i¦æ¡C

¡@

15.5.2 TDataSource³¡¥óªº¨Æ¥ó

¡@

TDataSource³¡¥ó¨ã¦³¤T­Ó¨Æ¥ó¡G

¡´ OnDataChange¨Æ¥ó

¡´ OnStateChange

¡´ OnUpdataData

¡@

OnDataChange¨Æ¥ó¡G·í»PTDataSource¬Û³sªº¼Æ¾Ú¶°¤¤ªº°O¿ý«ü¼Ðªº¦ì¸mµo¥Í§ïÅܮɡA¸Ó¨Æ¥ó´N³QIJµo¡A¤]´N¬O»¡·íµ{¦¡©I¥s¼Æ¾Ú¶°³¡¥óªºNext¡BPrevious¡BInsert¡BAppendµ¥¤èªk¾É­P°O¿ý«ü¼Ðªº¦ì¸mµo¥Í§ïÅܮɡA«K·|IJµo¸Ó¨Æ¥ó¡C¸Ó¨Æ¥ó¤@¯ë¥Î©ó«O«ùÀ³¥Î¤¤¦h­Ó³¡¥ó¤§¶¡ªº¦P¨B¡C

OnUpdataData¨Æ¥ó¡G·í¼Æ¾Ú¶°³¡¥ó¤¤¥Ø«e°O¿ý±N­n³Q­×§ï®É¡AIJµo¸Ó¨Æ¥ó¡C¨Ò¦p¦bµ{¦¡©I¥spost¤èªk¤§«á¦ý¦b­×§ï«áªº¼Æ¾Ú°O¿ý¯u¥¿³Q¼g¦^ºÏºÐ¤¤ªº¸ê®Æ®w¤å¥ó¤§«eIJµo¸Ó¨Æ¥ó¡A¦bÀ³¥Î¤¤¨Ï¥Î«D¼Æ¾ÚÂsÄý³¡¥ó®É­n¥¦»P¼Æ¾Ú¶°«O«ù¦P¨B®É±`¨Ï¥Î¸Ó¨Æ¥ó¶i¦æ¬ÛÃöªº³B²z¡C

OnStateChange¨Æ¥ó¡G·í»PTDataSource³¡¥ó¬Û³sªº¼Æ¾Ú¶°³¡¥óªºª¬ºAµo¥Í§ïÅܮɡA «KIJµo¸Ó¨Æ¥ó¡C¦]¬°¼Æ¾Ú¶°³¡¥óªºStateÄݩʼЩú¤F¼Æ¾Ú¶°³¡¥ó¥Ø«e©Ò³Bªºª¬ºA¡A·í¼Æ¾Ú¶°ªºª¬ºAµo¥ÍÅܤƮɡA¨Ï¥Î¸Ó¨Æ¥ó¶i¦æ¦³Ãöªº³B²z¬O«Ü¦³¥Îªº¡A¦b¤@­Ó¨ãÅ骺À³¥Î¤¤¡A ¼Æ¾Ú¶°³¡¥óªºª¬ºA±`±`¬OÀWÁc¦aÅܤƪº¡A¬°¤F¸òÂܼƾڶ°³¡¥óªºª¬ºAÅܤơA ¥i¥H¥Î¤U­±¨Ò¤l¤¤ªºµ{¦¡¥N½X±N¼Æ¾Ú¶°³¡¥ó¥Ø«eªºª¬ºAÅã¥Ü¦b¤@­Ó¼ÐÅÒ¤W¡G

¡@

TForm1.DataSource1OnStateChange(Sender : Tobject);

var

S : String;

begin

Case Table1,State of

dsInactive : S := 'Inactive';

dsBrowse : S := 'Browse';

dsEdit : S := 'Edit';

dsInsert : S := 'SetKey';

dsSetKey : S := 'SetKey';

end;

Label1.Caption := S;

end;

¡@

Ãþ¦ü¦a§Ú­Ì¤]¥i¥H³q¹L°»´ú¼Æ¾Ú¶°³¡¥óªºª¬ºA¨Ó±±¨î¦³Ãöªº«ö¶s©M¿ï¾Üªí¶µ¬O§_¦³®Ä¡C ¨Ò¦p¡G¦b¤@­ÓÀ³¥Îµ¡Å餤¦³¤@­ÓInsertBtn«ö¶s¡A¥Î©ó±±¨î¦V¼Æ¾Ú¶°³¡¥ótable1¹ïÀ³ªº¸ê®Æ®wªí¤¤´¡¤J°O¿ý¡FÁÙ¦³¤@­ÓCancelBtn«ö¶s¥Î©ó±±¨î¬O§_¨ú®ø¥Î¤á¹ï¥Ø«e°O¿ýªº­×§ï©Î´¡¤J·s°O¿ý¡C¤U­±ªºµ{¦¡¥N½X®Ú¾ÚTable1ªºª¬ºA¨Ó±±¨î³o¨â­Ó«ö¶sªº¥\¯à(¬O§_¦³®Ä¡A¦bµ¡Åé¬O§_ÅܦǷt)¡C

¡@

Form1.DataSource1OnStateChange(Sender : Tobject);

begin

InsertBtn.Enabled := (Table1.State = dsBrowse);

CancelBtn.Enabled := Table1.State in [dsInsert,dsEdit,dsSetKey]

end;

¡@

¤W­±ªº¥N½X¤¤¡A·íTable1³B©óÂsÄýª¬ºA(Browseª¬ºA®É)¡A ¥Î¤á¬O¤£¯à°÷¦V¸ê®Æ®wªí¤¤´¡¤J·s°O¿ýªº¡A¦¹®ÉInsertBtn«ö¶s±NÅܦǷt§YµL®Ä¡C·íTable1¤£³B©óBrowseª¬ºA®É¡AInsertBtn«ö¶s¦³®Ä¡A¥Î¤á¬O¥i¥H¦Vªí¤¤´¡¤J·s°O¿ý¡C¦P²z¡A¥u¦³·íTable1³B©ó¯S¤Jª¬ºA(Insertª¬ºA)©Î½s¿èª¬ºA(Editª¬ºA)©Î§ä¨ìª¬ºA(SetKeyª¬ºA)®É¡ACancelBtn«ö¶s¤~¦³®Ä¡A¤]§Y¥Î¤á¥i¥H¨ú®ø¥Ø«e´¡¤Jªº°O¿ý¡B­×§ï¥Ø«eªº°O¿ý¥H¤Î§ä¨ì¨ìªºµ²ªGµ¥¡C

¡@

15.6 Äæ¦ì³¡¥ó©MÄæ¦ì½s¿è¾¹ªº¨Ï¥Î

¡@

Äæ¦ì³¡¥ó¦³®É¤SºÙÄæ¦ìª«¥ó¥¦¹ïÀ³µÛ¸ê®Æ®wªí¤¤ªº¦C§YÄæ¦ì¡AÄæ¦ìª«¥ó¬O¤£¥i¨£ªº³¡¥ó¡A¦bDelphi¤¤¦³¨âºØ¤è¦¡«Ø¥ßÄæ¦ì³¡¥ó¡G

Æ¡¦bÀ³¥Îµ{¦¡°õ¦æ¹Lµ{¤¤¡AÀHµÛ¼Æ¾Ú¶°³¡¥ó³Q¿E¬¡¡A¹ïÀ³©ó¸ê®Æ®wªí¤¤¨C¤@¦CªºÄæ¦ì³¡¥ó«K°ÊºA¦a³Q«Ø¥ß¡C

Æ¢¦b³]­p¹Lµ{¤¤¡Aµ{¦¡³]­p¤H­û§Q¥ÎÄæ¦ì½s¿è¾¹(Fields Editor)¥i¥H«Ø¥ß¥Ã¤[©ÊªºÄæ¦ì³¡¥ó¡A§Y¨ÏÄæ¦ìª«¥ó¹ïÀ³ªº¸ê®Æ®wªíªºµ²ºcµo¥Í¤FÅܤƮɡA³o¨ÇÄæ¦ì³¡¥ó¤]¤£·|µo¥ÍÅܤơC

¬JµMÄæ¦ì³¡¥ó¬O¹ïÀ³©ó¸ê®Æ®wªí¤¤ªº¦U­ÓÄæ¦ìªº¡A¦Ó¸ê®Æ®wªí¤¤ªºÄæ¦ì¦³¦hºØ¼Æ¾Ú«¬¦¡¡A©Ò¥HÄæ¦ì³¡¥ó¬ÛÀ³¤]¦³¦hºØ«¬¦¡¡AÄæ¦ì³¡¥óªº«¬¦¡»P¸ê®Æ®wªí¤¤ªºÄæ¦ìªº¼Æ¾Ú«¬¦¡ªº¹ïÀ³Ãö«Y¦pªí15.5©Ò¥Ü¡C

¡@

ªí15.5 Äæ¦ì³¡¥óªº«¬¦¡

¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w

Äæ¦ì³¡¥óªº«¬¦¡ ¹ïÀ³ªº¼Æ¾Ú«¬¦¡

¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

TStringField ¦r¤¸¦ê«¬¦¡ªºÄæ¦ì

TSmallIntField µu¾ã¼Æ«¬¦¡ªºÄæ¦ì -32768¡Ð32767

TIntegerField ¾ã¼Æ«¬¦¡ªºÄæ¦ì

TWordField ¥¿¾ã¼Æ«¬¦¡ªºÄæ¦ì0¡Ð65535

TBooleanField ¥¬º¸«¬Äæ¦ì

TFloatField ¯BÂI¼Æ«¬¦¡ªºÄæ¦ì

TCurrenCyField ³f¹ô«¬Äæ¦ì

TDataField ¤é´Á«¬

TTimeField ®É¶¡«¬

TBCDField ¤p¼Æ¦ì¼Æ©T©wªº¯BÂI¼Æ

TDataTimeField ¤é´Á®É¶¡«¬Äæ¦ì

¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¡@

§Ú­Ì¦b¥»®Ñ¤¤¥u¤¶²Ð¤@¨Ç±`¨£«¬¦¡ªºÄæ¦ì³¡¥óªº¨Ï¥Î¡A¨ä¥L«¬¦¡Äæ¦ì³¡¥óªº¨Ï¥Î¥i¥H°Ñ¬Ý³s½u»²§U±Ô­z¤å¥ó¡C

¡@


«á¤@­¶
«e¤@­¶
¦^¥Ø¿ý
¦^­º­¶