 |
VFP ·R¥ÎªÌªÀ°Ï ¥»°Q½×°Ï¬° Visual Foxpro ·R¥ÎªÌ¸gÅç¥æ¬yªº¦a¤è, ½Ð¦h¦h§Q¥Î"·j´M"ªº¥\¯à, ¥ý¬d¬Ý¬Ý¦³µL«e¨Ò¥i´`, ¦pªGÁÙ¦³¤£À´ªº¦Aµo°Ý. ³¡¥÷¥DÃD¦³ªþ¥[ÀÉ®×, ¶·¥ýµù¥U¦¨¬°ªÀ°Ï©~¥Á¤~¥i¥H¤U¸ü.
|
¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD |
µoªí¤H |
¤º®e |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 61 ¼Ó
|
µoªí©ó: ¬P´Á¤ ¤E¤ë 10, 2004 12:21 am ¤å³¹¥DÃD: |
|
|
¶}µo¥D±q¬[ºc¸Ñ¨M¤è®×
±z¥i¥H±N Visual FoxPro §@¬°«eºÝ¶}µo¥D±q¬[ºcªºÀ³¥Îµ{¦¡¡CVisual FoxPro ¤£¦ý´£¨Ñ¥i§ó·s¦øªA¾¹¸ê®Æªº»·ºÝ¸ê®Æ¶°¡A¦Ó¥B¤ä´© SQL pass-through §Þ³N¡Aª½±µ¨Ï¥Î¦øªA¾¹ªº·í¦a»yªk¡A¥i¾a¦w¥þ¦a´£¨Ñ¼u©Êªº¥D±q¬[ºc¸Ñ¨M¤è®×¡C¥iµ¹¤©±z¤@Ó¥i¾aªº°ò¦¡A¦b¨ä¤W²£¥Í³q¥Îªº¥D±q¬[ºc¸Ñ¨M¤è®×¡C¸ê®Æ¦r¨å¡B¥»¦a¸ê®Æ¶°©M»·ºÝ¸ê®Æ¶°¡Bnull ¤ä´©¡B²§°Ê¥æ©ö³B²z¥H¤Î¥i¹ï ODBC ¸ê®Æ¨Ó·½¶i¦æ¦s¨úµ¥µ¥³o¨Ç¥\¯à³£¬°±z¶}µo¥D±q¬[ºc¸Ñ¨M¤è®×±a¨Ó¤F¤è«K¡C
¼W±j¥D±q¬[ºc®Ä¯à
¨Ï¥Î Visual FoxPro ´£¨ÑªºÄݩʤΠODBC ÅX°Êµ{¦¡¡A±z¥i¥H´£°ª¥D±q¬[ºcÀ³¥Îµ{¦¡ªº®Ä¯à¡C
¨Ï¥ÎÄݩʱ±¨î®Ä¯à
±z¥i¥H¨Ï¥Î¤U¦C·sªº¼È¦s¸ê®Æªí®æ»P»·ºÝ¸ê®Æ¶°ÄݩʨӴ£°ª®Ä¯à¡G
¡ECompareMemo
¡EFetchAsNeeded
¡EPrepared
¥i¥H¨Ï¥Î DBGETPROP( ) ¨ç¼Æ»P CURSORGETPROP( ) ¨ç¼ÆÅã¥Ü³o¨ÇÄݩʡA©Î¥Î DBSETPROP( ) ¨ç¼Æ»P CURSORSETPROP( ) ¨ç¼Æ³]©w³o¨ÇÄݩʡC
¦b§ó·sÀË´ú¤¤¥]§t©Î±Æ°£ªþµùÄæ¦ì
±z¥i¥H¨Ï¥Î CompareMemo Äݩʱ±¨î¦ó®É¨Ï¥ÎªþµùÄæ¦ì¶i¦æ§ó·s½Ä¬ðÀË´ú¡C³oÓ¸ê®Æ¶°¤Î¼È¦s¸ê®Æªí®æÄݩʨM©w¤FªþµùÄæ¦ì (M ©Î G «¬) ¬O§_¥]§t¦b§ó·s WHERE ¤l¥y¤¤¡C¹w³]È¡u¯u¡v(.T.) ·N¨ýµÛªþµùÄæ¦ì¥]§t¦b WHERE ¤l¥y¤¤¡C¦pªG¸ÓÄݩʳ]©w¬°¡u°²¡v(.F.)¡A¤£ºÞ UpdateType Äݩʳ]©wȬO¤°»ò¡AªþµùÄæ¦ì¤£¥[¤J§ó·s WHETE ¤l¥y¡C
·í CompareMemo ³]©w¬°¡u°²¡v(.F.) ®É¡AªþµùÄæ¦ìªº¶}©ñ¼Ò¦¡½Ä¬ðÀË´ú¤£¦A¥i¥Î¡CYn¹ï»¡©úȶi¦æ½Ä¬ðÀË´ú¡AÀ³§â CompareMemo ³]©w¬°¡u¯u¡v(.T.)¡C
§ó¦n¦a½Õ¸`°O¿ýªº§ì¨ú
¨Ï¥Î FetchAsNeeded Äݩʥi¥H«ü©w³sÄò§ì¨ú©Ò¦³¦æ©ÎªÌ¥u¨ú¥Ñ FetchSize ÄݩʨM©wªº½d³ò¤§¤ºªº°O¿ý¡C¦pªG§Æ±æ¨Ï¥Î Visual FoxPro °j°é§ì¨úµ²ªG¶°¦Xª«¥ó¤¤ªº¥þ³¡°O¿ý¡A½Ð¨Ï¥Î¹w³]³]©wÈ¡u°²¡v(.F.)¡C¦pªG§Æ±æ¶È·í¨Ï¥ÎªÌ²¾¥X FetchSize ÄݩʨM©wªº½d³ò¤§¥~®É¤~¨ú°O¿ý¡A½Ð§â FetchAsNeeded ³]©w¬°¡u¯u¡v(.T.)¡A±q¦Ó§ì¨ú¤U¤@Ó°O¿ý¶°¦Xª«¥ó¡C
¥[³t¦³±ø¥óªº¸ê®Æ¶°ªº«·s¬d¸ß¾Þ§@
¨Ï¥Î Prepared ÄݩʡA±z¥i¥H³]©w¬O§_¦b°õ¦æ¸ê®Æ¶°¤§«e·Ç³Æ¦n¬d¸ß¡C¦pªG¸ÓÄݩʬ°¡u¯u¡v(.T.)¡A Visual FoxPro ¦V ODBC ÅX°Êµ{¦¡°õ¦æ·Ç³Æ©Î½sͳsµ²©w¸q¸ê®Æ¶°ªº SQL ¬d¸ßªº½Ð¨D¡C¦pªG«áºÝ¸ê®Æ¨Ó·½ªº ODBC ÅX°Êµ{¦¡¤ä´©¨Ï¥Î·Ç³Æ¦nªº±Ôz¡A¦b¤w¶}±Ò¸ê®Æ¶°¤Wªº«áÄò¬d¸ß¥i¥H§ó§Ö¦a°õ¦æ¡C
©w¸q³W«hªº¸ê®Æ¦r¨å
Visual FoxPro ¸ê®Æ®w (.dbc ÀÉ®×) ´£¨Ñ¤F¤@Ó¸ê®Æ¦r¨å¡A¤¹³\±z¥[¤J³W«h¡B¸ê®Æ¶°¡BIJµo¦¡µ{§Ç¡B¥Ã¤[©ÊÃöÁp¥H¤Î»P¸ê®Æ¨Ó·½ªº³sµ²¡C
¦b¸ê®Æ®w¤¤¡A±z¥i¥H©w¸q¡G
¡EVisual FoxPro ¹ïÀ³¥Îµ{¦¡¤¤ªº¥ô¦ó¸ê®Æªí®æ³£n¹ê¬IªºÄæ¦ì§O©Î°O¿ý¼h¯Å³W«h¡C
¡E¥DÁäȯÁ¤Þ©MÔ¿ï¥DÁäȯÁ¤Þ¡C
¡E¥»¦a¸ê®Æ¶°©M»·ºÝ¸ê®Æ¶°¡C
¡EIJµo¦¡µ{§Ç¡C
¡E¸ê®Æ®w¸ê®Æªí®æ¤§¶¡ªº¥Ã¤[©ÊÃöÁp¡C
¡E»P»·ºÝ¸ê®Æ¨Ó·½ªº³sµ²¡C
¡EÀx¦s¦¡µ{§Ç¡C
¡EÄæ¦ìªº¹w³]È¡C
¡Eªø¸ê®Æªí®æ¦WºÙ©MªøÄæ¦ì¦WºÙ¡C
¥t¥~¡A³z¹L¨Ï¥Î[°Ñ¦Ò§¹¾ã©Ê»²§U³]p¤u¨ã]©w¸q´¡¤J¡B§ó·s©M²¾°£³W«h¨Ó¶i¦æ¨Cӥä[©ÊÃöÁpªº°Ñ¦Ò§¹¾ã©ÊÅçÃÒ¡C
Visual FoxPro Á٤䴩¸ê®Æªí®æ¤¤¥X²{ null È¡A³o·¥¤j¦a´£°ª¤F¬Û®e©Ê¥H¤Î»P¨ä¥L¸ê®Æ¨Ó·½ªº³sµ²¯à¤O¡A¨Ò¦p Microsoft Access¡BVisual Basic ©M®Ú¾Ú SQL ªº¸ê®Æ®w¦øªA¾¹¡C¦³Ãö null Ȫº¸Ô²Ó¤º®e¡A½Ð·j´M[null]©M[null È]¡C
ɧUµ{¦¡¼¶¼g»y¨¥©MµøÄ±¤Æªº³]p¤u¨ã¡A¨Ï¥ÎªÌ¯à°÷¾Ö¦³·¥¤j¦a¾Þ§@ Visual FoxPro ¸ê®Æ®wªº¼u©Ê¡C¦³Ãö¸ê®Æ®w©M¸ê®Æ¦r¨åªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¶}µo¸ê®Æ®w¡v¡C
À˵ø¥»¦a¡B»·ºÝ¥H¤ÎÂ÷½u¸ê®Æ
±z¥i¥H¦b¥»¦a¹q¸£¤W³]p´ú¸Õ¤@Ó¥D±q¬[ºcÀ³¥Îµ{¦¡¡A¥¦¨Ï¥Î»·ºÝ¡B¥»¦a¹q¸£©Î¥Ñ¦hÓ¸ê®Æªí®æ«Øºcªº¸ê®Æ¶°¤¤ªº¸ê®Æ¡C¥»¦a¸ê®Æ¶°¨Ï¥Î¥»¦a¹q¸£¤Wªº¸ê®Æªí®æ¦Ó¤£¬O»·ºÝ¦øªA¾¹¤Wªº¸ê®Æªí®æ¡A¦h¸ê®Æªí®æ¸ê®Æ¶°¨Ï¥Î¤ÀÂ÷¸ê®Æªí®æ¤¤ªº¬ÛÃö¸ê®Æ¡C±z¥i¥H«Ø¥ß¦³±ø¥óªº¸ê®Æ¶°¨Ï±q¦øªA¾¹¤U¸üªº¸ê®Æ¶q³Ì¤p¡A´î¤Ö¶Ç¿é¸ê®Æ©ÎªÌ±q Visual FoxPro À³¥Îµ{¦¡¤¤§ó·s»·ºÝ¸ê®Æ¡C¦³Ãö¸ê®Æ¶°ªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u³B²z¸ê®Æ¶°¡v¡C
¥Î²§°Ê¥æ©öºÞ²z¦@¥Î¦s¨ú
±z¥i¥H³]p±zªºÀ³¥Îµ{¦¡¨Ï¤§´£¨Ñ¹ï¸ê®Æªº¦@¥Î¦s¨ú¡C¦@¥Î¦s¨ú¥]¬A¦b¨Ï¥ÎªÌ¶¡¦@¥Î¸ê®Æ¥H¤Î¦b¥²n®É¨î¦s¨ú¡C²§°Ê¥æ©ö¥H¤Î½w½Ä³B²z ¡X ¶}©ñ¼Ò¦¡©Î«O¦u¼Ò¦¡¡A°O¿ý¼h¯Å©Î¸ê®Æªí®æ¼h¯Åªº ¡X ·N¨ýµÛ§ó¤Öªºµ{¦¡¼¶¼g¡C¤º«Øªº§å¦¸³B²z¥H¤Î¹ï³B²z§ó·s©Ò°µ¸Ô²Óªº±±¨î³£Â²¤Æ¤F¦h¤H¨Ï¥ÎÀô¹Ò¤¤ªº¸ê®Æ§ó·s¤u§@¡C¦³Ãö³]p¦@¥Î¦s¨úÀ³¥Îµ{¦¡ªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¦@¦P¦s¨ú¤§µ{¦¡³]p¡v¡C
¶}µo°ê»Ú¤ÆÀ³¥Îµ{¦¡
Visual FoxPro ¦b´XÓ»â°ì´£¨Ñ¹ï°ê»Ú¤ÆÀ³¥Îµ{¦¡¶}µoªº¤ä´©¡C¨Ò¦p Visual FoxPro ¤ä´©¼ÆÓ¦r½X¶¡A§ÆÃ¾»P«X°êªº¦r½X¶¥i¥H¦b MS-DOS¡BMicrosoft Windows ¥H¤Î Macintosh ¥»O¤W¨Ï¥Î¡CVisual FoxPro ¤]¤ä´©¤é»y¡BÁú»y¡BÁcÅ餤¤å¥H¤Î²Å餤¤åªº¦r¶°¡F¤£¹L¡A¤£¤ä´© Unicode¡CVisual FoxPro ¤ä´©¤é»y¡B¼w»y¡BÁcÅ餤¤å¡B¦B®q»yµ¥»y¨¥ªº±Æ§Ç¦C¡C¦³Ãö¶}µo°ê»Ú¤ÆÀ³¥Îµ{¦¡ªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¶}µo°ê»Ú¤ÆÀ³¥Îµ{¦¡¡v¡C
¹ê¬I¥D±q¬[ºcÀ³¥Îµ{¦¡
¦b¥D±q¬[ºcÀ³¥Î¶}µo¤¤°£¤F¨Ï¥Î¸ê®Æ¶°¤§¥~¡A±zÁÙ¯à°÷¨Ï¥Î Visual FoxPro SQL pass-through ¨ç¼Æ§â¥ô¦ó¥»¦a¹q¸£¦øªA¾¹»yªkª½±µ°õ¦æ¨ì¥t¤@Ó¦øªA¾¹¤¤¡C³o¨Ç¨ç¼Æ´£¨Ñ¤F¶W¥X¸ê®Æ¶°¯à¤O¤§¥~ªº¹ï¦øªA¾¹ªº¦s¨ú»P±±¨î¯à¤O¡C¦³Ãö SQL pass-through ªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¨Ï¥Î SQL pass-through §Þ³N¥[±jÀ³¥Îµ{¦¡¡v¡C
·í¦b¥»¦a¹q¸£³]p§¹À³¥Îµ{¦¡¥H«á¡A±z¥i¥H¤W²¾¨Ã¦b«áºÝ¸ê®Æ¨Ó·½¤W¹ê¬I¥¦¡C¤W²¾§â¥D±q¬[ºcªºÀuÂIÀ³¥Î¦b¥»¦a¹q¸£À³¥Îµ{¦¡¤§¤W¡A¨Ã¤¹³\±z«Ø¥ß»Pì©l Visual FoxPro ¸ê®Æªí®æªº¸ê®Æµ²ºc¬Û¦Pªº»·ºÝ¦øªA¾¹¸ê®Æ®w¡A¤W²¾®É±z¥i¥H¿ï¨ú±Nþ¨Ç¸ê®Æªí®æ²¾¨ì¦øªA¾¹¡Aþ¨Ç¸ê®Æªí®æ¯d¦b¥»¦a¹q¸£¡A¥H«K§Ö³t¦s¨ú¡C¦³Ãö¤W²¾ªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¤W²¾ Visual FoxPro ¸ê®Æ®w¡v¡C
¬ÛÃö¸ê°T
Visual FoxPro ¥\¯à·§Æ[
¤É¯Åª©¥»
¶}µo¸ê®Æ®w
«Ø¥ß¸ê®Æ¶°
¦@¦P¦s¨ú¤§µ{¦¡³]p
»P¨ä¥LÀ³¥Îµ{¦¡¬Û¤¬¾Þ§@
----------------------------------------------------------------------------------------------
ì¤å¡G
Client/Server Solution Development
You can use Visual FoxPro as a front end for developing robust client/server applications. Visual FoxPro combines the higher-level support of updatable views of server data with direct access to native server syntax using SQL pass-through. This gives you a solid foundation on which to build versatile client/server solutions. A full-featured data dictionary, local and remote views, null support, transactions, international application support, and access to ODBC data sources all contribute to the features you need for client/server development.
Increasing Client/Server Performance
You can increase the performance of your client/server application using the properties and ODBC driver provided in Visual FoxPro.
Controlling Performance with Properties
You can increase performance by using the following cursor and remote view properties:
¡ECompareMemo
¡EFetchAsNeeded
¡EPrepared
You can display these properties using the DBGETPROP( ) Function and CURSORGETPROP( ) Function functions, or set the properties with the DBSETPROP( ) Function and CURSORSETPROP( ) Function functions.
Include or Exclude Memo Fields in Update Detection
You can use the CompareMemo property to control when memo fields are used to detect update conflicts. This view and cursor property determines whether memo fields (types M or G) are included in the update WHERE clause. The default setting, True (.T.), means that memo fields are included in the WHERE clause. If you set this property to False (.F.), memo fields don't participate in the update WHERE clause, regardless of the settings of UpdateType.
Optimistic conflict detection on Memo fields is disabled when CompareMemo is set to False (.F.). For conflict detection on memo values, CompareMemo should be set to True (.T.).
Fine Tune Record Fetching
Use the FetchAsNeeded property to specify if all rows are fetched progressively, or only those within the row set determined by the FetchSize property. If you want to fetch all of the rows in the result set using the Visual FoxPro idle loop, use the default setting, False (.F.). If you want to fetch only when the user scrolls beyond the row set determined by the FetchSize property, set FetchAsNeeded to True (.T.) to fetch the next row set.
Speed Up Re-query Operations on Parameterized Views
Using the Prepared property, you can set whether the query for the view is prepared before it is executed. If you set this property to True (.T.), Visual FoxPro sends a request to the ODBC driver to prepare or compile the SQL query that defines the view. If the ODBC driver for your back-end data source supports the use of prepared statements, subsequent re-queries on the open view are executed faster.
Defining Rules with the Data Dictionary
Visual FoxPro databases (.dbc files) provide a data dictionary that allows you to add rules, views, triggers, persistent relationships, and connections to every table in a database.
Within a database you can define:
¡EField-level or record-level rules that Visual FoxPro enforces wherever the table is used in an application.
¡EPrimary and candidate index keys.
¡ELocal and remote views.
¡ETriggers.
¡EPersistent relationships between database tables.
¡EConnections to remote data sources.
¡EStored procedures.
¡EDefault values on fields.
¡ELong table and field names.
In addition, you can enforce referential integrity for every persistent relationship by using the Referential Integrity Builder to define rules for inserts, updates, and deletes.
Visual FoxPro also supports null values in tables, greatly improving compatibility and connectivity with other data sources such as Microsoft Access, Visual Basic, and SQL-based servers. For details about null values, search for "null" and "null values".
Each Visual FoxPro database is completely user-extensible, with access through language enhancements and the visual designers. For more information about databases and data dictionaries, see Developing Databases.
View Local, Remote, and Offline Data
You can design and test a client/server application on your local computer using data from remote, local, or multiple-table heterogeneous views. Local views use tables on your local computer rather than tables on a remote server, and multiple table views use related data from separate tables. You can create parameterized views to minimize the amount of data you download from the server, take the data on the road, or update remote data from your Visual FoxPro application. For more information about views, see Working with Views.
Manage Shared Access with Transactions
You can design your application to provide shared access to data. Shared access involves sharing data among users and restricting access when necessary. Transactions and buffering ¡X pessimistic or optimistic, record-level or table-level ¡X mean less programming for you. Built-in batch processing and detailed control over handling update conflicts simplifies updating data in a multiuser environment. For details about designing your application for shared access, see Programming for Shared Access.
Develop International Applications
Visual FoxPro provides several areas of support for developing international applications. For example, Visual FoxPro supports several code pages. The code pages for Greek and Russian are supported on MS-DOS, Microsoft Windows, and Macintosh platforms. Visual FoxPro also supports double-byte character sets for languages such as Japanese, Korean, Traditional Chinese, and Simplified Chinese; however, Unicode is not supported. Visual FoxPro supports collation sequences for languages such as Japanese, German, Traditional Chinese, and Icelandic. For more information about international applications, see Developing International Applications.
Implement a Client/Server Application
In addition to using views for client/server development, you can send any native server syntax you want directly to a server with Visual FoxPro SQL pass-through functions. These functions permit additional server access and control beyond the capability of views. For details about SQL pass-through see Enhancing Applications using SQL Pass-Through Technology.
After designing your application locally, you can upsize and implement it against a back-end data source. Upsizing applies the benefits of client/server architecture to the local application and allows you to create a remote server database with the same table structure and data as the original Visual FoxPro tables. When you upsize, you choose which tables move to the server and which remain locally for more immediate access. For details about upsizing see Upsizing Visual FoxPro Databases.
See Also
Overview of Visual FoxPro Features
Upgrading from Earlier Versions
Developing Databases
Creating Views
Programming for Shared Access
Interaction with Other Applications _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 62 ¼Ó
|
µoªí©ó: ¬P´Á¤» ¤E¤ë 11, 2004 12:07 am ¤å³¹¥DÃD: |
|
|
¶}µo Visual FoxPro À³¥Îµ{¦¡
Visual FoxPro ´£¨Ñ¤@¨t¦C¼sªxªº¤u¨ã©M§Þ³N¡A¨Ï±z¯à§Ö³t¦a¨Ï¥Î¦³¤Oªº¸ê®Æ¾Þ§@¯à¤O¨Ó«Ø¥ß¦³¼u©Êªº¸Ñ¨M¤è®×¡CVisual FoxPro À³¥Îµ{¦¡¶}µoÀô¹ÒÀ°§A¸Ñ¨M¾ãÓÀ³¥Îµ{¦¡¶}µo¡C
¦b¥»³¹¸`¤¤
À³¥Îµ{¦¡³W¹º
´£¨Ñ½Ñ¦pÃö©ó³]p¡B¬[ºc©M¦w¥þ©Êµ¥¥DÃDªº¸ê°T©M¦Ò¶q¡AÀ°§U±zÂÔ·V³W¹º±zªºÀ³¥Îµ{¦¡¡C
«Ø¥ßÀ³¥Îµ{¦¡
´£¨Ñ³B²z«Ø¥ßÀ³¥Îµ{¦¡ªº·§Æ[©M¨BÆJ¡C
³B²z¸ê®Æ
´£¨Ñ¦³Ãö¦b±zªºÀ³¥Îµ{¦¡¤¤¨Ï¥Î¸ê®Æªº·§Æ[©M¸ê°T¡AÁ|¨Ò¨Ó»¡¡A¤ÀªR¸ê®Æ»Ý¨D©M³]p±zªºÀ³¥Îµ{¦¡¨Ó²Å¦X¨º¨Ç»Ý¨D¡C
¨Ï¥Î SQL pass-through §Þ³N¥[±jÀ³¥Îµ{¦¡
´yz¦b¤@Өϥλ·ºÝ¸ê®Æ¶°ªº¤u§@À³¥Îµ{¦¡¤¤¨Ï¥Î¥D±q¬[ºc§Þ³N¡C
Web ªA°È©M¤¸¥ó
´yzÂX¥RÀ³¥Îµ{¦¡¬°¦h¨Ï¥ÎªÌ¤u§@ªº¤èªk¡C
³Ì¨Î¤ÆÀ³¥Îµ{¦¡
´yz³z¹L±zªºÀ³¥Îµ{¦¡Åý®Ä¯à³Ì¨Î¤Æªº¤èªk¡C
´ú¸Õ©M°£¿ùÀ³¥Îµ{¦¡
°Q½×¦b¶}µo¶g´Á¤¤´ú¸Õ»P°£¿ù©Ò»Ýªº¨BÆJ¡C³Ì¦nªºµ²ªG¨Ó¦Û¼g¤J¥i²z¸Ñ»PºûÅ@ªºµ{¦¡½X¥H¤Î¥i¥Îªº°£¿ù¤u¨ã¡C
½sͳsµ²À³¥Îµ{¦¡
´yz³z¹L½s͵{¦¡½X¨Ó«Ø¥ß±zªºÀ³¥Îµ{¦¡©M´£¨Ñ¦³Ãö¨Ó¦Û±zªº±M®×¤¤°Ñ¦Ò¥i×§ïÀÉ®×¥H¤Î«Ø¥ßÀ³¥Îµ{¦¡Àɮתº¸ê°T¡C
²ÕºA¥Î©óÀ³¥Îµ{¦¡ªº»¡©úÀÉ
´yz¸Ó¦p¦ó³]©w¬°±z©Ò«Ø¥ßªºÀ³¥Îµ{¦¡¨Ï¥Î»¡©úÀÉ¡C
¤À°eÀ³¥Îµ{¦¡
´£¨Ñ¦³Ãö·Ç³Æ¤À°e±zªºÀ³¥Îµ{¦¡ªº¸ê°T¡C
¬ÛÃö³¹¸`
¦p¦ó¨Ï¥Î Visual FoxPro
°Q½×¦p¦óÀ°§U±z«Ø¥ß©MºÞ²z°ª®Ä¯à¸ê®Æ®wÀ³¥Îµ{¦¡»P¤¸¥óªº Visual FoxPro µ{¦¡³]pÀô¹Ò©M¤u¨ã¡C
¦b Visual FoxPro ¤¤ªºµ{¦¡³]p
´yz¦p¦ó²`¤JÁA¸Ñª«¥ó¾É¦Vµ{¦¡³]p©M¨Æ¥ó¾É¦V¼Ò«¬¯à¨Ï§Aªºµ{¦¡³]p¥Í²£¤O³Ì¨Î¤Æ¦Ó¥B¨Ï§A¯à°÷¨Ó¦s¨ú Visual FoxPro ªº¥þ³¡¥\®Ä¡C
³Ì¨Î¤ÆÀ³¥Îµ{¦¡
´£¨Ñ¦p¦ó±q±zªº§@·~¨t²Î¡BVisual FoxPro ©M±zªºÀ³¥Îµ{¦¡¨ú±o³Ì¨Î®Ä¯à¡C
----------------------------------------------------------------------------------------------
ì¤å¡G
Developing Visual FoxPro Applications
Visual FoxPro provides an extensive set of tools and technologies so you can rapidly build flexible solutions with powerful data handling capabilities. The Visual FoxPro application development environment helps you with all aspects of application development.
In This Section
Application Planning
Provides information and considerations, such as topics about design, architecture, and security, to help you plan your applications carefully.
Creating Applications
Provides an overview and phases involved with creating an application.
Working with Data
Provides an overview and information about using data in your applications, for example, analyzing data requirements and designing your application components to meet those requirements.
Enhancing Applications Using SQL Pass-Through Technology
Describes techniques for implementing client/server technology in a working application that uses remote views.
Web Services and Components
Describes ways to extend applications to make them work for multiple users.
Optimizing Applications
Describes ways to optimize performance by making your application.
Testing and Debugging Applications
Discusses testing and debugging as necessary stages in the development cycle. The best results come from writing understandable and maintainable code and using the available debugging tools.
Compiling an Application
Describes building your application by compiling code and provides information about referencing modifiable files and building an application file from your project.
Configuring Help Files for Applications
Describes how to configure access to Help files that you create for your application.
Distributing Applications
Provides information about preparing your application for distribution.
Related Sections
Using Visual FoxPro
Discusses the Visual FoxPro programming environment and tools that help you create and manage high-performance database applications and components.
Programming in Visual FoxPro
Describes how understanding object-oriented programming and the event-driven model can maximize your productivity and enable you to access the full power of Visual FoxPro.
Optimizing Applications
Provides information on how to get the best performance from your operating system, Visual FoxPro, and your application. _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 63 ¼Ó
|
µoªí©ó: ¬P´Á¤» ¤E¤ë 11, 2004 11:18 pm ¤å³¹¥DÃD: |
|
|
À³¥Îµ{¦¡³W¹º
»{¯u²Ó½oªº³W¹º¥i¥H¸`¬Ù®É¶¡¡Bºë¤O©M¸êª÷¡C¦b³W¹º¶¥¬q¡AÀ³¸ÓÅý¨Ï¥ÎªÌ§ó¦h¦a°Ñ»P¶i¨Ó¡CµL½×¦h»ò¥J²Óªº³W¹º¡A¦b±M®×¹ê¬Iµ{§Ç¤¤¤]»Ýn¤£Â_¼í¦â¡A¨Ã±µ¨ü¨Ï¥ÎªÌªº¤ÏÀ³»P·N¨£¡C
¦b¥»³¹¸`¤¤
³]p¦Ò¶q
°Q½×¦p¦ó¦b¶}µo¤§«e©Ò°µªº³]p¤è®×©¹©¹·|¼vÅT§A¦p¦ó«Ø¥ßÀ³¥Îµ{¦¡¡C
À³¥Îµ{¦¡¬[ºc
´yz Visual FoxPro À³¥Îµ{¦¡¬[ºc¦p¦ó¦]±z¨M©w«Ø¥ßªºÀ³¥Îµ{¦¡ªºÃþ«¬¦Ó§ïÅÜ¡C
¦w¥þ©Ê¦Ò¶q (Visual FoxPro)
Åã¥Ü§AÀ³¸Ó¦p¦óª¾¹D¨Ó¦Û¤@ºØ°Ó·~Æ[ÂI©M¤@Ó³Q¿ï¾Üªº¦w¥þ¼Ò«¬¯à¦b®Ä¯à¡B¥i´ú¶q©Ê©M³¡¸p¤W¦³ªº§t·Nªº¦w¥þ»Ý¨D¡C
¹Î¶¤¶}µo±M®×pµe
´yz¦p¦ó¨Ï¥Îª©¥»ºÞ²z³nÅé¨ÓºÞ²z±M®×¤¤ªºÀɮסA¨Ò¦p Microsoft Visual SourceSafe¡A§â¤@²Õ¨ã¦³§Þ³N¯à¤Oªº¶}µoªÌµ²¦X¦b¤@°_¡A¥i¥H§Ö³t«Ø¥ß¥X½ÆÂøªºÀ³¥Îµ{¦¡¡C
¶}µo°ê»Ú¤ÆÀ³¥Îµ{¦¡
Åã¥Ü¸Ó¦p¦ó³]p Visual FoxPro À³¥Îµ{¦¡¨Ï¨ä°ê»Ú©Ê¦a¦p¦P¦X¥G°ê¤º¦¡¦a¦³®Äªº¨Ï¥Î Visual FoxPro ªº°ê»Ú¤Æ¥\¯à¡C
¬ÛÃö³¹¸`
¶}µo Visual FoxPro À³¥Îµ{¦¡
¥]¬AÃö©ó¸Ó¦p¦óµo®i Visual FoxPro À³¥Îµ{¦¡ªº·§©À©Ê¸ê°T¡B«Ø¥ß¸ê®Æ®w©M¨Ï¥ÎªÌ¬É±ªº«ü¥O¥H¤Î¨ä¥L¥ô°È»Ýn²£¥Í Visual FoxPro À³¥Îµ{¦¡¡C
«Ø¥ßÀ³¥Îµ{¦¡
°Q½×¸Ó¦p¦ó«Ø¥ß Visual FoxPro À³¥Îµ{¦¡¡A¥i¯à¥]¬A¤@өΦhÓ¸ê®Æ®w¡B³]©wÀ³¥Îµ{¦¡¨t²ÎÀô¹Òªº¥Dµ{¦¡¥H¤Î¨Ï¥ÎªÌ¬É± (½Ñ¦pªí³æ¡B¤u¨ã¦C©M¥\¯àªíµ¥)¡C
³B²z¸ê®Æ
°Q½×¸Ó¦p¦ó«Ø¥ß¦³¥H§Aªº¸ê®Æ»Ý¨D¬°°ò¦ªº¯Á¤Þ¡B¸ê®Æªí®æ©M¸ê®Æ®wªº¦³®ÄªºÀ³¥Îµ{¦¡¡C
³B²z±M®×
©w¸q¤@Ó±M®×²ÕºA©M¤@²Õ²£¥Í¤@Óµ{¦¡ªºÀɮשγ̫᪺¤G¶i¦ìÀɮשÎÀɮסC
----------------------------------------------------------------------------------------------
ì¤å¡G
Application Planning
Careful planning saves time, effort, money, and sanity. The more you involve your end users in the planning process, the better. No matter how carefully you plan, though, you'll probably end up refining the specifications as you progress through the project and your end users provide feedback.
In This Section
Design Considerations
Discusses how the design decision you make will impact how you create your application.
Application Architecture
Describes how Visual FoxPro application architecture varies with the type of application you decide to create.
Security Considerations (Visual FoxPro)
Shows how you should be aware of security requirements from a business perspective and the implications that a chosen security model can have on performance, scalability, and deployment.
Planning for Team Development Projects
Discusses how using source control software, such as Microsoft Visual SourceSafe, to manage the files in a project makes it possible to create complex applications quickly by combining the skills of a team of developers.
Developing International Applications
Shows how to design Visual FoxPro applications so they are as effective internationally as domestically using the international features of Visual FoxPro.
Related Sections
Developing Visual FoxPro Applications
Includes conceptual information about how to develop Visual FoxPro applications, instructions for creating databases and the user interface, and other tasks needed to create Visual FoxPro applications.
Creating Applications
Discusses how to create Visual FoxPro application, which may include one or more databases, a main program that sets up the application's system environment, and a user interface comprised of forms, toolbars, and menus.
Working with Data
Discusses how to create effective applications with indexes, tables, and databases based on your data requirements.
Working with Projects
Defines a project a configuration and a group of files that produce a program or final binary file or files. _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 64 ¼Ó
|
µoªí©ó: ¬P´Á¤@ ¤E¤ë 13, 2004 12:41 am ¤å³¹¥DÃD: |
|
|
³]p¦Ò¶q
¦b¶}µo¤§«e©Ò°µªº³]p¤è®×·|¹ï±z©Ò«ØÄ³À³¥Îµ{¦¡ªº³¡¤À²£¥Í«Ü¤jªº¼vÅT¡C¦³¨Ç¦Ò¶q§A»Ýn¨Ó¦Ò¼{¥]¬A¡G
¡E¨Ï¥ÎªÌ°õ¦æ¶°¤¤©Î¤@¯ë¤u§@¡C
¡E³]©w©Ò»Ýªº¸ê®Æ¤j¤p¡C
¡E³æ¤H¨Ï¥ÎªÌ©M¦h¤H¨Ï¥ÎªÌ¡C
¡EÀ³¥Îµ{¦¡¨Ï¥ÎªÌ©Ò¥]¬Aªº¤H¡C
¡E¥»¦a¸ê®Æ©Î»·ºÝ¸ê®Æ¡C
¤@¯ëªº¨Ï¥ÎªÌ°Ê§@
±zªº¨Ï¥ÎªÌ¥i¯à»Ýn³B²zÅU«È¡Bq³æ©Î¦UºØ²£«~¡A¥L̳B²z°T®§ªº¼Ò¦¡±N¨M©wÀ³¥Îµ{¦¡¦p¦ó¶i¦æ¸ê®Æ³B²z¡C¨Ò¦p¡A©Ò¨Ï¥Îªºq³æ¿é¤Jªí³æ¤]³\¹ï¤@¨ÇÀ³¥Îµ{¦¡¦³¥Î¡A¦ý³oÓªí³æ¥i¯à¨Ã¤£¾A¥Î©óºÞ²z³fª«²M³æ©Î°lÂܾP°â°O¿ý¡C
¸ê®Æ®wªº¤j¤p
·í»Ýn³B²zÃe¤jªº¸ê®Æ®É¡A¥²»Ý¦Ò¼{®Ä²v°ÝÃD¡C±z¥i¯à·Qn§ïÅܨϥΪÌÂsÄý¸ê®Æªº¤è¦¡¡CÁ|¨Ò¨Ó»¡¡A¦pªG¦b¤@Ó¸ê®Æªí®æ¤¤¦³«Ü¤Öªº°O¿ý¡A¥i¥H¦b¸ê®Æªí®æ¤¤¤@¦¸ÂsÄý¤@µ§°O¿ý¡C¦ý¦pªG¸ê®Æªí®æ¤¤¦³¤j¶qªº°O¿ý¡A´N¥²¶·¬°¨Ï¥ÎªÌ¦Ò¼{´£¨Ñ¨ä¥L¦s¨ú¸ê®Æªº¤èªk¡A¨Ò¦p¡A¨Ï¥Î²M³æ¡B¹ï¸Ü¤è¶ô¡B¹LÂo±ø¥ó©M¦Ûq¬d¸ßµ¥µ¥¡C¬ÛÃö¸Ô²Ó¸ê°T½Ð°Ñ¦Ò¡u³Ì¨Î¤ÆÀ³¥Îµ{¦¡¡v¡B¡u¨Ï¥Î±±¨î¶µ¡v©M¡u¦b¸ê®Æ¶°¤¤Åã¥Ü¸ê®Æ¡v¡C
³æ¤H¨Ï¥ÎªÌ©M¦h¤H¨Ï¥ÎªÌ
«Ø¥ßÀ³¥Îµ{¦¡®É¡A³Ì¦n¦Ò¼{¨ì·|¦³´XӨϥΪ̦P®É¦s¨ú¸ê®Æ®wªº±¡ªp¡CVisual FoxPro ´£¨Ñ¤F¤@¨Ç§Þ³N¡A¨Ï±z¯à°÷«Ü®e©ö¦a¶i¦æ¦@¥Î¦s¨ú¤è±ªºµ{¦¡¼¶¼g¡C¦@¦P¦s¨ú¤§µ{¦¡³]p´yz¤F¤¹³\¦hӨϥΪ̦P®É¦s¨ú¸ê®Æ®wªº§Þ³N¡C
°ê»Ú¤Æ¦Ò¼{
Y¨Æ¥ýª¾¹DÀ³¥Îµ{¦¡¶È¨Ï¥Î¦b³æ¤@»y¨¥Àô¹Ò¤¤¡A¥i¥H¤£¦Ò¼{°ê»Ú¤Æ°ÝÃD¡C¥t¤@¤è±¡A¦pªG±z·QÂX¤j¥«³õ¡A©Î¨Ï¥ÎªÌn³B²z°ê»Ú¤Æªº¸ê®Æ©MÀô¹Ò³]©w¡A«hÀ³¦b«Ø¥ßÀ³¥Îµ{¦¡®É¦Ò¼{³o¨Ç¦]¯À¡C¶}µo°ê»Ú¤ÆÀ³¥Îµ{¦¡ÄÄz¤F¦bÀ³¥Îµ{¦¡¤¤»Ýn°µªº¤@¨Ç³B²z¡A³o¨ÇÀ³¥Îµ{¦¡¬O¬°°ê»Ú¤Æ¨Ï¥Î¦Ó¶}µoªº¡C
¥»¦a¸ê®Æ©M»·ºÝ¸ê®Æ
YÀ³¥Îµ{¦¡»Ýn³B²z»·ºÝ¸ê®Æ¡A«h¥²¶·¨Ï¥Î·sªººÞ²z¤èªk¡A³oºØ¤èªk»P³B²z¥»¦a Visual FoxPro ¸ê®Æ¦³©Ò¤£¦P¡C¦p¦ó¡G«Ø¥ß¸ê®Æ¶°¤¶²Ð¤F¦p¦ó¬°¥»¦a¸ê®Æ©Î»·ºÝ¸ê®Æ«Ø¥ß¸ê®Æ¶°¡C
³Æ¥÷ì©lµ{¦¡½X
¦bÀ³¥Îµ{¦¡ªºµo®iµ{§Ç¤¤¡A²£¥ÍÀ³¥Îµ{¦¡¤§«e¥ý³Æ¥÷©Ò¦³ì¨Óªºµ{¦¡Àɮ׬O¤@Ó¨}¦nªº²ßºD¡C³Æ¥÷ÀÉ®×À³»P½sͳsµ²¹LªºÀ³¥Îµ{¦¡¤À¶}Àx¦s¡C
ª`·N¡G
À³½T«O«O¯d¤F§¹¾ãªºì©lµ{¦¡½X¡A¥H³Æ±N¨Ó¨Ï¥Î¡CµLªk¥Ñ½sͳsµ²¹Lªºµ{¦¡½X²£¥Íì©lµ{¦¡½X¡C
¬ÛÃö¸ê°T
À³¥Îµ{¦¡³W¹º
¶}µo°ê»Ú¤ÆÀ³¥Îµ{¦¡
¦@¦P¦s¨ú¤§µ{¦¡³]p
³Ì¨Î¤ÆÀ³¥Îµ{¦¡
----------------------------------------------------------------------------------------------
ì¤å¡G
Design Considerations
Some of the design decisions you make impact how you create parts of the application. Some of the considerations you need to take into account include:
¡ECentral or common tasks users perform.
¡ESize of the data set needed.
¡ESingle or multiple users.
¡EPeople that the application users include.
¡ELocal or remote data.
Common User Activities
Even if your end users are working with customers, orders, and parts, how they are working with this information will determine how your application should deal with the data. An order entry form might be necessary for some applications, but would not be a good tool for managing inventory or tracking sales, for example.
Database Size
If you are working with large sets of data, you need to consider performance issues. You might want to change the way users navigate data. For example, if you have a small number of records in a table, you can let users navigate records in the table one record at a time. However, if you have a large number of records, consider providing other ways for users to access the data, for example, using lists, dialog boxes, filters, custom queries, and so on. For more information, see Optimizing Applications, Using Controls, and Displaying Data in Views.
Single User vs. Multiple Users
It's a good idea to create your application with the assumption that multiple users will be accessing the database at the same time. Visual FoxPro makes it easy to program for shared access. Programming for Shared Access describes techniques for allowing multiple users to simultaneously access your database.
International Considerations
If you know your application will be used only in a single-language environment, you don't have to worry about internationalization. If, on the other hand, you want to expand your market, or if your users could be dealing with international data or environment settings, you'll want to take these factors into account as you create the application. Developing International Applications discusses the issues you'll need to deal with as you develop applications for international use.
Local vs. Remote Data
If your application deals with remote data, you'll manage it differently than you would manage native Visual FoxPro data. How to: Create Views explains how to create views to local or remote data.
Backing up Your Source Code
In all application development, it's a good practice to make complete backup copies of your original program files before you build an application. Store the backup copies separately from your compiled applications.
Note:
Be sure to maintain separate copies of your original source programs for future use. You cannot re-create your source programs from their compiled code.
See Also
Application Planning
Developing International Applications
Programming for Shared Access
Optimizing Applications _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 65 ¼Ó
|
µoªí©ó: ¬P´Á¤@ ¤E¤ë 13, 2004 12:42 am ¤å³¹¥DÃD: |
|
|
Visual FoxPro §@¬°À³¥Îµ{¦¡ªº«eºÝ
§@¬°¤@Ó Visual FoxPro ªº¶}µo¤Hû¡A±z¥i¯à»{¬°¨Ï¥ÎµøÄ±¤Æªº³]p¤u¨ã¨Ó¶}µoµ{¦¡¬O²z©Ò·íµMªº¡C¨Ò¦p¡A¥i¥H¨Ï¥Î Visual FoxPro ªºªí³æ¡B¥\¯àªí©M³øªí¨Ó³]p¦Û¤vªº¨Ï¥ÎªÌ¬É±¡C¦¹¥~¡A¦b¨Ï¥Î Visual FoxPro ¶}µoµ{¦¡®É¡A³Ì¦³¥i¯àªº±¡ªp´N¬O§â¸ê®Æ¥Î Visual FoxPro ¸ê®Æªí®æªº«¬¦¡Àx¦s°_¨Ó¡C
¦b¶}µo¥ø·~À³¥Îµ{¦¡®É¡A§â Visual FoxPro ·J¾ã¶i¨Óªº¤@ºØ³~®|¬O¨Ï¥Î Visual FoxPro ¤¤ªºµøÄ±¤Æ³]p¤u¨ã¡AµM«á§Q¥Î¨ä¥Lµ{¦¡¼W±j³o¨Ç¤u¨ãªº¥\¯à¡C¥t¤@ºØ³~®|¬O¨Ï¥Î Visual FoxPro «Ø¥ßµ{¦¡ªº¥~Æ[¡AµM«á§Q¥Î¨ä¥Lµ{¦¡Àx¦s¸ê®Æ¡C³z¹L±N¸ê®Æ²¾¨ì¤@Ó¸ê®Æ®w¦øªA¾¹¤W¡A±z¤]¥i¥H¹ï Visual FoxPro ¤¤ªº¸ê®Æ¶i¦æ¤W²¾¡C
©µ¦ù Visual FoxPro µøÄ±¤Æ³]p¤u¨ãªº¥\¯à
Visual FoxPro ±±¨î¶µªº°ò¥»Ãþ§O¬O¬°µ´¤j¦h¼ÆÀ³¥Îµ{¦¡ªº¬É±¦Ó³]pªº¡C¬°¤F¯à°÷«Ø¥ß¤@ӼзǪº Windows À³¥Îµ{¦¡¡AVisual FoxPro ´£¨Ñ¤F©Ò¦³ªº°ò¥»±±¨î¶µ©M¬É±¤¸¯À¡C¦ý¬O¡A¦bµo®iµ{§Ç¤¤¡A¦³®É·|·P¨ì¶È¶È³o¨Ç°ò¥»¤¸¯À¦bµ{¦¡¤¤¬O¤£°÷ªº¡C¦pªG¥X²{³oºØ±¡ªp¡A¥i¥H«Ø¥ß¦¸Ãþ§O©ÎªÌ¨Ï¥Î ActiveX ±±¨î¶µ¨Ó©µ¦ù Visual FoxPro ¤¤µøÄ±¤Æ³]p¤u¨ãªº¥\¯à¡C
«Ø¥ß¦¸Ãþ§O
Visual FoxPro ªº¤@Ó¯S§O±j¤jªº¥\¯à¬O¦b°ò¥»Ãþ§Oªº°ò¦¤W«Ø¥ß¦¸Ãþ§O¡C³z¹L«Ø¥ß¤@өΪ̦hÓ¦¸Ãþ§O¡A±z´X¥G¥i¥Hº¡¨¬À³¥Îµ{¦¡ªº©Ò¦³»Ýn¡C³oºØ¯à¤O®i²{¦b¡A©Ò«Ø¥ßªº·sª«¥ó©ÎªÌ·s±±¨î¶µºî¦X¤F°ò¥»Ãþ§Oªº©Ò¦³¯S©Ê¡C¨Ò¦p¡AVisual FoxPro ¤¤ªº¦hµ§½s¿è±±¨î¶µ¤£¶È¥]§t¨ä®e¾¹ª«¥óÃþ§OªºÄݩʩM¤èªkµ{§Ç¡A¦Ó¥B¤]¥]§t¨º¨Ç¦b¦hµ§½s¿è±±¨î¶µ¤¤¥X²{ªºª«¥ó (¦p«ö¶s¡B¤å¦r¿é¤J¤è¶ôµ¥µ¥) ¯S©Ê¡C
¦P¼Ë¡A³z¹L¦b°ò¥»Ãþ§O±±¨î¶µªº°ò¦¤W©Ò«Ø¥ßªº¦¸Ãþ§O¡A¥i¥H«Ø¥ß¤@¨Ç¨ã¦³·s¯S©Êªºª«¥ó¨Ó©µ¦ù Visual FoxPro ªº®Ä¯à¡A¤]¥i¥H±NY¤zª«¥óªº¯S©Ê¶i¦æ²Õ¦X¨Ó°µ¨ì³o¤@ÂI¡C¨Ò¦p¡A¥i¥H¦b¤å¦r¿é¤J¤è¶ô¤W·s¼WÃ䮨©ÎªÌ¥ßÅé®ÄªG¨Ó¶i¦æµøÄ±¤Æ¡A¤]¥i¥H±N¤@Ó¼v¹³±±¨î¶µ¡B«ö¶s©M¤å¦r¿é¤J¤è¶ô²Õ¦X¦b¤@°_¡A«Ø¥ß¤@ÓÂI°}¹ÏÂsÄý±±¨î¶µ¡A¨Ï¥ÎªÌ¥i¦b¸Ó±±¨î¶µ¤WÂsÄý¤@¨t¦Cªº .bmp ÀɮסC¥Î³oºØ¤èªk«Ø¥ß¨Ï¥ÎªÌ¦ÛqÃþ§O¡A¥i¥H»²§U¶}µo¤Hû±NÀ³¥Îµ{¦¡¤¤ªº±±¨î¶µ¼Ð·Ç¤Æ¡A±q¦Ó¨Ïµ{¦¡¨ã¦³¦Û¤v¿W¯Sªº·®æ¡C¬ÛÃö¸Ô²Ó¸ê°T½Ð°Ñ¦Ò¡uª«¥ó¾É¦Vµ{¦¡³]p¡v¡C
¨Ï¥Î ActiveX ±±¨î¶µ
¦b Visual FoxPro ¤¤¨Ï¥Î¦¸Ãþ§O«Ø¥ß·s±±¨î¶µªº¥t¥~¤@Ó¤èªk¬O¨Ï¥Î ActiveX ±±¨î¶µ (.ocxÀÉ®×)¡C¥Ñ©ó³o¨Ç±±¨î¶µ¬O¿W¥ß©ó Visual FoxPro ¤§¥~¶}µoªº¡A¦]¦¹¤£¶È¯à¦b Visual FoxPro ¤U¨Ï¥Î¡A¦Ó¥B¦P¼Ë¾A¥Î©ó¨ä¥L Windows À³¥Îµ{¦¡¡C
¹ê»Ú¤W¡AActiveX ±±¨î¶µ¬O³æ¿W¥X°âªº¤¸¥ó¡A¥i»PÀ³¥Îµ{¦¡ºò±K¦a²Õ¦X¦b¤@°_¡C¨Ï¥Î ActiveX ±±¨î¶µ¥i¦³¦p¤U¦n³B¡G
¡E©M«Ø¥ß¡B´ú¸Õ¥H¤ÎºûÅ@¤@Ó Visual FoxPro ±M¥Î±±¨î¶µ¬Û¤ñ¡AActiveX ±±¨î¶µ¦b§¹¦¨¬Û¦P¥ô°Èªº«e´£¤U¡A¥i¸`¬Ù¶}µo¤Hûªº®É¶¡©Mºë¤O¡C¿ï¥Îªº ActiveX ±±¨î¶µ¶V¦X¾A¡A¸`¬Ùªº®É¶¡¶V¦h¡C
¡E³\¦hªº ActiveX ±±¨î¶µ¬O¥Ñ³nÅé¨ÑÀ³°Ó´£¨Ñ¡A¨Óº¡¨¬¤@¯ëÀ³¥Îµ{¦¡ªº»Ýn¡C¨Ò¦p¡A¦pªGÀ³¥Îµ{¦¡»ÝnÅã¥Ü¤@Ó¤é¾ä¡A¦P®É¤¹³\¨Ï¥ÎªÌ¦b¤W±¿ï¨ú¤é´Á¡A³o®É±z±N¥i¥Hµo²{¤@өΪ̦hÓ ActiveX ±±¨î¶µ¯à§¹¦¨³oӻݨD¡C
¡E¦P¤@Ó ActiveX ±±¨î¶µ¥i¥Î©ó¦hÓµ{¦¡¤¤¡C¨Ò¦p¡A¥i¥H¦b Visual FoxPro ©M Visual Basic ¤¤¨Ï¥Î¬Û¦Pªº ActiveX ±±¨î¶µ¡A¦b³B²z±±¨î¶µ®É´£¨Ñ¬Û¦PªºÄݩʩM¤èªkµ{§Ç¡C³o¼Ë¡A±±¨î¶µ¦b©Ò¦³ªºµ{¦¡¤¤¬É±¬Û¦P¡A¨Ï¥ÎªÌ§ó®e©ö³B²z¡C
¡EActiveX ±±¨î¶µ¹ï Windows ¨t²Î¥\¯à¤]¯à¶i¦æ¦s¨ú¡A³o®É¦pªG¶È¨Ï¥Î Visual FoxPro ¤u¨ã¥i¯à·|¤£¤è«K¡A¤]¥i¯à·|«Ü¯Ó¶O®É¶¡¡C¨Ò¦p¡A¥Î ActiveX ±±¨î¶µ¨Ó¦s¨ú¹q¤l¶l¥ó (¨Ï¥Î Windows ªº MAPI ¨ç¼Æ)¡A¦s¨ú§C¶¥ªº Windows ¹Ï§Î¨ç¼Æµ¥µ¥¡C³z¹L¨Ï¥Î¤@Ó ActiveX ±±¨î¶µªºÄݩʡB¨Æ¥ó©M¤èªkµ{§Ç¡A«h¥i¥H«Ü®e©öªº¦bÀ³¥Îµ{¦¡¤¤·s¼W©Ò»Ýªº¯S©Ê¡C
²¨¥¤§¡A¨Ï¥Î ActiveX ±±¨î¶µ¦b©µ¦ùÀ³¥Îµ{¦¡ªº®ÉÔ¡A¤£¶È¥i¥H±N Windows ªº¥\¯à·J¾ã¶i¨Ó¡A¦Ó¥B¥i¥H¦b¶}µoªº²³¦hÀ³¥Îµ{¦¡¤§¶¡«O«ù¤@Pªº·®æ©M¯S©Ê¡C¦³Ãö¨Ï¥Î ActiveX ±±¨î¶µªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¦@¥Î¸ê°T©M·s¼W OLE¡v¡C¦³Ãö«Ø¥ß¨Ï¥ÎªÌ¦Ûq ActiveX ±±¨î¶µªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¦s¨ú Visual FoxPro API¡v¡C
·J¾ã¨ä¥Lµ{¦¡ªº¥\¯à
·í¶}µoÀ³¥Îµ{¦¡®É¡A¦³®É·|µo²{¨ä¥Lµ{¦¡¹ï©ó¸Ñ¨M¬Y¨Ç¥ô°È§ó¬°¦X¾A¡C¨Ò¦p¡AMicrosoft Word ¦b¶l¥ó¦X¨Ö¤W¨ã¦³µL»PÛ¤ñªºÀuÂI¡A¦Ó Microsoft Excel ¦bpºâ½ÆÂøªº¤½¦¡©M¨Ï¥Î¸ê®Æ«Ø¥ß¹Ï§Î¡B¹Ïªí«h§ó¬°¤è«K¡C
»P¨ä¦b Visual FoxPro ¤¤»s§@³o¨Ç¥\¯à¡A¤£¦p±N³o¨Ç³nÅé·J¾ã¨ìÀ³¥Îµ{¦¡¤¤¡A³o±N¨Ï©Ò¶}µoªºÀ³¥Îµ{¦¡§óº¡¨¬»Ýn¡C
¥Î¦p¤U¤èªk¡A¥i¥H±N¨ä¥LÀ³¥Îµ{¦¡ªº¥\¯à»P Visual FoxPro ·J¾ã¦b¤@°_¡G
¡E°õ¦æ Visual FoxPro ºëÆF¡A³o¨ÇºëÆF¥i¥H¨Ï¨ä¥Lµ{¦¡«Ü®e©ö¨Ï¥Î Visual FoxPro ªº¸ê®Æ¡C
¡E¼¶¼g Visual FoxPro µ{¦¡¡A¦bµ{¦¡¤¤¨Ï¥Î¦Û°Ê¤Æ»P¨ä¥L Windows µ{¦¡¶i¦æ¸ê®Æ³q°T¡B¸ê®Æ±±¨î©M¸ê®Æ¦@¨É¡C
¥H¤U³¹¸`±N°w¹ï©µ¦ù Visual FoxPro ®Ä¯àªº³o¨Ç¤èªk¶i¦æ¸Ô²ÓÄÄz¡C
¨Ï¥ÎºëÆF
¤j¶qªº Visual FoxPro ºëÆF¤¹³\±N Visual FoxPro ¤¤ªº¸ê®Æ©M¨ä¥Lªº Windows À³¥Îµ{¦¡·J¾ã¦b¤@°_¡C¨Ò¦p¡A¨Ï¥Î[¶l¥ó¦X¨ÖºëÆF]¥i¥H»²§U±z¦V«È¤á´£¨Ñ«H¥ó¡C·í°õ¦æ¸ÓºëÆF®É¡Aº¥ý«ü©w¥]§t©Ò»Ýªº Visual FoxPro ¸ê®Æªí®æ©ÎªÌ¸ê®Æ¶°¡AµM«á±N¸ê®Æ¥H¤@©wªºÀɮ׮榡¿é¥X (¦p¥Î³r¸¹¤À¹j)¡A©Î³qª¾©Ò¨Ï¥Îªº¤å®Ñ³B²zµ{¦¡§Q¥Î Visual FoxPro OLE DB ´£¨Ñµ{¦¡¨Ó¦s¨ú¸ê®Æ¡C¦pªG¨Ï¥Îªºµ{¦¡¬O Microsoft Word¡AºëÆF±N±Ò°Ê¸Óµ{¦¡¡A«Ø¥ß¤@ӪťզX¨Ö¤å¥ó¡A¨Ã¨Ï¥Î¶l¥ó¦X¨Ö¤u¨ã¦C¡A«Ø¥ß¯S©w½d³ò»P Visual FoxPro ¯S©w¸ê®Æªº³sµ²¡C
¦P¼Ëªº¡A¨Ï¥Î Microsoft Excel ©M Microsoft Query ®É¡A¥i¥H¥Î¼Ï¯Ã¤ÀªRªí¨ÓÀËÅç¸ê®Æ¡A¼Ï¯Ã¤ÀªRªí±N¸ê®Æ«ö¦C¶i¦æ±Æ¦C¡A¤]¥i¥H¥Î¤£¦P¼Ò¦¡À˵ø¡C³z¹L¨Ï¥Î Visual FoxPro ¤¤ªº[¼Ï¯Ã¤ÀªRªíºëÆF]¡A¥i¥H±NÀ³¥Îµ{¦¡¤¤ªº¸ê®Æ§@¬° Microsoft Excel ªº¸ê®Æ¨Ó·½¡A¨Ã¦b Microsoft Excel ¤¤²£¥Í¸Ó¼Ï¯Ã¤ÀªRªí®æ¡C
¨Ï¥Î¦Û°Ê¤Æ
»P¨ä¥LÀ³¥Îµ{¦¡¬Û¤¬Ápôªº§ó¬°¦³®Äªº¤èªk¬O¨Ï¥Î¦Û°Ê¤Æ¡C³z¹L Visual FoxPro µ{¦¡¡A¥i¥H¦s¨ú¨ä¥LÀ³¥Îµ{¦¡¤¤ªºª«¥ó¡AµM«á³z¹L¹ïÄݩʪº³]©w©M¤èªkµ{§Çªº©I¥s¨Ó±±¨î¡C¨Ò¦p¡AMicrosoft Excel ¤¤¦s¦b¤@Ó Application ª«¥ó¥H¤Î¸Óª«¥ó¤¤ªº¤u§@ªí¡B¦C¡BÄæ¤ÎÀx¦s®æ¡A¥i¥Hª½±µ¹ï³o¨Çª«¥ó¶i¦æ°Ê§@¡A¥]¬Aª«¥ó¸ê®Æªº³]©w©MŪ¨ú¡C¦P®É¡A¤]¥i¥H¨Ï¥Î¸Óµ{¦¡¤¤ªº¤@¨Ç©R¥O¨Ó±±¨î¾ãÓ Application ª«¥ó¡C¨Ò¦p¡A³z¹LºÞ²z Microsoft Excel ¤¤ªº Application ª«¥ó¡A¥i¥H¶}±Ò¡BÀx¦s¥H¤Î¦C¦L¤u§@ªí¡A±Ò°Ê Microsoft Excel ªº¹ÏªíºëÆFµ¥µ¥¡C
¨Ï¥Î Visual FoxPro ¨Ó¦Û°Ê¤Æ¤§©Ò¥H¯à§@¬°¯S®í¦Ó¦³®Äªº³B²z Windows µ{¦¡ªº¦]¯À¡A¥Dn¬O¦p¤U´XÓì¦]¡G
¡E¥i¥Hª½±µ¦s¨ú¨ä¥LÀ³¥Îµ{¦¡¡A¥]¬Aµ{¦¡¤¤©Ò¦³ªºª«¥ó©M©R¥O¡C
¡E¤ð¶·±N¸ê®Æ¶×¥X©ÎÂà´«¦¨¨ä¥Lªº®æ¦¡¡A¥i¥Hª½±µ©M¨ä¥LÀ³¥Îµ{¦¡¶i¦æ¸ê®Æ¦@¨É¡C
¡E¨Ï¥Î¼ô±xªºÄݩʩM¤èªkµ{§Ç¡A¥i¥H¹ï¨ä¥LÀ³¥Îµ{¦¡¶i¦æ±±¨î¡C
¡E·í±Ò°Ê¬Y¨ÇÀ³¥Îµ{¦¡®É¡A³o¨Çµ{¦¡¤£»ÝÅý¨Ï¥ÎªÌ¬Ý¨£¡C¨Ò¦p¡A¥i¥H±Ò°Ê Microsoft Excel ¡A±N¸ê®Æ©ñ¤JÀx¦s®æ¤¤¡A¦A°õ¦æ¤@Ó½ÆÂøªº¤½¦¡pºâ³o¨Ç¸ê®Æ¡AŪ¨úµ²ªG¡A±Nµ²ªGÅã¥Ü¦b Visual FoxPro ¤¤¡C©Ò¦³³o¨Çµ{§Ç¨S¦³¥²nÅã¥Ü Microsoft Excel¡A¨Ï¥ÎªÌ¥u»Ý¤@ª½¦b Visual FoxPro Àô¹Ò¤U¡A°£«D¨Ï¥ÎªÌ·QÅã¥Ü Microsoft Excel¡C
¡E±±¨î¨ä¥LÀ³¥Îµ{¦¡ªº©R¥O (ÄݩʩM¤èªkµ{§Ç) ´O¤J Visual FoxPro µ{¦¡¤¤¡A¨Ï±z¦b·Q±±¨î¨ä¥Lµ{¦¡®É¡A¤ð¶·¥t¥~¾Ç²ßµ{¦¡»y¨¥¡C
¦b»P¨ä¥Lµ{¦¡¦@¦P¤u§@®É¡A¥Ñ©ó¦Û°Ê¤Æ¬O¤@Ó¶}©ñªº¤u¨ã¡A©Ò¥H¯S§O¦³®Ä¡C¥»½è¤W¡A¦Û°Ê¤Æ¥u¬O¬°¤F¨ÏÀ³¥Îµ{¦¡§ó¥[§¹µ½¡A±N¨ä¥LÀ³¥Îµ{¦¡¤¤ªº©R¥O©M¸ê®Æ¶×¶°¶i¨Ó¡C
¥H¤U½d¨Ò´yz¤F¦p¦ó±NY¤z Windows µ{¦¡·J¾ã¦b¤@°_¡C°²³]±NÅU«È©M¾P°â¸ê®ÆÀx¦s¦b Visual FoxPro ¤¤¡A¥i¯à»Ýn«Ø¥ß¤@Ó³øªí¨ÓÅã¥Ü©u«×¾P°âª¬ªp¡C
¤@ºØ¤èªk¬O¡A¨Ï¥Î¦Û°Ê¤Æ±N Visual FoxPro ¤¤ªº¾P°â¸ê®Æ½Æ»s¨ì Microsoft Excel ¤u§@ªíªºÀx¦s®æ¤¤¡AµM«á±Ò°Ê Microsoft Excel ªº¹ÏªíºëÆF¨Ó«Ø¥ß¸Ó¸ê®Æªº¤@ӹϪí¡A¨Ã±N¤§½Æ»s¨ì Windows ªº°Å¶Kï¤W¡C©Î¬O¨Ï¥Î¦Û°Ê¤Æ¡A¦A±Ò°Ê Microsoft Word¡A«Ø¥ß©ÎªÌ¶}±Ò¤@Ó¾P°â³øªí¤å¥ó (¦pªG¥H·s¤å¥ó¨Ó«Ø¥ß¡A«h¥i¥H±N Visual FoxPro ¤¤Àx¦sªº¸ê®Æ«ö·Ó¼Ð·Ç¤å¦r´¡¤J)¡AµM«á§â Microsoft Excel «Ø¥ßªº¹Ïªí¶K¤W¥h¡C
¨Ï¥Î¦Û°Ê¤Æ±N Visual FoxPro ·J¾ã¨ìÀ³¥Îµ{¦¡¡A¦p¤Wzªº¨Ò¤l¡A¥u¬O²³¦h¤è®×¤§¤@¡C·í±z¹ï©Ò¨Ï¥ÎªºÀ³¥Îµ{¦¡¸Ìªºª«¥ó©M¤èªkµ{§Ç³v¨B¼ô±x®É¡A¥i¥H·Q¥X³\¦hªº¦n¤è®×¨Ó´£°ªÀ³¥Îµ{¦¡·J¾ãªº®Ä¯à¡C¦³Ãö¦Û°Ê¤Æªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¦@¥Î¸ê°T©M·s¼W OLE¡v¤¤ªº[À³¥Î¦Û°Ê¤ÆºÞ²zª«¥ó]¡C
©µ¦ù Visual FoxPro ªº¸ê®ÆÀx¦s¯à¤O
µL½×¬O¦Ò¼{³t«×¡AÁÙ¬O¦Ò¼{¸ê®Æ®w¤j¤p¡AVisual FoxPro ªº¸ê®Æªí®æ©M¯Á¤Þªº¥\¯à¹ï¥ô¦óÀ³¥Îµ{¦¡¦Ó¨¥³£¬Oºïºï¦³¾lªº¡C¦ý¬O¡A¦³¨Ç®ÉÔ¡A»Ýn¨Ï¥Î¨ä¥L®æ¦¡ªº¸ê®Æ¨Ó©µ¦ù Visual FoxPro ªº¥\¯à¡C¦b¥H¤U±¡ªp·|¹J¨ì³oºØ°ÝÃD¡G
¡EÀ³¥Îµ{¦¡»Ýn¦s¨úªº¸ê®Æ¬O¥Ñ¬J¦sªº¨ä¥Lµ{¦¡«Ø¥ß©MºûÅ@ªº¡C¦b³oºØ±¡ªp¤U¡A°²¦p§@¬°¾P°âµ{¦¡ªº¤@³¡¥÷¡A±z¥i¯à»Ýn¦s¨ú¥Ñ¨ä¥Lµ{¦¡»y¨¥¡B¬Æ¦Ü¦b¤£¦P¥»O¤U¼¶¼gªº·|pµ{¦¡¤¤ªº¸ê®Æ¡C
¡E¨Ï¥Î¤@Ó¸ê®Æ®w¦øªA¾¹¨Ó³Ì¨Î¤Æ¸ê®Æ¦s¨ú¡C¸Ó¸ê®Æ®w¦øªA¾¹¥i¥H¤j´T«×´£°ª¸ê®Æ¦s¨úªº³t«×¡A¯S§O¬O¦b¤j«¬ªº¸ê®Æ®w¸Ì¡C
¡E¬°¤F©M¨ä¥Lµ{¦¡¦@¥Î¸ê®Æ¡A¸ê®Æ»Ý«ö·Ó¤@©w®æ¦¡Àx¦s¡A¥H«KÅý©Ò¦³µ{¦¡³£¯à¦s¨ú¡C
¡E¸ê®Æ¹ï©ó¬YÓ¯S®íµ{¦¡ªº®æ¦¡¨Ó»¡¯S§O¦X¾A (¦p¤u§@ªí)¡C¨Ò¦p¡A¹ï©ó¤@²Õ¸ê®Æ¡AVisual FoxPro À³¥Îµ{¦¡¥u¬O°¸º¸¦s¨ú¥¦¡A°£¦¹¤§¥~¡A¸Ó¸ê®Æ³£¥Ñ¥t¥~ªºµ{¦¡ºûÅ@¡C
¦pªG©Ò»Ýªº¸ê®Æ¬O¥H¤u§@ªí¡B¤å®Ñ³B²z¤å¥ó©Î¨ä¥L Windows µ{¦¡ªº®æ¦¡Àx¦sªº¡A«h¥i¥H¨Ï¥Î¦Û°Ê¤Æ¨Ó¦s¨ú¥¦¡C¨Ò¦p¡A¦pªGÀ³¥Îµ{¦¡»Ýn¤@²Õ®æ¦¡¤Æªº«H¥ó¡A¨º»ò¥i¥H¨Ï¥Î¦Û°Ê¤Æ¡C³o®É¡A³o¨Ç«H¥ó¥i¯à¥H Microsoft Word ªºÀɮתº«¬¦¡Àx¦s¡AÀ³¥Îµ{¦¡»Ýn±Ò°Ê Microsoft Word¡A¶}±Ò¬Û¹ïªº«H¥ó¡A®Ú¾Ú»Ýn´¡¤J¤å¦r©Î¶i¦æ¤å¦r¨ú¥N¡C
¦s¨ú«D Visual FoxPro ¸ê®Æ±`¥Îªº³~®|¬O¨Ï¥Î OLE DB ´£¨Ñµ{¦¡¡COLE DB ´£¨Ñµ{¦¡¤¹³\©M¨ä¥Lµ{¦¡ (³q±`¬O¸ê®Æ®wµ{¦¡) ¤¤ªº¸ê®Æ¶i¦æ³sµ²¡AµM«á¨Ï¥Î¼Ð·Çªº SQL ©R¥O¹ï¸ê®Æ¶i¦æ¬d¸ß©Î½s¿è¡C
¨Ò¦p¡A±z¥i¯à¹ï¦Û¤vªºÀ³¥Îµ{¦¡ªº¦w¥þ©Ê©M²§°Ê¥æ©ö³B²zµ{§Ç³Ì¬°Ãö¤ß¡A¦]¦¹¨M©w¨Ï¥Î Microsoft SQL Server ¨ÓÀx¦s¸ê®Æ¡C¬°¤F¦s¨ú¸ê®Æ¡A¥i¥H¨Ï¥Î SQL Server OLE DB ´£¨Ñµ{¦¡©w¸q¤@Ó¹ï SQL Server ªº³sµ²¡AµM«á´N¥i°õ¦æ¬d¸ß©M¨ä¥L¨Ï¥Î ADO ªº SQL «ü¥O¡A¥H¤Î¶i¤@¨Bªº¦b Visual FoxPro ¤¤³B²z¨ú¦^¦b ADO ¸ê®Æ¿ý¶°¤§¤ºªºµ²ªG¡C
¨ä¥LªºÀ³¥Îµ{¦¡¥i¥H¦s¨ú¦P¼Ëªº¸ê®Æ¡A§Q¥Î¦P¼Ëªº§Þ³N³~®|¡C¨Ò¦p¡A¤@Ó Microsoft Excel ¤u§@ªí¯à°÷±q¦P¼Ëªº SQL Server ¦øªA¾¹¤¤Àò¨ú©Ò»Ý¸ê®Æ¡C³o¼Ë¡A¤u§@ªí¤£¶È¥i¥H§Q¥Î©M±zªºÀ³¥Îµ{¦¡¦P¼ËªºÀu¶V®Ä¯à¡A¦Ó¥B¨ã¦³¦øªA¾¹ªº¦w¥þ©Ê©M²§°Ê¥æ©ö³B²z¯S©Ê¡A¦Ó³o¨Ç¯S©Ê¬O¦b Microsoft Excel ªº¤u§@ªí¤¤¬O¨S¦³ªº¡C
¦b¬Y¨Ç±¡ªp¤U¡A±z¥i¯àn¨D§ó°ª¡A»Ýn¨Ï¥Î OLE DB ´£¨Ñµ{¦¡¦s¨úªº¸ê®Æ¨Ó·½©Ò¯S¦³ªº SQL ©R¥O¡C¨Ò¦p¡AMicrosoft SQL Server ¤¹³\«Ø¥ß¨Ã°õ¦æÀx¦s¦¡µ{§Ç¡A³o¨Çµ{§Ç¥i¥H¹ï¦øªA¾¹ (¦Ó¤£¬O±zªºÀ³¥Îµ{¦¡) ¤Wªº¸ê®Æ¶i¦æ³B²z¡C§Q¥ÎÀx¦s¦¡µ{§Ç¥i¥H©ó¸ê®Æ®w¦øªA¾¹°õ¦æ¡§¤º³¡¡¨ªº SQL ±Ôz¡CPass-through SQL ©R¥OÁÙ¤¹³\¹ï¦øªA¾¹°õ¦æ¤@¨Ç¨t²ÎºÞ²z¥ô°È¡C¬Y¨Ç±¡ªp¤U¡A³o¨Ç©R¥Oªº°õ¦æ³t«×¤ñ¦b Visual FoxPro ¤¤°õ¦æÃþ¦üªº SQL ±Ôzn§Ö¡C
n·QÁA¸Ñ¦³Ãö©µ¦ù Visual FoxPro ¸ê®ÆÀx¦s¯à¤Oªº¸Ô²Ó¸ê®Æ¡A½Ð°Ñ¾\¡uÀ³¥Î¦Û°Ê¤ÆºÞ²zª«¥ó¡v¡B¡u¨Ï¥Î¸ê®Æ¶°¦s¨ú»·ºÝ¸ê®Æ¡v©M¡u³W¹º¥D±q¬[ºcÀ³¥Îµ{¦¡¡v¡C
¤W²¾ Visual FoxPro ¸ê®Æ
¦b¸ê®ÆÀx¦s®É¡A¥i¥H±N¨äÀx¦s¦b Visual FoxPro ªº¸ê®Æªí®æ¤¤¡A¤]¥i¥H§â¥¦Àx¦s¦b¹³¸ê®Æ®w¦øªA¾¹³o¼Ëªº¥»O¤U¡C¦³®É¤]¯à¥H¨âºØ¼Ò¦¡Àx¦s¡G¦bµo®iµ{§Ç¤¤¡A¥ý§â¸ê®ÆÀx¦s¦b Visual FoxPro ªº¸ê®Æªí®æ¤¤¡A·í¸ê®Æ®w³vº¥Ãe¤j®É¡A¦A§â¥¦Âಾ (©Î¤W²¾) ¨ì¨ä¥Lªº¥»O¤W¡C
¨Ò¦p¡A¥i¥H±N¸ê®ÆÀx¦s¦b¥»¦a¹q¸£ªº Visual FoxPro ¸ê®Æªí®æ¤¤¡A¨Ó«Ø¥ßÀ³¥Îµ{¦¡ªºì«¬¡C³o¯à°÷´£¨Ñ«Ü¤jªº¼u©Ê¡A¨Ï±z¦b¶}µoµ{¦¡ªºµ{§Ç¤¤¡A«Ü®e©ö¹ï¸ê®Æªí®æ¡B¸ê®Æ¶°©M¯Á¤Þ¶i¦æ×§ï¡AÁ×§K¤F¦b¸ê®Æ®w¦øªA¾¹¤WºÞ²z¸ê®Æªí®æªº½ÆÂø©Ê¡C¦Ó¥B¡A¦b¥»¦a¹q¸£¤WÀx¦s¼Ë¥»¸ê®Æ¡A¥i¥H¤è«Kªº´ú¸Õªí³æ¡B³øªí©M¨ä¥Lµ{¦¡¡C·í¸ê®Æ®wµ²ºc¤w¸g§¹¦¨«á¡A«K¥i¥H±N¸ê®Æ¤W²¾¨ì¸ê®Æ®w¦øªA¾¹¤W¡A¦P®É§¹¦¨À³¥Îµ{¦¡ªº²£«~¤Æ¡C
¥t¥~¤@ºØ¥i¦æªº¤èªk¬O¡A®Ú¾Ú¹ê»Ú»Ýn±N¸ê®ÆÀx¦s¦b¥»¦a¹q¸£ªº Visual FoxPro ¸ê®Æªí®æ¤¤¡C¥u¦³·í¸ê®Æ®wÅܤj®É¡A¦A¤W²¾¸ê®Æ¡A¦P®É¥i¨Ï¥Î¸ê®Æ®w¦øªA¾¹´£¨Ñªº³Ì¨Î¤Æ®Ä¯à¡C¦ó®É¤W²¾¸ê®Æ®w¨ú¨M©ó³\¦h¦]¯À¡A¥]¬A¸ê®Æ®wªº½ÆÂø©Ê¡B¥»¦a¹q¸£©ÎªÌºô¸ôªº®Ä¯à¥H¤ÎÀ³¥Îµ{¦¡ªºn¨D¡C
³Ì«á¡A¥i¥H¦b Visual FoxPro ¤¤§¹¦¨¸ê®Æ®wªºì«¬¶}µo¡AµM«á¬°¤F©M¨ä¥L¥i¥H¦s¨ú¸ê®Æ®w¦øªA¾¹ªºÀ³¥Îµ{¦¡¤§¶¡¦@¥Î¸ê®Æ¡A±N¸ê®Æ®w¤W²¾¡C¦P¼Ë¡A¬°¤FÀò±o¦øªA¾¹ªº¦w¥þ©Ê©M²§°Ê¥æ©ö³B²z¯S©Ê¡A¤]¥i¥H¤W²¾¸ê®Æ®w¡C
¦³Ãö¸ê®Æ®w¤W²¾ªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¤W²¾ Visual FoxPro ¸ê®Æ®w¡v¡C
¬ÛÃö¸ê°T
³]p¦Ò¶q
³W¹º¥ø·~À³¥Îµ{¦¡
Visual FoxPro §@¬°À³¥Îµ{¦¡ªº«áºÝ
ª«¥ó¾É¦Vµ{¦¡³]p
¦@¥Î¸ê°T©M·s¼W OLE
«Ø¥ß¸ê®Æ¶°
¦s¨ú Visual FoxPro API
[¶l¥ó¦X¨ÖºëÆF]
[¼Ï¯Ã¤ÀªRªíºëÆF]
----------------------------------------------------------------------------------------------
ì¤å¡G
Visual FoxPro as an Application Front End
As a Visual FoxPro developer, you probably find it natural to design your applications around the program's visual design tools. For example, you probably think of your application's user interface in terms of Visual FoxPro forms, menus, and reports. In addition, when you develop applications in Visual FoxPro, you most likely think of storing the application's data in Visual FoxPro tables.
One way to integrate Visual FoxPro into an enterprise-wide application is to use the visual design tools in Visual FoxPro, but enhance them with the capabilities of other products. Another way is to create your application's look and feel using Visual FoxPro, but to extend the data storage capabilities of your application by taking advantage of the capabilities of other programs or of non-Visual FoxPro data storage options. You can also upsize your Visual FoxPro data by moving it to a database server.
Extending the Visual Design Tools in Visual FoxPro
The base classes of Visual FoxPro controls were designed to accommodate the vast majority of application interface needs. Visual FoxPro provides all the basic controls and interface elements that are required to create a standard Windows application. However, you will often find that your application requires objects or controls beyond those provided in the base Visual FoxPro classes. If so, you can extend the visual design tools by creating subclasses and by using ActiveX controls.
Creating Subclasses
An extremely powerful feature of Visual FoxPro is the ability to create subclasses of the base controls. By creating one or more subclasses, you can customize the basic Visual FoxPro controls in almost any way that's required for your application. This ability extends to being able to create new objects or controls that combine the features of other controls. For example, the grid control in Visual FoxPro contains not only its own container, properties, and methods, but those of the objects that appear in the grid such as buttons, text boxes, and so on.
Similarly, by subclassing base controls, you can extend the capabilities of Visual FoxPro by creating objects that add new features to existing base classes, or that combine the capabilities of several objects. For example, you can add visual features such as frames or three-dimensional effects to a text box. Or you could combine an image control, buttons, and a text box to create a bitmap-viewing control in which users can move through a series of .bmp files. Creating custom classes in this way can help you manage company-wide development by allowing you to create standardized controls that appear in all your applications. For more information, see Object-Oriented Programming.
Using ActiveX Controls
An alternative to creating a new control using subclasses in Visual FoxPro is to use an ActiveX control (.ocx file). These controls are created independently from Visual FoxPro, and can be integrated not only into Visual FoxPro, but into many other Windows applications as well.
In effect, ActiveX controls are off-the-shelf components that you can integrate seamlessly into your application. Using ActiveX controls provides several benefits:
¡EIt saves you the time and effort required to create, test, and maintain a Visual FoxPro-specific control to accomplish the same tasks. The more capable the ActiveX control, the more time you save.
¡EMany ActiveX controls are already available from third-party suppliers to answer common application requirements. For example, if your application calls for you to display a calendar and allow users to choose dates on it, you can probably find an ActiveX control (perhaps several) that already manages this task.
¡EThe same control can be used in multiple programs. For example, if it makes sense to do so, you can use the same ActiveX control in Visual FoxPro and Visual Basic. The same properties and methods are used in each case to manage the control, and the control will have the same appearance in all programs, making it easier for users to work with.
¡EActiveX controls often provide access to Windows functionality that can otherwise be awkward or time-consuming to include using only Visual FoxPro tools. For example, you can find ActiveX controls that provide access to electronic mail (using Windows MAPI functions), to low-level Windows graphics functions, and so on. By including an ActiveX control, you can add these types of features to your application in a way that's easy to control using the ActiveX control's properties, methods, and events.
In short, using ActiveX controls enables you to extend your applications not only by integrating Windows-wide functionality, but by adding a common look-and-feel between your application and others in the same enterprise. For more information about using ActiveX controls, see Sharing Information and Adding OLE. For information about creating your own ActiveX controls, see Accessing the Visual FoxPro API.
Integrating Functionality from Other Programs
You might find when developing an application that other programs are uniquely suited to accomplishing certain tasks. For example, Microsoft Word has unsurpassed merge letter capabilities, while Microsoft Excel is optimized to calculate complex formulas and easily create charts and graphs from them.
Rather than emulating these capabilities in Visual FoxPro, you can make your application an enterprise-wide solution by integrating them into your application. This way you can match the requirement of your application to the best possible tool to address it.
You can integrate the functionality of other applications into Visual FoxPro in these ways:
¡ERun a Visual FoxPro wizard that makes Visual FoxPro data available for use by another application.
¡EWrite Visual FoxPro programs that use Automation to communicate with, control, and share data with other Windows programs.
The following sections provide details about these methods of extending the capabilities of Visual FoxPro.
Using Wizards
A number of Visual FoxPro wizards allow you to integrate Visual FoxPro data with the functionality of other Windows programs. For example, you can send form letters to your customers by using the Mail Merge Wizard. When you run the wizard, you can specify a table or view that contains the Visual FoxPro data to use, and then either export the data to a suitable file format (such as comma-delimited) or specify that your word processing program use the Visual FoxPro OLE DB provider to access the data. If you use Microsoft Word, the wizard will even start the word processing program, create the blank merge document, and display the Mail Merge toolbar for you to link fields to your Visual FoxPro data.
Similarly, using Microsoft Excel and Microsoft Query, you can analyze your data using a pivot table, which summarizes data in columns and allows you to rearrange it to view it in different ways. By using the PivotTable Wizard in Visual FoxPro, you can use your application data as the source data for Microsoft Excel, and generate the pivot table in Microsoft Excel.
Using Automation
A more powerful way to interact with other applications is to use Automation. Using Visual FoxPro programs, you can access the objects exposed by other applications, and then control them by setting their properties and calling their methods. For example, Microsoft Excel exposes an application object as well as worksheets, columns, rows, and cells within the application object. You can directly manipulate any of these objects, including getting or setting data in them. In addition, you can usually control the application object using the full range of commands available in the program itself. For example, by managing the application object in Microsoft Excel, you can open, save, or print worksheets, invoke the Microsoft Excel chart wizard, and so on.
Automation is a particularly attractive and powerful way to work with Windows programs using Visual FoxPro for several reasons:
¡EYou have direct access to the other program, including all its objects and commands.
¡EYou can share data directly with the other program without having to export it or convert it to another format.
¡EYou can control the other program using the familiar properties and methods model.
¡EThe other program doesn't necessarily need to be visible to the user when you invoke it. For example, you can invoke Microsoft Excel, place some data into cells, run a complex calculation on the data, read the result, and then display it in Visual FoxPro, all without ever displaying Microsoft Excel. Your user would continue to see only Visual FoxPro, unless you explicitly wanted to display Microsoft Excel.
¡EThe commands (methods and properties) to control the other program are embedded within familiar Visual FoxPro programs. You don't need to learn a different programming language in order to be able to control the other program.
Automation is particularly powerful because it's an open-ended method for working with other programs. In essence, Automation simply makes available to you the data and commands from other applications for you to use in the way best suited to your application.
A sample scenario illustrates how you can integrate several Windows programs. Imagine that you store your customer and sales data in Visual FoxPro. You'd like to create a sales report that summarizes quarterly sales.
One solution would be to use Automation to copy the Visual FoxPro sales data to cells in a Microsoft Excel worksheet. You can then invoke the Microsoft Excel chart wizard to create a chart of the data and copy it to the Windows Clipboard. Still using Automation, you can invoke Microsoft Word and create or open a sales report document (if you create it as a new document, you can insert standard text that you store in Visual FoxPro), and then paste in the chart you created in Microsoft Excel.
This is just one way you can use Automation to make Visual FoxPro part of an enterprise-wide solution. By becoming familiar with the objects and methods available in programs that you typically use, you can imagine many more ways to make each program enhance the capabilities of the other. For details about Automation, see "Manipulating Objects with Automation" Sharing Information and Adding OLE.
Extending Data Storage Capabilities in Visual FoxPro
The data table and indexing capabilities of Visual FoxPro are usually more than adequate to the requirements of an application, whether you're concerned about speed or database size. However, there are times when you might want to extend Visual FoxPro by using data that's stored in some other format. This might be true if:
¡EYour application needs access to legacy data that's created and maintained by an existing application. For example, suppose that, as part of your sales application, you need access to data being maintained by an accounting application that was written using a different program, perhaps even on a different platform.
¡EYou want to optimize data access by using a database server, which can greatly speed data access, particularly in very large databases.
¡EYou want to share data with other programs, and therefore want to store the data in a format that's accessible to all the programs.
¡EThe data is best suited to the format of a particular program (such as a spreadsheet). This might be true, for example, if your application required only occasional access to data that was otherwise being maintained by the other program.
If the data you need is in the format of a spreadsheet, word processing document, or other Windows program, you can access it using Automation. For example, you might do this if your application required a collection of form letters. In that case, the letters might be stored as Microsoft Word documents, and your application would use Automation to invoke Word, open the appropriate letter, and insert or substitute text as necessary.
A more common approach to using non-Visual FoxPro data is to use an OLE DB provider to access it. OLE DB providers allow you to connect to data in the format of other programs ¡X typically other database programs ¡X and query or edit the data using standard SQL commands.
For example, you might decide that security and transaction processing capabilities are a vital part of your application, so you decide to store the data using Microsoft SQL Server. To access the data, you define a connection to SQL Server, using the SQL Server OLE DB provider. You can then run queries and other SQL commands using ADO, and retrieve the results into an ADO recordset for further processing in Visual FoxPro.
Other applications can access the same data and take advantage of the same features. For example, a Microsoft Excel worksheet can get its data from the same SQL Server database. Not only will the worksheet enjoy the same performance advantages that your application does, it can also take advantage of the security and transaction processing features of the server, which aren't otherwise available in a Microsoft Excel worksheet.
In some instances, you might want to go further and use SQL commands that are specific to the data source you're accessing with the OLE DB provider. For example, Microsoft SQL Server allows you to create and run stored procedures, which can manipulate data at the server (rather than in your application). To take advantage of stored procedures, you can send "native" SQL statements to the database server. Pass-through SQL commands also allow you to perform system administration tasks on the server, and in some instances they will execute faster than similar SQL statements executed in Visual FoxPro.
For more information about extending data storage capabilities in Visual FoxPro, see Manipulating Objects with Automation, Accessing Remote Data Using Views, and Planning Client/Server Applications.
Upsizing Visual FoxPro Data
You can choose to keep your data in Visual FoxPro tables or on another platform such as a database server. Or you can do both: keep your data in Visual FoxPro tables while you're developing, or until your database grows large, and then move (or upsize) the data to another platform.
For example, you can prototype your application by keeping all the data in local Visual FoxPro tables. This gives you the flexibility to modify your tables, views, and indexes as you develop the application without the complexities of managing tables on a database server. You can keep sample data in the local tables so you can test your forms, reports, and other programs. When the database structure is complete, you can upsize your data to a database server and put the application into production.
Another way to work is to keep your data in Visual FoxPro tables only as long as is practical. When the database grows large, you can upsize it and take advantage of the optimized performance provided by a database server. The exact point at which it makes sense to upsize your database depends on many factors, including the complexity of the database, the performance of your local computer or network, and the demands of your application.
Finally, you can prototype your database in Visual FoxPro, and then upsize it in order to share the data with other applications that can also access a database server. Similarly, you can upsize the database in order to take advantage of the security and server-side transaction processing capabilities of the database server.
For details on upsizing databases, see Upsizing Visual FoxPro Databases.
See Also
Design Considerations
Planning Enterprise Applications
Visual FoxPro as an Application Back End
Object-Oriented Programming
Sharing Information and Adding OLE
Creating Views
Accessing the Visual FoxPro API
Mail Merge Wizard
PivotTable Wizard _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 66 ¼Ó
|
µoªí©ó: ¬P´Á¤@ ¤E¤ë 13, 2004 11:18 pm ¤å³¹¥DÃD: |
|
|
Visual FoxPro §@¬°À³¥Îµ{¦¡ªº«áºÝ
±N Visual FoxPro ·J¾ã¨ìÀ³¥Îµ{¦¡ªº¥t¥~¤@Ó¤£¦Pªº¤èªk¬O§â¥¦§@¬°¤@Ó¤¸¥ó¨Ó¨Ï¥Î¡A¦Ó¤£¥²§@¬°¥Dµ{¦¡¡C¹ê»Ú¤W¡A¥i¥H§â Visual FoxPro §@¬°«áºÝ¡A«eºÝµ{¦¡¥i§Q¥Î¨ä¥Lªº²£«~¼¶¼g¡C¦b³oºØ±¡ªp¤U¡A¨Ï¥ÎªÌ¤£¥²ª½±µ©M Visual FoxPro ¤¬°Ê¡A¦Ó¬O±Ä¥Î¨ä¥LÀ³¥Îµ{¦¡´£¨Ñªº¤u¨ã©Ò»s§@ªº¨Ï¥ÎªÌ¬É±¡A¥u¦b«áºÝ±Ä¥Î Visual FoxPro ¨Ó³B²z¸ê®Æ¡C
¥Ñ©ó Visual FoxPro ¥iµo´§¨ä¸ê®Æ®w¤ÞÀºªºÀu¶Õ (¸Ó¤u¨ã¥i§Ö³t¦a¹ï¨ä¥Lµ{¦¡ªº¸ê®Æ¶i¦æ¦s¨ú)¡A¦]¦¹ Visual FoxPro ¦b³oºØ¤u§@¼Ò¦¡¤U·|°õ¦æ¨}¦n¡C¦¹¥~¡AVisual FoxPro ¥i¥H±N¦Û¤vªºª«¥ó©M©R¥O¡]¥]¬A¨Ï¥ÎªÌ«Ø¥ßªºª«¥ó¡^¤è«Kªº´£¨ÑÀ³¨ä¥Lµ{¦¡¨Ï¥Î¡C
¦b¨ä¥LÀ³¥Îµ{¦¡¤¤¨Ï¥Î Visual FoxPro ªº¸ê®Æ
¬°¤Fµo´§ Visual FoxPro ªºÀuÂI¡A¬°¥ø·~¶}µoªºÀ³¥Îµ{¦¡±Ä¥Îªº¤@ºØ§Þ³N¤â¬q¬O¨Ï¥Î Visual FoxPro ªº¸ê®Æ®w¤ÞÀº¨ÓÀx¦s©MºÞ²z¸ê®Æ¡C©M¨ä¥Lµ{¦¡¬Û¤ñ¡A¸Ó¤èªk¥i´£¨Ñ°ª®Ä¯àªºÀx¦s©M¬d¸ß¯à¤O¡C
¨Ï¥Î Visual FoxPro ªº OLE DB ´£¨Ñµ{¦¡¡Aµ{¦¡¥i¥H³sµ²¨ì Visual FoxPro ¤¤ªº¸ê®Æ¡C¸Ó´£¨Ñµ{¦¡¥i¨Ï Visual FoxPro ªº¸ê®Æ®w¤ÞÀº§Q¥Î¼Ð·Çªº Visual FoxPro SQL ©R¥O¡C
¨Ò¦p¡AÀ³¥Îµ{¦¡¥i¯à±Ä¥Î Microsoft Excel §@¬°½ÆÂø¸ê®Æ¤ÀªRªºpºâ¤u¨ã¡C¦pªG©Ò³B²zªº¸ê®Æ¨Ï¥Î«ÜÀWÁc¡A«h±N¨äÀx¦s¦b¸ê®Æ®w¤¤¤ñÀx¦s¦b¤u§@ªí¸Ì¥i¯à·|§ó¦n¡C³o®É¡A¥i¨Ï¥Î Visual FoxPro ªº OLE DB ´£¨Ñµ{¦¡±N¤u§@ªí©M¸ê®Æ®w³sµ²°_¨Ó¡AµM«á´£¨ú¬ÛÃöªº¸ê®Æ¡A¨Ã±N¨äÅã¥Ü¦b¤u§@ªí¤¤¡A¥H³Æ¶i¤@¨B³B²z¡C
¥t¥~¤@Ó½d¨Ò¬O¤@Ó¤½§iµPªºÀ³¥Îµ{¦¡¡A¦p¦b¾÷³õ©Î·|ij¤¤¤ß¸Ì¡C¥i¥H¨Ï¥Î¦h´CÅé§Þ³N¼¶¼gµ{¦¡¨Ó¶i¦æ°T®§Åã¥Ü¡C¦ý¬O¦pªGµ{¦¡¤¤ªº¬Y¨Ç¸ê®Æ¸g±`ÅܰʡA¥i¯à¦b¸õ¶®É·|±a¨Ó³Â·Ð¡C³o®É¡A¥i¥H³z¹L OLE DB ´£¨Ñµ{¦¡±NÅã¥Üµ{¦¡©M¤@Ó Visual FoxPro ¸ê®Æ®w³sµ²¡AµM«á¦b°õ¦æ®É´Á´£¨ú©Ò»Ýnªº¸ê®Æ¡C
¦³Ãöªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡uVisual FoxPro OLE DB ´£¨Ñµ{¦¡»¡©ú¥DÃD¡v¡C
¦b¨ä¥LÀ³¥Îµ{¦¡¤¤¨Ï¥Î Visual FoxPro ª«¥ó©M©R¥O
°£¤F±N Visual FoxPro ªº¸ê®Æ´£¨Ñ¨ä¥Lµ{¦¡¨Ï¥Î¡A§@¬°¥ø·~¤è®×¤¤ªº¤@³¡¥÷¥~¡A¨ä¥Lµ{¦¡ÁÙ¯à¨Ï¥Î Visual FoxPro ¤¤ªºª«¥ó©M©R¥O¡C¥~¦bµ{¦¡¥i¥H©I¥s Visual FoxPro ªº¤èªkµ{§Ç¡A³]©w Visual FoxPro ª«¥ó (¤£¶È¬O°ò¥»Ãþ§Oª«¥ó¡AÁÙ¥i¥H¬O¨Ï¥ÎªÌ¦ÛqÃþ§Oªºª«¥ó) ÄݩʡC
¨Ò¦p¡A¥i¥H¦b Microsoft Excel ¤¤«Ø¥ß¤@ÓÀ³¥Îµ{¦¡¡A¸Óµ{¦¡±N¸ê®ÆÀx¦s¦b Visual FoxPro ªº¸ê®Æ®w¤¤¡C°£¤F¶i¦æ¸ê®ÆÅª¼g³o¼Ë²³æªº°Ê§@¥~¡AMicrosoft Excel ÁÙ¥i¥H©I¥s Visual FoxPro ©R¥O±N¤@Óªí³æ§@¬°¹ï¸Ü¤è¶ôÅã¥Ü¡A¨Ï¥ÎªÌ¥i¥H©ó¹ï¸Ü¤è¶ô¿é¤J¸ê®Æ§@¬°¸ê®Æ¶°ªº°Ñ¼Æ¡C
¥t¥~¤@ӨϥΠVisual FoxPro ª«¥óªº¤èªk¬O«Ø¥ß¤@Ӧ۰ʤƦøªAÀ³¥Îµ{¦¡¡C³o¤¹³\±z¯à«Ø¥ß¯S©wÀ³¥Îµ{¦¡ªºª«¥ó¡A³o¨Çª«¥óªº¥\¯à´X¥G©M¦b Visual FoxPro Àô¹Ò¤Uªº®ÄªG¬Û¦P¡A¦ý¬O¤S¨ã¦³¦øªA¾¹¤À´²¦¡ªºÀuÂI¡C
¹ï©ó¦Ûqªº¦øªA¾¹¡A¥Î³~¤§¤@¬O«Ø¥ß¤@Óª«¥ó¡A¸Óª«¥ó¥]§t¤@¨t¦C°Ó·~·Ç«h¡A¥H½T«O±q¨ä¥LÀ³¥Îµ{¦¡¶Ç¿é¨Óªº¸ê®Æ§¹¾ã©Ê¡C¨Ò¦p¡A¥i¥H¦b Visual FoxPro ¤¤«Ø¥ß¤@Óª«¥ó¨ÓÀx¦s¹µû¸ê®Æ¡A¸Óª«¥ó¤£¶ÈÅçÃÒ±qµ{¦¡¶Ç¿é©Ò±o¨ìªº¸ê®Æ¡A¦Ó¥BÅçÃҨϥΪ̪º¦s¨ú¯Å§O¡A½T«O¨Ï¥ÎªÌ¦³¨¬°÷ªºÅv¨ÓÅܧó¹µû¸ê®Æ¡C
¹ï©ó¯A¤Î½ÆÂøÅÞ¿èÃöÁpªºÅܧó©ÎªÌŪ¨ú¸ê®Æªº°Ê§@¡A¦Ûqªº¦øªA¾¹¤]¯à°÷«Ø¥ßª«¥ó¡C¨Ò¦p¡A¤@Ó©w³æ¿é¤Jª«¥ó¤£¶È¯à°÷Àx¦s©w³æ¡A¦Ó¥B¥i¥HºûÅ@©w³æ²§°Ê¥æ©ö¤é»x¡B§ó·s®w¦s¡Bpºâ¾P°âµ¥µ¥¡C
³o¤@Ãþªº¦Û°Ê¤Æ¦øªAÀ³¥Îµ{¦¡¹ï©ó¤T¼hµ²ºcªº¥ø·~À³¥Îµ{¦¡¨Ó»¡¡A¬O¤@Ó²z·Qªº¤¤¶¡¼h¡C¦b³oÓ¼Ò«¬¤¤¡A¸ê®Æ§Î¦¨¤F³Ì©³¼h¡AÀ³¥Îµ{¦¡«h§@¬°³Ì°ª¼h¡A¦Ó¥Dn¥\¯à¬O¥Ñ¤¤¶¡¼h¨Ó§¹¦¨ªº¡C¤¤¶¡¼h´£¨Ñ¤F¤@Ó¯S®íªº¡B¤£¨Ì¦«©óÀ³¥Îµ{¦¡ªº¸ê®Æ¶°¡A¦P®É±N°Ó·~³W«h (©ÎªÌ¨ä¥L¸ê®Æ³B²z¯à¤O) ·J¾ã¶i¨Ó¡A¦Ó³o¨Ç¥\¯à¶È¶È¥ÑÀ³¥Îµ{¦¡©ÎªÌ¸ê®Æ¬OµLªk»s§@ªº¡C
¦³Ãö«Ø¥ß¦Ûqªº¦Û°Ê¤Æ¦øªAÀ³¥Îµ{¦¡ªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¦@¥Î¸ê°T©M·s¼W OLE¡v¤¤ªº[¦p¦ó¡G«Ø¥ß¦Û°Ê¤Æ¦øªAÀ³¥Îµ{¦¡]¡C
¨Ï¥Î Visual FoxPro «Ø¥ß¸ê®ÆÜ®w
°£¤F¥i¥H¥Î Visual FoxPro «Ø¥ßÀ³¥Îµ{¦¡¥~¡AÁÙ¥i¥H¥Î¥¦¨Ó«Ø¥ß©MÀx¦s¤@Ó¸ê®ÆÜ®w¡A¤]´N¬O¤@¨Ç²£¥Í³øªíªº¸ê®Æ³Ì¨Î¤Æ¶°¦Xª«¥ó¡Cn«Ø¥ß¤@Ó¸ê®ÆÜ®w¡Aº¥ý¥i¥H½Æ»s³øªí©Ò»Ýªº¸ê®Æ¡AµM«á´£¥æµ¹»Ýnªº¨Ï¥ÎªÌ¡Cn·Q±N³o¨Ç¸ê®Æ±q즳¸ê®Æ¤¤¿W¥ß¥X¨Ó¡A±z¥i¥H¡G
¡E±N¸ê®Æ«ö·Ó³øªíªº»Ýn¶i¦æµ²ºc¤Æ³B²z¡A³o·|¤ñ±q즳¸ê®Æ²£¥Í³øªí§ó§Ö¡B§ó²³æ¡C
¡E±N³o¨Ç¬°²£¥Í³øªí©Ò»Ýªº¸ê®Æ¦s©ñ¦b©M즳¸ê®Æ¤À¶}ªº¦ì¸m¡A³o¼Ë·|´î¤Ö¸ê®Æ¤§¶¡ªº½Ä¬ð¡A´£°ª®Ä¯à¡C¥i¥H¬d´M¤@¨Ç¬°¤F¦w¥þ²z¥Ñ¦Ó¤£¹ï¨Ï¥ÎªÌ¶}©ñªº¸ê®Æ¡C
¤@Ó¸ê®ÆÜ®w¬O¹ï«Ø¥ß¸ê®ÆÀþ¶¡ªº§Ö·Ó¡C±z¥i¥H¶g´Á©Êªº¹ï¸ê®ÆÜ®w¶i¦æ¸ê®Æ«·s¾ã²z¡A®Ú¾ÚÀ³¥Îµ{¦¡²£¥Í³øªíªº»Ýn©w´Á§ó·s¡C
¨Ò¦p¡A°²³]«Ø¥ß¤F¤@ÓÀ³¥Îµ{¦¡¨ÓºÞ²z¹Ï®ÑÀ]¡A¨ä¤¤¥]¬A¤@Ó®w¦sªº²M³æ¡C¦b¤u§@¤é¸Ì¡A¨t²Î¥Dn¥Î¨ÓÅçÃÒ¸ê®ÆªºÉ¥X©MÂkÁÙ¡A¥H¤Î¹ï¨t²Î¤º³¡ªº¸ê®Æ¶i¦æ´M§ä©MÂk¦ì¡C°£¤FºÞ²z³o¨ÇÅU«Èªº²§°Ê¥æ©ö¤u§@¥~¡AºÞ²z¤HûÁÙ·Q¹ï¹Ï®ÑÀ]¶i¦æ¤ÀªR¡AÁA¸Ñ¨º¨Ç¸ê®Æ³Ì¨üÅwªï¡B¨º¨Ç¸ê®Æ¹L®Éµ¥µ¥¡C
¬°¤F¦³§U©ó¤ÀªR¡AÀ³¥Îµ{¦¡¥i¥H¦b²§°Ê¥æ©ö°T®§¤§¥~«Ø¥ß¤@Ó¸ê®ÆÜ®w¡AÀ³¥Îµ{¦¡¥i¥H©w´ÁªºÀx¦s¸ê®Æ (¦p¨C¤Ñ±ß¤W)¡A¦Ó«á¡AºÞ²z¤Hû¦b¤£¼vÅT¥Õ¤Ñ¨t²Î¥¿±`°õ¦æªº±¡ªp¤U¡A¦b¸ê®ÆÜ®wªº°ò¦¤W«Ø¥ß¤@¨Ç¬d¸ß¡C¦¹¥~¡A¸ê®ÆÜ®w¥i¥H±Æ°£¨º¨Ç¨Ï¥Îªº¸Ô²Ó¸ê®Æ¡A¦]¬°³o¨Ç¸ê®Æ¹ï¤ÀªR¨S¦³¥Î³B¡A¶È³Q»{¬°¬O¤º³¡°T®§¡C
¬°¤F±q¸ê®ÆÜ®wÀò±o§ó¤jªº¯q³B¡A¥i¥H¦b¤@Ó¦øªA¾¹¤W«Ø¥ß¸ê®ÆÜ®w¡A¨Ï¤§©M¨ä¥L¸ê®Æ¤À¶}¡C¦pªG©Ò¦³¸ê®Æ³£¦b¦P¤@Ó¦øªA¾¹¤W¡A¤´¥i¥H±q¸ê®ÆÜ®w¤¤³o¨Ç³Ì¨Î¤Æªº¸ê®Æ¸Ì±o¨ì¦n³B¡C¦ý¬O¡A·í¨Ï¥ÎªÌªº¬d¸ß©M¸ê®ÆÜ®wµo¥Í¥Ù¬Þ®É¡A¥i¯à·|µo¥Í¤j¶qªººô¸ô½Ä¬ð¡A³o±N¼vÅT¨t²Î¥¿±`ªº°õ¦æ¡C
¦b«Ø¥ß¤F¸ê®ÆÜ®w¤§«á¡A¥i¥H²³æ¦a§â¨t²Î³Ì·s¸ê®ÆÀÉ®×Âл\¨ì¸ê®ÆÜ®w¤¤¬Û¹ïªºÀɮפW¡C¦¹¥~¡A¥i¥H¦b¸ê®ÆÜ®w¤¤±N¸ê®Æ«·s¶i¦æµ²ºc³Ì¨Î¤Æ¥H³Æ³øªí«Ø¥ß¡C¨Ò¦p¡A¥i¥H¬°¸ê®ÆÜ®w¤¤ªº¸ê®Æ«Ø¥ß¯Á¤Þ¡A¥H´î¤Ö²£¥Í³øªí®Éªº¤u§@¡C
¥t¥~¤@Ó½d¨Ò¬O¡A³q±`¡A¬°¤FÁ×§K¸ê®Æ«ÂСA¸ê®Æ³£n³Q¥¿³W¤Æ¦s©ñ¦b¤£¦Pªº¸ê®Æªí®æ¤¤¡C¦ý¬O¦b¸ê®ÆÜ®w¤¤¡A§â¸ê®Æ¦X¨Ö¦b¤@Ó¤j¸ê®Æªí®æ¤¤·|«Ü¦³¥Î¡A³o¼Ë¨S¦³¸gÅ窺¨Ï¥ÎªÌ¤£¥Î¦Û¤v¨Ó³sµ²¸ê®Æªí®æ¡A±q¦Ó§ó®e©ö«Ø¥ß³øªí¡C
¹ï©óÀ³¥Îµ{¦¡©Ò»Ý³øªíªº¤@¤Á©ú²Ó°ÝÃD¡A¸ê®ÆÜ®w³£¥i¥H¸Ñ¨M¡C¬°¤F¨Ï¥Îªº¼u©Ê¡A¦b¸ê®ÆÜ®w¤¤Àx¦s¸ê®Æ®É¡A³o¨Ç¸ê®Æªº¯Å§OÀ³¸Ó©Mµ{¦¡°õ¦æ¤¤¨Ï¥Îªº¸ê®Æ«O«ù¤@P¡C¦ý¬O¦pªG¨Ï¥ÎªÌ¥u·Q«Ø¥ß¤@ÓºKn³øªí (¹³¤u§@ªí³æ©ÎªÌ¹Ï§Î)¡A«hÀ³¸Ó±NÀ³¥Îµ{¦¡©Ò²£¥Íªº©ú²Ó¸ê®Æ·J¾ã¡A¦b¸ê®ÆÜ®w¤¤¥uÀx¦sºKn©Êªº¸ê®Æ¡C
¨Ï¥Î Visual FoxPro §@¬°¤@Ó WWW ¬d¸ß¤ÞÀº
¦pªG±zªºÀ³¥Îµ{¦¡·Qn«Ø¥ß¤@Ó Internet ¤Wªº WWW ¦øªA¾¹¡A«h¥i¥H±N Visual FoxPro §@¬°À³¥Îµ{¦¡ªº¬d¸ß¤ÞÀº¡C¹ï©ó¯à°÷¦s¨ú±zªº Web ¦øªA¾¹ªº¥ô¦ó¤H¡AµL½×¬O¨Ó¦Û Internet ©Î¬O³z¹L¤½¥qªº¤º³¡ºô¸ô¡A³£¥i¥H¨Ï¨ä¤è«K¦a§Q¥Î±zªº Visual FoxPro ¸ê®Æ®wªº¥\¯à¡C
¨Ò¦p¡A°²³]§@¬°±zªº¥ø·~¤º³¡ºô¸ôªº¤@³¡¥÷¡A±z·Q¤è«K¦a¨Ï¥Î¤@Ó¹µû¥Ø¿ý¡C¹µûÌ¥i¥H±N¥L̪ºÂsÄý¾¹«ü¼Ð«ü¦V¡§¬d¸ß¹µû¡¨¨º¤@¶±¡A¸Ó¶±¬Ý°_¨Ó¹³ Visual FoxPro ªº¤@Óªí³æ¡A¨ä¤¤¥]¬A¤F¤@Ó¿é¤J¬d¸ß±ø¥óªº¤å¦r¤è¶ô¡C¬°¤F°õ¦æ¤@Ó¬d¸ß¡A¨Ï¥ÎªÌ¥i¥H¿é¤J¹µû¦W¦r¡B¹q¸Ü¤À¾÷¡B³¡ªù¡B¾ºÙ¥H¤Î¨ä¥L©Ò¦³¤è«Kªº°T®§¡AµM«á¿ï¨ú[¶}©l¬d¸ß]«ö¶s¡C¹L¤F¤@·|¨à¡A±N·|¬Ý¨ì¤@¦Cº¡¨¬¬d¸ß±ø¥óªº¹µû¦W³æ¡CµM«á¡A¥i¥H±N¸Ó¦W³æÀx¦s¬°¤å¦rÀÉ¡A¶Ç¿é¨ì¥t¥~ªº¹³ word ³o¼Ëªº¤å®Ñ³B²zµ{¦¡¤¤¡C
¦p¦ó±N Visual FoxPro §@¬° Web ºô¸ôªº¬d¸ß¤ÞÀº
¤@¯ëªº¡A¬°¤F¨Ï¥Î Visual FoxPro §@¬° Web ªº¤@Ó¸ê®Æ¦øªA¾¹¡A»Ýn¦p¤U¤¸¥ó¡G
¡E¤@Ó±a¦³ HTTP ªA°È¡B°õ¦æ¦b Microsoft Windows NT ©Î Windows 2000 §@·~¨t²Î¤Uªº Web ¦øªA¾¹¡C
¡E¤@Ó¥i¥H§@¬°¦Û°Ê¤Æ¦øªAÀ³¥Îµ{¦¡¡B¥i³Q¨ä¥Lµ{¦¡©I¥sªº Visual FoxPro À³¥Îµ{¦¡¡A¸ÓÀ³¥Îµ{¦¡¯à°÷¦b¥ô¦ó¤@Ó¥i³Q Web ¦øªA¾¹¦s¨úªº¦øªA¾¹¤W°õ¦æ¡C
¡E¤@ÓÅã¥Ü¬d¸ßµ²ªGªº¤u¨ã¡A¸Ó¤u¨ã¸g±`¥]§t¤@Ó¥i´¡¤J¸ê®Æªº Web ¶±½d¨Ò¡C
Visual FoxPro ¦b Web ¤Wªº¬d¸ß¨Æ¥ó§Ç¦C¤@¯ë¥]¬A¡G
1.³z¹L±N¤@Ó Web À˵ø¤u¨ãªº«ü¼Ð«ü¦V¬Y¬d¸ß¶±¡A¨Ï¥ÎªÌªºÀ³¥Îµ{¦¡±NÅã¥Ü¥X¸Ó¶±¡C¸Ó¬d¸ß¶±¥]§t¨Ï¥ÎªÌ·Qnªº¥ô·N¤å¦r©M¹Ï§Î¡A¤]¥]¬A¯à°÷¿é¤J¬d¸ß¦r¦êªº¤å¦r¤è¶ô¡C
2.¨Ï¥ÎªÌ¿ï¨ú[¶}©l¬d¸ß]«ö¶s¡C¨º»ò¡A¤w§¹¦¨ªºªí³æ¤Wªº¸ê®Æ©M Web ¶±¬d¸ßÀ³¥Îµ{¦¡ªº¦WºÙ±N³Q¶Ç¿é¨ì Web ¦øªA¾¹¤W¶i¦æ³B²z¡C
3.Web ¦øªA¾¹¨Ï¥Î ISAPI (¥þ²yºô¸ô¦øªA¾¹ API) ³q°T¨ó©w¨Ó©I¥sÀ³¥Îµ{¦¡¡A¨Ã±N¥]§t¬d¸ß°T®§ªº¤@ӰѼƶǵ¹À³¥Îµ{¦¡¡C
4.À³¥Îµ{¦¡¬d¸ß¸ê®Æ®w¡C·í§ä¨ì¬d¸ßµ²ªG«á¡A±N¨ä´¡¤J¨ì Web ¶±½d¥»¤¤¡AµM«á±N¸Ó Web ¶±¤@³s¦ê¦r¤¸¶Ç¦^µ¹¦øªA¾¹¡C
5.Web ¦øªA¾¹±N¬d¸ßµ²ªG¶±¶Ç»¼µ¹¶i¦æ¬d¸ß°_©l¤ÆªºÀ˵ø¤u¨ã¡C
6.À˵ø¤u¨ã¦V¨Ï¥ÎªÌÅã¥Ü¬d¸ßµ²ªG¶±¡C
¦pªG¤w¸g«Ø¥ß¤F Web ¶±¡A¨º»ò³B²zªºµ´¤j¦h¼Æ¨BÆJ¬O¬Û¦üªº¡C°²³]±zÁA¸Ñ¤F¦p¦ó«Ø¥ß Web ¶±¡A¨º»ò±z·|µo²{«Ø¥ß³o¨Ç¶±ªº³B²zµ{§Ç¬Û·í®e©ö¡C
¦³Ãö¨Ï¥Î Visual FoxPro §@¬° Web ºô¸ôªº¬d¸ß¤ÞÀºªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\ Visual FoxPro ...\Samples\Servers\Foxisapi ¥Ø¿ý¤Uªº½d¨Òµ{¦¡ Foxisapi.dll¡C¨Ã°Ñ¦Ò¸Ó¥Ø¿ý¤Uªº Readme.txt ÀÉ®×ÁA¸Ñ¦p¦ó°õ¦æ¸Óµ{¦¡¡C
¬ÛÃö¸ê°T
³]p¦Ò¶q
Visual FoxPro §@¬°À³¥Îµ{¦¡ªº«eºÝ
³W¹º¥ø·~À³¥Îµ{¦¡
¦p¦ó¡G«Ø¥ß¦Û°Ê¤Æ¦øªAÀ³¥Îµ{¦¡
¦@¥Î¸ê°T©M·s¼W OLE
----------------------------------------------------------------------------------------------
ì¤å¡G
Visual FoxPro as an Application Back End
A different way to integrate Visual FoxPro into an enterprise solution is to use it as one component, but not necessarily as the primary application. In effect, you'd be treating it as a back end for an application written using another product. In this case, the user wouldn't directly see Visual FoxPro. Instead, the application's user interface would be written using tools in the other application, and would communicate with Visual FoxPro in the background to get or manipulate data.
Visual FoxPro works well in this role because it can make available its database engine, which provides rapid data access to other applications. In addition, Visual FoxPro can make its objects and command sets available to other programs, including custom objects that you create.
Making Visual FoxPro Data Available to Other Programs
One way for an enterprise-wide application to take advantage of Visual FoxPro is to use the Visual FoxPro database engine for storing and managing data. This provides high-performance storage and query capability to other programs.
Programs can connect to Visual FoxPro data using the Visual FoxPro OLE DB provider. This provider exposes the Visual FoxPro database engine to standard Visual FoxPro SQL commands.
For example, an application might use Microsoft Excel as a calculation tool for complex data analysis. If the data to be manipulated is highly fluid, it might make sense not to store it in a worksheet, but in a database. The worksheet could then be written to use the Visual FoxPro OLE DB provider to connect to the database, extract the relevant information, and display it in a worksheet for further processing.
Another example might be a kiosk application, such as an information stand at an airport or convention center. You could create the information display using a multimedia authoring program. But if some of the data in the application changed often, it would be cumbersome to change pages in the presentation. Instead, the presentation program could connect to a Visual FoxPro database using the OLE DB provider, and then extract data at run time.
For more information, see the Visual FoxPro OLE DB provider help topics.
Making Visual FoxPro Objects and Commands Available to Other Programs
In addition to making Visual FoxPro data available to other programs as part of an enterprise solution, you can expose Visual FoxPro objects and commands. Other applications can call the methods and set properties of objects in Visual FoxPro, including not only the base objects, but objects defined in custom classes.
For example, you can create an application in Microsoft Excel that stores data in a Visual FoxPro database. In addition to simply reading and writing the data, Microsoft Excel can call Visual FoxPro commands to display a form as a dialog box. One use might be to gather data for a parameterized view.
Another way to expose Visual FoxPro objects is to create an Automation server. This allows you to create application-specific objects that can perform almost any function that you can program Visual FoxPro to accomplish, with the further advantage that you can distribute the server.
One use for a custom server is to create an object that includes a set of business rules that ensure the integrity of data that another application passes to it. For example, you can create an object in Visual FoxPro for storing employee information that not only validates that the application has passed valid employee information, but checks the user's access level to ensure that the user has security access to make the employee changes.
A custom server can also expose an object that incorporates complex logic for updating or reading information. For example, an order entry object might not only be able to store the order, but could also maintain a transaction log of orders, update inventory, calculate a sales commission, and so on.
This type of Automation server is ideal for creating the middle layer of a three-tiered enterprise application. In this model, the data forms the lowest level and the application forms the highest. The functionality is in the middle, and provides a specific, application-independent view of the data that incorporates business rules (or other data processing capabilities) that don't properly belong with the data or with the application alone.
For information about creating custom Automation servers, see How to: Create Automation Servers in Sharing Information and Adding OLE.
Creating a Data Warehouse Using Visual FoxPro
In addition to creating your application in Visual FoxPro, you can use the program to create and maintain a data warehouse, or version of your data that is optimized for reporting. To create a data warehouse, you make a copy of the data required for reporting, and then make it available to users who need it. By maintaining this data separately from your live data, you can:
¡EStructure it to make reporting easier or faster than if users created reports from the live data.
¡EPlace data for reports in a location separate from the live data, which reduces contention for data, improves performance, and can make data available to users who shouldn't see live data for security purposes.
A data warehouse is a snapshot of the data at the time you create it. You refresh the data in the warehouse periodically, scheduling the update according to the reporting needs for your application.
For example, imagine that you're creating an application to manage a library, including an inventory of materials. During the day, the system is in constant use as patrons check materials in and out, and query the system to locate or reserve books. In addition to managing these individual transactions, librarians want to be able to analyze their library, to determine facts such as what materials are the most popular, what books are overdue, and so on.
To help with the analysis, the application can create a data warehouse out of the transaction information. The application can warehouse the data periodically, perhaps every night, and the librarians can create queries without affecting the performance of the system during the day. In addition, the data warehouse can exclude details about the patrons using the library, because this information isn't required for the analysis and might be considered confidential information.
To get the most benefit from a data warehouse, you create it on a server separate from the live data. If the live data and data warehouse are on the same server, you can still get the benefit of having optimized data in the warehouse. However, as users make queries against the warehouse, they can generate a large amount of network traffic, which might affect performance of the live system.
When you create the data warehouse, you can simply copy the live files over to parallel files in the data warehouse. Alternatively, you can restructure the data in the warehouse to optimize it for reporting. For example, you might create indexes for the warehouse data that reduce reporting overheard.
As another example, data in the live application should be normalized in order to avoid data duplication. However, in the data warehouse it might be useful to combine tables that would otherwise be separate; this can eliminate the need to join tables, making it easier for less experienced users to create reports.
You can also match the level of detail in the data warehouse to the reporting requirements of your application. For the most flexibility, you should store the same level of detail in the data warehouse as you have in the live data. However, if users wanted to create only summary reports (such as spreadsheets or charts), you could roll up detail data from the application and store only summary data in the data warehouse.
Using Visual FoxPro as a World Wide Web Search Engine
If your enterprise solution involves creating a World Wide Web server for the Internet, you can incorporate Visual FoxPro into the application as a search engine. This allows you to make the power of your Visual FoxPro database available to anyone who can access your Web server, whether on the Internet or via a company intranet.
For example, imagine that as part of your company-wide intranet you want to make available an employee directory. Employees could point their browsers to a "Search for Employee" page, which would display a page that looks like a Visual FoxPro form, containing text boxes to enter criteria. To perform a search, users would enter the employee's name, phone extension, department, position, or any other information they had available, and then choose a Search Now button. In a moment or two they would see a listing of the employees who met the search criteria. They could then save this listing as a text file that could then be imported into another program, such as a word processor.
Understanding Visual FoxPro as a Web Search Engine
In general, in order to use Visual FoxPro as an information server for the Web, you need these components:
¡EAn existing Web server with HTTP service, running on Microsoft Windows NT or Windows 2000 operating system.
¡EA Visual FoxPro application that can be called as an Automation server. This application can run on any server accessible to the Web server.
A means for displaying search results, which usually consists of a Web page template into which you can insert data.
The usual sequence of events that involve a Visual FoxPro search on the Web are these:
1.The user displays your application's search page by pointing a Web browser to it. The search page includes any text and graphics that you want, plus text boxes in which users can enter search text.
2.The user chooses a "Search Now" button. The data from the completed form is sent to the Web server for processing, along with the name of your Web page search application.
3.The Web server calls your application using ISAPI (Internet Server API) protocol, passing to it a parameter containing the search information.
4.Your application searches the database. When it gets results, it inserts them into a Web page template, and then sends the Web page back to the server as a stream of characters.
5.The Web server sends the results page to the browser that initiated the search.
6.The browser displays the results page for the user.
If you've created Web pages, most of the steps in this process are probably familiar. For example, you might already know how to create Web pages. Even if you aren't already familiar with Web page design, you'd probably find the process of creating these pages relatively easy.
For an example of how to use Visual FoxPro as a Web search engine, see the sample Foxisapi.dll in the Visual FoxPro ...\Samples\Servers\Foxisapi directory. Refer to the Readme.txt file in that directory for details about how to run the example.
See Also
Design Considerations
Visual FoxPro as an Application Front End
Planning Enterprise Applications
How to: Create Automation Servers
Sharing Information and Adding OLE _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 67 ¼Ó
|
µoªí©ó: ¬P´Á¤@ ¤E¤ë 13, 2004 11:18 pm ¤å³¹¥DÃD: |
|
|
À³¥Îµ{¦¡¬[ºc
Visual FoxPro À³¥Îµ{¦¡¬[ºc¦]±z¨M©w«Ø¥ßªºÀ³¥Îµ{¦¡ªºÃþ«¬¦Ó§ïÅÜ¡C·í³]p±zªºÀ³¥Îµ{¦¡ªºµ²ºc®É¡A¦Ò¼{¨CÓ¤¸¥ó´£¨Ñªº¥\¯à©M¥¦»P¨ä¥L¤¸¥óªºÃö«Y¡C
Á|¨Ò¨Ó»¡¡A¤@ӼзǪº¸ê®Æ®wÀ³¥Îµ{¦¡¬O¥Ñ¸ê®Æµ²ºc¡B¨Ï¥ÎªÌ¬É±¡B¬d¸ß¿ï¶µ©M³øªí¥\¯à©Ò²Õ¦¨¡C¤@ӥΨӿé¤J©ÎÅã¥Ü¸ê®Æªº¼Ð·Ç²Õ¦Xªº Visual FoxPro À³¥Îµ{¦¡´£¨Ñ¥\¯àªí©M¤@өΪ̦hÓªí³æµ¹¨Ï¥ÎªÌ¡C±z¥i¥H³z¹Lªþ¥[¨ì¬YӨƥ󪺵{¦¡½X´£¨Ñ¥\¯à¥H¤ÎºûÅ@¸ê®Æªº§¹¾ã©Ê©M¦w¥þ©Ê¡C¬d¸ß»P³øªí¤¹³\¨Ï¥ÎªÌ±q¸ê®Æ®w´£¨ú¸ê°T¡C
¦b¥»³¹¸`¤¤
³W¹º¥D±q¬[ºcÀ³¥Îµ{¦¡
°Q½×¦b«Ø¥ß¤@Ó¦¨¥\ªº¥D±q¬[ºcÀ³¥Îµ{¦¡¤è±³W¹ºªº«n¡C¾A·íªº³W¹º±N·|¦³§U©ó±z´À¨Ï¥ÎªÌ«Ø¥ß³Ì§Ö³t¡B³Ì¦³®Ä²vªºÀ³¥Îµ{¦¡¡C
À³¥Îµ{¦¡ªº§Ö³t¶}µo
´yzÀ³¥Îµ{¦¡¶}µoªº°ò¥»ªº¨BÆJ¡G³]p쫬¡B¤W²¾¡B¨Ï¥Î©M³Ì¨Î¤Æ¡C
½T«OÀ³¥Îµ{¦¡«Ø¥ßªº·Ç½T©Ê©M¸ê®Æªº§¹¾ã©Ê
´yz¸Ó¦p¦ó¨Ï¥Î¦³¸ê®Æ¨Ó·½ªº¸ê®ÆÅçÃÒ³W«h©MÀx¦s¦¡µ{§Çªº Visual FoxPro ¸ê®ÆÅçÃÒ³W«h©MÀx¦s¦¡µ{§Ç¨Ó«Ø¥ß«OÅ@¸ê®Æ§¹¾ãªº¥D±q¬[ºcÀ³¥Îµ{¦¡¡C
³W¹º¥ø·~À³¥Îµ{¦¡
»¡©ú§A¦p¦ó¦b¨Ï¥Î¨âÓ¥H¤W¶}µo¤u¨ã©Ò«Ø¥ßªº¤j«¬À³¥Îµ{¦¡¤¤¡AVisual FoxPro ¥i¥Hµo´§§@¥Î¡AVisual FoxPro ¤¹³\±zµo´§¨CÓ²£«~¯S¦³¥\¯àªº³Ì¤j«×¡C
¬ÛÃö³¹¸`
¶}µo Visual FoxPro À³¥Îµ{¦¡
¥]¬AÃö©ó¸Ó¦p¦óµo®i Visual FoxPro À³¥Îµ{¦¡ªº·§©À©Ê¸ê°T¡B«Ø¥ß¸ê®Æ®w©M¨Ï¥ÎªÌ¬É±ªº«ü¥O¥H¤Î¨ä¥L¥ô°È»Ýn²£¥Í Visual FoxPro À³¥Îµ{¦¡¡C
À³¥Îµ{¦¡³W¹º
´yz¸Ó¦p¦ó»{¯u²Ó½oªº³W¹º¥i¥H¸`¬Ù®É¶¡¡Bºë¤O©M¸êª÷¡C¦b³W¹º¶¥¬q´Á¶¡©Ò°µªº¨M©w©¹©¹·|¼vÅT±z¦p¦ó«Ø¥ßÀ³¥Îµ{¦¡¡C
³]p¦Ò¶q
°Q½×¦p¦ó¦b¶}µo¤§«e©Ò°µªº³]p¤è®×©¹©¹·|¼vÅT§A¦p¦ó«Ø¥ßÀ³¥Îµ{¦¡¡C
¦w¥þ©Ê¦Ò¶q (Visual FoxPro)
Åã¥Ü§AÀ³¸Ó¦p¦óª¾¹D¨Ó¦Û¤@ºØ°Ó·~Æ[ÂI©M¤@Ó³Q¿ï¾Üªº¦w¥þ¼Ò«¬¯à¦b®Ä¯à¡B¥i´ú¶q©Ê©M³¡¸p¤W¦³ªº§t·Nªº¦w¥þ»Ý¨D¡C
¹Î¶¤¶}µo±M®×pµe
´yz¦p¦ó¨Ï¥Îª©¥»ºÞ²z³nÅé¨ÓºÞ²z±M®×¤¤ªºÀɮסA¨Ò¦p Microsoft Visual SourceSafe¡A§â¤@²Õ¨ã¦³§Þ³N¯à¤Oªº¶}µoªÌµ²¦X¦b¤@°_¡A¥i¥H§Ö³t«Ø¥ß¥X½ÆÂøªºÀ³¥Îµ{¦¡¡C
¶}µo°ê»Ú¤ÆÀ³¥Îµ{¦¡
Åã¥Ü¸Ó¦p¦ó³]p Visual FoxPro À³¥Îµ{¦¡¨Ï¨ä°ê»Ú©Ê¦a¦p¦P¦X¥G°ê¤º¦¡¦a¦³®Äªº¨Ï¥Î Visual FoxPro ªº°ê»Ú¤Æ¥\¯à¡C
----------------------------------------------------------------------------------------------
ì¤å¡G
Application Architecture
Visual FoxPro application architecture varies with the type of application you decide to create. When designing the structure of your application, consider the function each component provides and its relationship to other components.
For example, a typical database application consists of data structures, a user interface, query options, and reporting capabilities. A typical assembled Visual FoxPro application provides the user with a menu and one or more forms for entering or displaying data. You can provide functionality and maintain data integrity and security by attaching code to certain events. Queries and reports make it possible for your users to extract information from the database.
In This Section
Planning Client/Server Applications
Discusses the importance of planning in building a successful client/server application. Proper planning will help you build the fastest, most productive application for your users.
Rapid Application Development
Describes the fundamental steps in application development, prototyping, upsizing, implementing, and optimizing.
Application Creation with Accuracy and Data Integrity
Describes how to use Visual FoxPro data validation rules and stored procedures with the data source's data validation rules and stored procedures to build client/server applications that protect data integrity.
Planning Enterprise Applications
Explains how you can use Visual FoxPro as part of a larger-scale application that involves two or more development tools, which makes is possible for you to take advantage of the unique capabilities of each product.
Related Sections
Developing Visual FoxPro Applications
Includes conceptual information about how to develop Visual FoxPro applications, instructions for creating databases and the user interface, and other tasks needed to create Visual FoxPro applications.
Application Planning
Describes how careful planning saves time, effort, and money. Many of the decisions you make during the planning phase will impact how you create elements of the application.
Design Considerations
Discusses how the design decision you make will impact how you create your application.
Security Considerations (Visual FoxPro)
Shows how you should be aware of security requirements from a business perspective and the implications that a chosen security model can have on performance, scalability, and deployment.
Planning for Team Development Projects
Discusses how using source control software, such as Microsoft Visual SourceSafe, to manage the files in a project makes it possible to create complex applications quickly by combining the skills of a team of developers.
Developing International Applications
Shows how to design Visual FoxPro applications so they are as effective internationally as domestically using the international features of Visual FoxPro. _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 68 ¼Ó
|
µoªí©ó: ¬P´Á¤T ¤E¤ë 15, 2004 1:39 am ¤å³¹¥DÃD: |
|
|
³W¹º¥D±q¬[ºcÀ³¥Îµ{¦¡
Microsoft® Visual FoxPro® ¬°«Ø¥ß¥\¯à±j¤jªº¥D±q¬[ºcÀ³¥Îµ{¦¡´£¨Ñ¤F¤@¨Ç±M¥Î¤u¨ã¡CVisual FoxPro ¥D±q¬[ºcÀ³¥Îµ{¦¡±N Visual FoxPro ¥\¯à±j¡B³t«×§Ö¡B¹Ï§Î¤Æ¨Ï¥ÎªÌ¬É±¥H¤Î°ª¶¥ªº¬d¸ß¡B³øªí©M³B²zµ¥ÀuÂI»P¦h¤H¨Ï¥Î¦s¨ú¡B¤j¶q¸ê®ÆÀx¦s¡B¤º«Ø¦w¥þ©Ê¡B¥i¾aªº²§°Ê¥æ©ö©Mµn¿ý¥H¤Î ODBC ¸ê®Æ¨Ó·½©Î¦øªA¾¹ªº·í¦a»yªkµ¥¥\¯àºò±K¦aµ²¦X¦b¤@°_¡CVisual FoxPro ©M±j¦³¤Oªº¦øªA¾¹¤§¶¡ªº¨ó½Õ¹B§@¥i¥H°µ¬°¨Ï¥ÎªÌ´£¨Ñ¥\¯à±j¤jªº¥D±q¬[ºc¸Ñ¨M¤è®×¡C
n«Ø¥ß¤@Ó¦¨¥\ªº¥D±q¬[ºcÀ³¥Îµ{¦¡¡Aº¥ý»Ýnªº¬O¤@Ó¦nªº³]p¤è®×¡C¦b³]p¤@Ó¥D±q¬[ºcÀ³¥Îµ{¦¡®É¡A¥²¶·¥ýÁA¸Ñ¦U¤è±ªº»Ý¨D¡AÅv¿Å§Q¹ú±o¥¢¡C±z¥i¯à¬J·Q¬°¦Û¤vªº¨Ï¥ÎªÌ«Ø¥ß¤@Ó³t«×³Ì§Ö¡B®Ä²v³Ì°ªªºÀ³¥Îµ{¦¡¡A¤S·Q«OÃÒÀ³¥Îµ{¦¡ªº¸ê®Æ§¹¾ã©Ê¡A¾¨¥i¯à¦a§Q¥Î²{¦³ªºµwÅé¸Ë¸m¡A¨Ã¦Ò¼{µ{¦¡±N¨Óªº¥i©µ¦ù©Ê¡C¦P®É¡A°µ¬°¤@Ó Visual FoxPro ¶}µo¤Hû¡A±zÁÙ·QÅý¶}µoµ{§Ç¾¨¥i¯à±o²³æ¡A¨Ã°§C¶}µo¶O¥Î¡C
¦b¥»³¹¸`¤¤
³Ì¨Î¤Æ¥D±q¬[ºc®Ä¯à
¥Î Microsoft® Visual FoxPro® «Ø¥ß¤@Ó§Ö³t¡B°ª®Ä²vªº¥D±q¬[ºcÀ³¥Îµ{¦¡¯A¤Î¨ì¦p¦ó§Q¥Î Visual FoxPro °ª³t¤ÞÀºªº°ÝÃD¡C
³z¹L®Ú¾Ú¸ê®Æ¶°¦Xª«¥óªº¸ê®Æ¦s¨ú¨Ï®Ä¯à´£°ª
»¡©ú¦p¦ó³z¹L¾¨¶q´î¤Ö±q¦øªA¾¹¤W¤U¸ü¸ê®Æ¨Ó«Ø¥ß¤@Ó§Ö³t©M¦³®Ä²vªº¥D±q¬[ºcÀ³¥Îµ{¦¡¡C
¦b³Ì¨Î¥¥x¤W©ñ¸m¸ê®Æ
¾Ç²ß¦p¦ó§â¸ê®Æ®wªº¸ê®Æ©M¨ä¥LÄÝ©ÊÀx¦s¦b³Ì¨Î¥¥x¤W¡A¥i¥HÀò±o³Ì¨Îªº®Ä²v¡C
¬ÛÃö³¹¸`
¶}µo Visual FoxPro À³¥Îµ{¦¡
¥»³¹¸`¥]¬AÃö©ó¸Ó¦p¦óµo®i Visual FoxPro À³¥Îµ{¦¡ªº·§©À©Ê¸ê°T¡B«Ø¥ß¸ê®Æ®w©M¨Ï¥ÎªÌ¬É±ªº«ü¥O¥H¤Î¨ä¥L¥ô°È»Ýn²£¥Í Visual FoxPro À³¥Îµ{¦¡¡C
À³¥Îµ{¦¡¬[ºc
¾Ç²ß Visual FoxPro À³¥Îµ{¦¡¬[ºc¦p¦ó¦]±z¨M©w«Ø¥ßªºÀ³¥Îµ{¦¡ªºÃþ«¬¦Ó§ïÅÜ¡C
Visual FoxPro À³¥Îµ{¦¡ªºµ²ºc
´yz¤@ӼзǪº¸ê®Æ®wÀ³¥Îµ{¦¡¸Ó¦p¦ó¥Ñ¸ê®Æµ²ºc¡B¨Ï¥ÎªÌ¬É±¡B¬d¸ß¿ï¶µ©M³øªí¥\¯à©Ò²Õ¦¨¡C
À³¥Îµ{¦¡ªº§Ö³t¶}µo
´yzÀ³¥Îµ{¦¡¶}µoªº°ò¥»ªº¨BÆJ¡G³]p쫬¡B¤W²¾¡B¨Ï¥Î©M³Ì¨Î¤Æ¡C
½T«OÀ³¥Îµ{¦¡«Ø¥ßªº·Ç½T©Ê©M¸ê®Æªº§¹¾ã©Ê
¾Ç²ß¸Ó¦p¦ó¨Ï¥Î¦³¸ê®Æ¨Ó·½ªº¸ê®ÆÅçÃÒ³W«h©MÀx¦s¦¡µ{§Çªº Visual FoxPro ¸ê®ÆÅçÃÒ³W«h©MÀx¦s¦¡µ{§Ç¨Ó«Ø¥ß«OÅ@¸ê®Æ§¹¾ãªº¥D±q¬[ºcÀ³¥Îµ{¦¡¡C
³W¹º¥ø·~À³¥Îµ{¦¡
»¡©ú§A¦p¦ó¦b¨Ï¥Î¨âÓ¥H¤W¶}µo¤u¨ã©Ò«Ø¥ßªº¤j«¬À³¥Îµ{¦¡¤¤¡AVisual FoxPro ¥i¥Hµo´§§@¥Î¡AVisual FoxPro ¤¹³\±zµo´§¨CÓ²£«~¯S¦³¥\¯àªº³Ì¤j«×¡C
----------------------------------------------------------------------------------------------
ì¤å¡G
Planning Client/Server Applications
Microsoft® Visual FoxPro® provides you with the tools to create powerful client/server applications. A Visual FoxPro client/server application combines the power, speed, graphical user interface and sophisticated querying, reporting, and processing of Visual FoxPro with the seamless multiuser access, massive data storage, built-in security, robust transaction processing, logging, and native server syntax of an ODBC data source or server. The synergy of Visual FoxPro and server strengths provides a powerful client/server solution for your users.
The most important step in building a successful client/server application is creating a good design. When you design a client/server application, you're balancing several sets of requirements. You want to build the fastest, most productive application for your users. You also want to ensure the integrity of application data, make the most of existing hardware investments, and build in scalability for the future. In addition, as a Visual FoxPro developer, you want to make the development process as streamlined and cost-efficient as possible.
In This Section
Optimizing Client/Server Performance
Building a fast, high-performance client/server application with Microsoft® Visual FoxPro® involves taking advantage of the tremendous speed of the Visual FoxPro engine.
Performance Enhancement through Set-Based Data Access
Explains how you can build a fast, efficient client/server application by minimizing the amount of data you pull down from the server.
Data Location on the Optimal Platform
Learn how to get maximum performance by storing data and other attributes of your database on the optimal platform.
Related Sections
Developing Visual FoxPro Applications
This section includes conceptual information about how to develop Visual FoxPro applications, instructions for creating databases and the user interface, and other tasks needed to create Visual FoxPro applications.
Application Architecture
Learn how Visual FoxPro application architecture varies with the type of application you decide to create.
Structure of Visual FoxPro Applications
Describes how a typical database application consists of data structures, a user interface, query options, and reporting capabilities.
Rapid Application Development
Describes the fundamental steps in application development, prototyping, upsizing, implementing, and optimizing.
Application Creation with Accuracy and Data Integrity
Learn how to use Visual FoxPro data validation rules and stored procedures with the data source's data validation rules and stored procedures to build client/server applications that protect data integrity.
Planning Enterprise Applications
Explains how you can use Visual FoxPro as part of a larger-scale application that involves two or more development tools, which makes is possible for you to take advantage of the unique capabilities of each product. _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 69 ¼Ó
|
µoªí©ó: ¬P´Á¤T ¤E¤ë 15, 2004 1:40 am ¤å³¹¥DÃD: |
|
|
³Ì¨Î¤Æ¥D±q¬[ºc®Ä¯à
¦b¥D±q¬[ºcÀ³¥Îµ{¦¡ªì¨B§¹¦¨¥H«á¡A¥i¯àÁÙ·|µo²{¤@¨Ç¦³«Ý§ï¶iªº¦a¤è¡A³o®É¡A¥i¥H¹ïÀ³¥Îµ{¦¡°µ¤@¨Çºë²Óªº½Õ¸`¤u§@¡A¤ñ¦p¡A¥[§Öªí³æ©M¬d¸ßªº°õ¦æ³t«×¡B´£°ª¸ê®Æ¶Ç¿é¶qµ¥¡A¥HÀò±o³Ì¨Î®Ä¯à¡C
¥»³¹±q«È¤áºÝ¡Bºô¸ô©M¦øªA¾¹¤TӤ豰Q½×À³¥Îµ{¦¡®Ä¯àªº³Ì¨Î¤Æµ¦²¤¡C
¦b¥»³¹¸`¤¤
¥D±q¬[ºc°ª®Ä²vªº³]p
¥Î Microsoft® Visual FoxPro® «Ø¥ß¤@Ó§Ö³t¡B°ª®Ä²vªº¥D±q¬[ºcÀ³¥Îµ{¦¡¯A¤Î¨ì¦p¦ó§Q¥Î Visual FoxPro °ª³t¤ÞÀºªº°ÝÃD¡C
³Ì¨Î¤Æ³s±µ
µL½×¬O¦b«È¤áºÝÁÙ¬O¦b¦øªA¾¹¤W«Ø¥ß³s±µ³£»Ýn®ø¯Ó®É¶¡©M°O¾ÐÅé¡C¦b³Ì¨Î¤Æ³s±µ®É¡A»Ýn±Ä¨ú§é°J¤è®×¡A¦b°ª®Ä¯àn¨D©MÀ³¥Îµ{¦¡ªº¸ê·½»Ý¨D¨âªÌ¤§¶¡°µ¥X¥¿Å¡C
¥[³t¸ê®ÆÀ˯Á
§ÚÌ¥i¥H³z¹L±±¨îº¥¶i¦¡Àò¨úµ{§Ç¤¤©Ò´£¨Ñ§ì¨ú¸ê®Æ°O¿ýªº¼Æ¥Ø¨Ó±±¨î§ì¨ú¸ê®Æªº¦h¤Ö¡A©M¨Ï¥Î©µ¿ð§ì¨úªþµùµ¥§Þ³N¨Ó¥[³t¸ê®ÆÀ˯Á¡C
¬d¸ß©M¸ê®Æ¶°¥[³t
¥i¥H³z¹L¼W¥[¯Á¤Þ¡B³Ì¨Î¤Æ¥»¦a©M¶Ç¿é³B²z¡B³Ì¨Î¤Æ°Ñ¼Æ¹Bºâ¦¡¨Ó´£°ª¬d¸ß©M¸ê®Æ¶°ªº®Ä²v¡C
ªí³æ¥[³t
¦b³]p¤@Ó¥Dn®Ú¾Ú¦øªA¾¹¸ê®Æªºªí³æ®É¡Aµy§@³B²z«K¥iÀò±o³Ì¨Îªº®Ä²v¡C
´£°ª§ó·s©M§R°£ªº®Ä²v
³z¹L¦V»·ºÝ¸ê®Æªí®æ·s¼W®É¶¡ÂW°OÄæ¦ì¡B¨Ï¥Î CompareMemo ÄݩʡB¨Ï¥Î¤â°Ê²§°Ê¥æ©ö¼Ò¦¡¡B¨Ï¥Î»·ºÝ¦øªA¾¹Àx¦s¦¡µ{§Ç¥H¤Î§å¦¸³B²z§ó·sµ¥¼Ò¦¡¨Ó¥[³t§ó·s±Ôz©M§R°£±Ôzªº°õ¦æ¡C
¬ÛÃö³¹¸`
«Ø¥ßÀ³¥Îµ{¦¡
°Q½×¸Ó¦p¦ó«Ø¥ß Visual FoxPro À³¥Îµ{¦¡¡A¥i¯à¥]¬A¤@өΦhÓ¸ê®Æ®w¡B³]©wÀ³¥Îµ{¦¡¨t²ÎÀô¹Òªº¥Dµ{¦¡¥H¤Î¨Ï¥ÎªÌ¬É± (½Ñ¦pªí³æ¡B¤u¨ã¦C©M¥\¯àªíµ¥)¡C
¦p¦ó¡G³]©w°_©lÂI
´yz¥Dµ{¦¡¦p¦ó§@¬°À³¥Îµ{¦¡ªº°_©lÂI¥Dµ{¦¡¥i¥H¥]§t¤@Óµ{¦¡©ÎªÌªí³æ¡C·í°õ¦æÀ³¥Îµ{¦¡®É¡AVisual FoxPro ±N¬°À³¥Îµ{¦¡±Ò°Ê¥Dµ{¦¡¡AµM«á¥Dµ{¦¡¦A¨Ì¦¸©I¥s©Ò»ÝnªºÀ³¥Îµ{¦¡¡C
¦p¦ó¡G°_©l¤ÆÀô¹Ò
¹ïÀ³¥Îµ{¦¡ªºÀô¹Ò¶i¦æ°_©l¤Æ¬O¥Dµ{¦¡©ÎªÌ¥DÀ³¥Îµ{¦¡¥²¶·°µªº²Ä¤@¥ó¨Æ±¡¡C
¦p¦ó¡G±±¨î¨Æ¥óªº°j°é
¾Ç²ß¦p¦ó«Ø¥ß¤@Өƥ󪺰j°é¡A¨Ï Visual FoxPro ¶}©l³B²z¹³·Æ¹««ö¤@¤U¡BÁä½L¿é¤J³o¼Ëªº¨Ï¥ÎªÌ¨Æ¥ó¡C¦¹µo¥Í¦bÀ³¥Îµ{¦¡ªºÀô¹Ò«Ø¥ß°_¨Ó©MÅã¥Ü¥X°_©lªº¨Ï¥ÎªÌ¬É±¤§«á¡C
«Ø¥ß¨ã¦³[À³¥Îµ{¦¡®Ø¬[]ªºÀ³¥Îµ{¦¡
»¡©ú¦p¦ó¨Ï¥Î[À³¥Îµ{¦¡ºëÆF]©M[À³¥Îµ{¦¡»²§U³]p¤u¨ã]¨Ó«Ø¥ß¨ã¦³[À³¥Îµ{¦¡®Ø¬[]ªºÀ³¥Îµ{¦¡¡C
«Ø¥ß¨Ï¥ÎªÌ¬É±
¾Ç²ß¦p¦ó«Ø¥ßªí³æ¡BÃþ§O¡B±±¨î¶µ©M¤u¨ã¦C¬°¨Ï¥ÎªÌ¬É±´£¨Ñ¤@¨t¦Cªº¤u¨ã¡C
¤W²¾ Visual FoxPro ¸ê®Æ®w
»¡©ú¦p¦ó¨Ï¥Î¤W²¾ºëÆF±N¸ê®Æ®w¡B¸ê®Æªí®æ¤Î¸ê®Æ¶°±q±zªº¨t²Î²¾¨ì»·ºÝ Microsoft SQL Server ¤W¡C
«Ø¥ß°ê»Ú¤ÆÀ³¥Îµ{¦¡
´yz¸Ó¦p¦ó³]p©M¶}µo Visual FoxPro À³¥Îµ{¦¡¨Ï¨ä°ê»Ú¤Æ¦p¦P¦X¥G°ê¤º¦¡¦a¦³®Ä¡C
----------------------------------------------------------------------------------------------
ì¤å¡G
Optimizing Client/Server Performance
When you have implemented your client/server application, you might find areas where you'd like to improve performance. For example, you can fine-tune your application to gain maximum performance by speeding up forms and queries and increasing data throughput.
This section discusses optimization strategies for application performance on the client, network, and server.
In This Section
Client/Server Design for High Performance
Building a fast, high-performance client/server application with Microsoft® Visual FoxPro® involves taking advantage of the tremendous speed of the Visual FoxPro engine.
Optimizing Connections
Establishing a connection uses time and memory on both the client and the server. When you optimize connections, you balance your need for high performance against the resource requirements of your application.
Speeding Up Data Retrieval
You can speed up data retrieval by managing the number of rows fetched during progressive fetching, controlling fetch size, and using delayed Memo fetching.
Query and View Acceleration
You can improve query and view performance by adding indexes, optimizing local and remote processing, and optimizing parameter expressions.
Form Acceleration
When you design a form based primarily on server data, take a minimalist approach for the best performance.
Performance Improvement on Updates and Deletes
You can speed up Update and Delete statements by, adding timestamps to your remote tables, using the CompareMemo property, using manual transaction mode, using stored procedures on a remote server, and batching updates.
Related Sections
Creating Applications
Discusses how to create Visual FoxPro application, which may include one or more databases, a main program that sets up the application's system environment, and a user interface comprised of forms, toolbars, and menus.
How to: Set the Starting Point
Describes how the main file is the starting point for your application, and can consist of a program or form. When your application is run, Visual FoxPro launches the main file for your application, which in turn runs all other components as needed.
How to: Initialize the Environment
Setting up the application environment is the first task that a main file or application object must accomplish.
How to: Control the Event Loop
Learn how to establish an event loop to, which causes Visual FoxPro to begin processing user events such as mouse clicks and keystrokes. This occurs after the environment is set up and you've displayed the initial user interface.
Creating Applications with the Application Framework
Explains how to create applications with the Application Framework using the Application Wizard and the Application builder.
Creating the User Interface
Learn how creating forms, classes, controls, and toolbars can provide a rich set of tools for your user interface.
Upsizing Visual FoxPro Databases
Explains how to use the upsizing wizards to move databases, tables, and views from your system to a remote Microsoft SQL Server.
Creating International Applications
Describes how you can design and develop your Visual FoxPro applications so they are as effective internationally as domestically. _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 70 ¼Ó
|
µoªí©ó: ¬P´Á¥| ¤E¤ë 16, 2004 1:26 am ¤å³¹¥DÃD: |
|
|
¥D±q¬[ºc°ª®Ä²vªº³]p
¥Î Visual FoxPro «Ø¥ß¤@Ó§Ö³t¡B°ª®Ä²vªº¥D±q¬[ºcÀ³¥Îµ{¦¡¯A¤Î¨ì¦p¦ó§Q¥Î Visual FoxPro °ª³t¤ÞÀºªº°ÝÃD¡C±z¥i¥H¦Ò¼{§Q¥Î¤@¨Ç·s§Þ³N¨Ó¹F¨ì³o¤@¥Øªº¡A¨Ò¦p¡A¨Ï¥Î®Ú¾Ú¸ê®Æ¶°( ¨Ò¦p¥»¦a¸ê®Æ¶°»P»·ºÝ¸ê®Æ¶° )ªº¸ê®Æ¦s¨ú§Þ³N¦Ó¤£¬O¶Ç²Îªº Xbase ·j´M§Þ³N¡F«Ø¥ß¦³±ø¥óªº¬d¸ß¶È¤U¸ü©Ò»Ýªº¸ê®Æ¡F¦X²z¦w±Æ¦U¸ê®Æªí®æªº¦ì¸m¡F¨ó½Õ¨Ï¥Î Visual FoxPro Àx¦s¦¡µ{§Ç©M»·ºÝÀx¦s¦¡µ{§Çµ¥¡C
¦b³]p¤@Ó¥»¦aªºÀ³¥Îµ{¦¡©ÎÀɮצøªAÀ³¥Îµ{¦¡®É¡A¥²¶·½T©wÀ³¥Îµ{¦¡±Nn¨Ï¥Î©Î«Ø¥ßªº¬d¸ß¡Bªí³æ¡B¥\¯àªí©M³øªí¡C¦b³]p¤@Ó¥D±q¬[ºcÀ³¥Îµ{¦¡®É¡A°£¤F³o¨Ç¤@¯ëªº¨t²Î¤ÀªR¤§¥~¡AÁÙ»Ýn°w¹ï¥D±q¬[ºcÀ³¥Îµ{¦¡ªº¯SÂI¶i¦æÃB¥~ªº¤ÀªR¡A¦Ò¼{¬d¸ß¡Bªí³æ¡B¥\¯àªí©M³øªí©Ò¨Ï¥Îªº¸ê®Æ¦s©ñ¦bþ¨à¡A¦p¦ó¦s¨ú³o¨Ç°T®§µ¥¡C¨Ò¦p¡A±z¥²¶·¦^µª¤U¦C¤@¨Ç°ÝÃD¡G
¡EÀ³¥Îµ{¦¡§¹¦¨«á¡Aþ¨Ç¸ê®Æªí®æÀx¦s¦b»·ºÝ¦øªA¾¹¤W¡H
¡E±Nþ¨Ç¸ê®Æªí®æ§@¬°¥»¦aªº¬d¸ß¸ê®Æªí®æ¨ÓÀx¦s¥i´£°ª®Ä²v¡H
¡E»Ýnþ¨Ç¸ê®Æ¶°¨Ó¦s¨ú»·ºÝ¸ê®Æ¡H
¡E¦b¦øªA¾¹¤W¹ê¬I¦óºØ°Ó·~³W«h¡AÀ³¥Îµ{¦¡«ç¼Ë§Q¥Î³o¨Ç³W«h¡H
¦b½T©w¤F¥D±q¬[ºcÀ³¥Îµ{¦¡ªº°ò¥»²Õ¦¨³¡¥÷¤§«á¡A´N¥i¥H¶}©l¹ïÀ³¥Îµ{¦¡¦p¦ó¦s¨ú©M§ó·s¸ê®Æ¶i¦æ³]p¤F¡C
¬ÛÃö¸ê°T
³z¹L®Ú¾Ú¸ê®Æ¶°¦Xª«¥óªº¸ê®Æ¦s¨ú¨Ï®Ä¯à´£°ª
³W¹º¥D±q¬[ºcÀ³¥Îµ{¦¡
¦b³Ì¨Î¥¥x¤W©ñ¸m¸ê®Æ
¿ï©w¥¿½Tªº¤èªk
³Ì¨Î¤Æ¥D±q¬[ºc®Ä¯à
¨Ï¥Î SQL pass-through §Þ³N¥[±jÀ³¥Îµ{¦¡
----------------------------------------------------------------------------------------------
ì¤å¡G
Client/Server Design for High Performance
Building a fast, high-performance client/server application with Visual FoxPro involves taking advantage of the tremendous speed of the Visual FoxPro engine. You accomplish this with new techniques such as using set-based data access rather than traditional local navigation, building parameterized queries to download just the data you need, locating tables on the optimal platform, and leveraging both Visual FoxPro and remote stored procedures.
When you design a local or file-server application, you determine the queries, forms, menus, and reports your application will use or create. When you design a client/server application, you perform all the normal system analysis plus additional analysis that relates specifically to client/server applications. You need to think about where the data used by queries, forms, menus and reports will be located, and how you'll access that information. For example, you might ask yourself questions such as:
¡EWhich tables will be stored on the remote server once the application is implemented?
¡EWhich tables would be more efficiently stored as local lookup tables?
¡EWhat views will you need to access remote data?
¡EWhat business rules does the server enforce, and how will your application interact with these rules?
Once you've determined the basic components of your client/server application, you can begin to design how your application will access and update data.
See Also
Performance Enhancement through Set-Based Data Access
Planning Client/Server Applications
Data Location on the Optimal Platform
Selecting the Right Methods
Optimizing Client/Server Performance
Enhancing Applications Using SQL Pass-Through Technology _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 71 ¼Ó
|
µoªí©ó: ¬P´Á¥| ¤E¤ë 16, 2004 1:26 am ¤å³¹¥DÃD: |
|
|
³Ì¨Î¤Æ³s±µ
µL½×¬O¦b«È¤áºÝÁÙ¬O¦b¦øªA¾¹¤W«Ø¥ß³s±µ³£»Ýn®ø¯Ó®É¶¡©M°O¾ÐÅé¡C ¦b³Ì¨Î¤Æ³s±µ®É¡A»Ýn±Ä¨ú§é°J¤è®×¡A¦b°ª®Ä¯àn¨D©MÀ³¥Îµ{¦¡ªº¸ê·½»Ý¨D¨âªÌ¤§¶¡°µ¥X¥¿Å¡C
Visual FoxPro ¨Ï¥Îªº³s±µªº¼Æ¥Ø¨ú¨M©ó¬O§_±j¨îÃö³¬¤£¦A¨Ï¥Îªº³s±µ¡A¥H¤Î¦p¦ó³]©w³s±µªÅ¶¢¹O®É¡C
¨Ï¥Î¦@¥Î³s±µ³q¹D
¥i¥H¥H±M¥Î¼Ò¦¡¨Ï¥Î³s±µ¡A¤]¥i¥H¥H¦@¥Î¼Ò¦¡¨Ï¥Î³s±µ¡C¨âºØ¤èªk¦U¦³ÀuÂI¡C±M¥Î¨Ï¥Î¤@Ó³s±µ®É¡A¤@¥¹³s±µ«Ø¥ß¡AÀ³¥Îµ{¦¡«K¤£»Ý¹ï³s±µ¸ê·½¶i¦æ·m¥Î¡C¦pªG¨CÓµ²ªG¶°³£±M¥Î¤@Ó³s±µ¡A±z´N¥i¥H¦b¦hÓµ²ªG¶°¤W¶i¦æ²V¦X«D¦P¨B³B²z¡C
¥H¦@¥Î¼Ò¦¡¨Ï¥Î¤@Ó³s±µ®É¡A¹ï©ó¦hÓµ²ªG¶°¥u¦³¤@Ó³s±µ¡C¦b¦@¥Î³s±µ³q¹Dªº¦hÓµ²ªG¶°¤W¡A¥²¶·¨Ì·Ó¦¸§Ç¹ï¸ê®Æ³B²z¡A¨Ã¥B¦b³]pÀ³¥Îµ{¦¡®Én¦Ò¼{¸ê®Æ¦s¨ú¥i¯àµo¥Íªº½Ä¬ð¡A¦]¦¹»Ýn´ú¸Õ³s±µ¬O§_¥i¥Î¡C¦³Ãö¦@¥Î¤@Ó³s±µªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¦p¦ó¡G¦@¥Î¦hÓ»·ºÝ¸ê®Æ¶°ªº³s±µ¡v¡C
±±¨î³s±µ¹O®É
¦pªGÀ³¥Îµ{¦¡¦³«Üªø¤@¬q®É¶¡¨S¦³¥ô¦ó°Ê§@¡A¨º»ò¥i¥H³z¹L³]©w³s±µªº IdleTimeout ÄݩʨӴî¤Ö³s±µªº¨Ï¥Î¡CIdleTimeout Äݩʱ±¨î³s±µªº¶¢¸m®É¶¡¡A¶W¹L¸Ó®É¶¡©w¤§«á¡A³s±µ±N³Q Visual FoxPro Ãö³¬¡C¹w³]±¡ªp¤U¡A³s±µ³B©óµLµ¥«Ýª¬ºA¡Aª½¦Ü¥Ñ¨Ï¥ÎªÌÃö³¬¤~ÄÀ©ñ¸Ó³s±µ¡C
¥Î DBSETPROP( ) ¨ç¼Æªº IdleTimeout Äݩʬ°³s±µ©w¸q³]©w¶¢¸m®É¶¡¡F¥i¥Î SQLSETPROP( ) ¨ç¼Æ¬°¨Ï¥Î¤¤³s±µ³]©w IdleTimeout ÄݩʡC
§Y¨Ï¦bÅã¥Ü»·ºÝ¸ê®ÆªºÂsÄýµøµ¡©Mªí³æ¤´µM¶}±Ò®É¡AVisual FoxPro ¤]¥i¥HÃö³¬³s±µ¡A¨Ã¦b«·s»Ýn¸Ó³s±µªº®ÉÔ¡A¤S¦Û°Ê¶i¦æ³s±µ¡C¦ý¬O¡A¦b¤U¦C±¡ªp¤U¡AVisual FoxPro µLªkÃö³¬³s±µ¡G
¡E±q¦øªA¾¹¨Óªº¬d¸ßµ²ªG§Y±N¨ì¹F¡C
¡E³s±µ¨Ï¥Î¤F¤â°Ê²§°Ê¥æ©ö¼Ò¦¡¡CnÃö³¬¦¹³s±µ¡A¥²¶·§¹¦¨©Î¦V«á¦^´_¸Ó²§°Ê¥æ©ö³B²z¡A¤~¯àÂà´«¨ì¦Û°Ê²§°Ê¥æ©ö¼Ò¦¡¡C
¥i¥H¥Î DBSETPROP( ) ¨ç¼Æ³]©w Transactions ÄݩʡA¬°¤@Ó³s±µ©w¸q³]©w²§°Ê¥æ©ö¼Ò¦¡¡F¦Ó¥Î SQLSETPROP( ) ¨ç¼Æ¥i¥H¬°¤@ӨϥΤ¤ªº³s±µ³]©w²§°Ê¥æ©ö¼Ò¦¡¡C
ÄÀ©ñ³s±µ
·íÀ³¥Îµ{¦¡¤£¦A¨Ï¥Î¤@Ó³s±µ®É¡AÀ³¸ÓÃö³¬¸Ó³s±µ¡A³o¼Ë¥i¥H´£°ªÀ³¥Îµ{¦¡ªº®Ä²v¡C¦bÃö³¬¤@Ó¸ê®Æ¶°®É¡A³s±µ·|¦Û°ÊÃö³¬¡C¦pªG¸Ó³s±µ³Q¦hÓ¸ê®Æ¶°¦@¥Î¡A·í¨Ï¥Î¸Ó³s±µªº³Ì«á¤@Ó¸ê®Æ¶°Ãö³¬®É¡AVisual FoxPro ·|Ãö³¬¸Ó³s±µ¡C
¦pªG¤£·Q§ó·s¼È¦s¸ê®Æªí®æ¤¤ªº¸ê®Æ¡A¤]¥i¥HÃö³¬¬d¸ßªº³s±µ¡C¥i¥H¥Î SQL ¶Ç»¼¬d¸ß¥ý§â©Ò»Ý¸ê®Æ©ñ¤J¤@Ó¥»¦a¼È¦s¸ê®Æªí®æ¡AµM«áÃö³¬³s±µ¡C
¬ÛÃö¸ê°T
³Ì¨Î¤Æ¥D±q¬[ºc®Ä¯à
¥[³t¸ê®ÆÀ˯Á
¬d¸ß©M¸ê®Æ¶°¥[³t
´£°ª§ó·s©M§R°£ªº®Ä²v
ªí³æ¥[³t
¨Ï¥Î SQL pass-through §Þ³N¥[±jÀ³¥Îµ{¦¡
«Ø¥ß¸ê®Æ¶°
----------------------------------------------------------------------------------------------
ì¤å¡G
Optimizing Connections
Establishing a connection uses time and memory on both the client and the server. When you optimize connections, you balance your need for high performance against the resource requirements of your application.
The number of connections used by Visual FoxPro depends on whether you force the closing of unused connections, and how you set the length of the connection idle timeout.
Using Shared Connections
You can use connections exclusively or share a connection. Each method has its benefits. When you use a connection exclusively, your application experiences no contentions for connection resources once a connection is established. If each result set uses an exclusive connection, you can also intermingle asynchronous processing on multiple result sets.
When you use a shared connection, you have one connection for multiple result sets. You must serialize data manipulation operations on the result sets sharing the same connection, and design the application to test the connection for busyness any time conflicts might occur. For information on sharing a connection, see How to: Share Connections for Multiple Remote Views.
Controlling Connection Timeouts
If your application doesn't take any action for a long time, you can reduce connection use by setting the IdleTimeout property on the connection. The IdleTimeout property controls the interval of time connections are allowed to idle before they're closed by Visual FoxPro. By default, connections wait indefinitely and are not deactivated until specifically closed by the user.
You set the idle time for a connection definition with the IdleTimeout property of the DBSETPROP( ) function; you can set the IdleTimeout property for an active connection with the SQLSETPROP( ) function.
Visual FoxPro closes connections even if Browse windows and forms displaying remote data are still open, and then automatically reconnects when the connection is needed again. However, Visual FoxPro cannot close a connection if:
¡EResults of a query from the server are pending.
¡EThe connection is in manual transaction mode. You must commit or roll back the transaction and switch to automatic transaction mode before the connection can be closed.
You set the transaction mode for a connection definition with the Transactions property of the DBSETPROP( ) function; you can set the transaction mode for an active connection with the SQLSETPROP( ) function.
Releasing Connections
You can improve performance by closing connections that your application is no longer using. Connections are closed automatically for you when you close a view. If the connection is shared by multiple views, Visual FoxPro closes the connection when the last view using the connection is closed.
You can control the connection for a query manually if you don't want to update the data in a cursor. Use a SQL pass-through query to select the data you need into a local cursor and then close the connection.
See Also
Optimizing Client/Server Performance
Speeding Up Data Retrieval
Query and View Acceleration
Performance Improvement on Updates and Deletes
Form Acceleration
Enhancing Applications Using SQL Pass-Through Technology
Creating Views _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 72 ¼Ó
|
µoªí©ó: ¬P´Á¥| ¤E¤ë 16, 2004 10:52 pm ¤å³¹¥DÃD: |
|
|
¥[³t¸ê®ÆÀ˯Á
§ÚÌ¥i¥H³z¹L±±¨îº¥¶i¦¡Àò¨úµ{§Ç¤¤©Ò´£¨Ñ§ì¨ú¸ê®Æ°O¿ýªº¼Æ¥Ø¨Ó±±¨î§ì¨ú¸ê®Æªº¦h¤Ö¡A©M¨Ï¥Î©µ¿ð§ì¨úªþµùµ¥§Þ³N¨Ó¥[³t¸ê®ÆÀ˯Á¡C
¤]¥i¥Î UseMemoSize ¸ê®Æ¶°ÄݩʱN¦r¤¸«¬ºAªºÄæ¦ì¶Ç¦^¦¨¬°ªþµù«¬ºAÄæ¦ì¡CµM«áÃö³¬ FetchMemo ÄݩʡA¨ÏÀ³¥Îµ{¦¡¥i¥H¦³¿ï¾Ü¦a±N¤w§ì¨úªº¦r¤¸Äæ¦ìÂà´«¦¨ªþµùÄæ¦ì¡C
º¥¶i¦¡Àò¨ú
¦b¬d¸ß¤@Ó»·ºÝ¸ê®Æ¨Ó·½®É¡AVisual FoxPro À˯Á©Ò¦³ªº¸ê®Æ°O¿ý¡A¨Ã¥B«Ø¥ß¤@Ó Visual FoxPro ¼È¦s¸ê®Æªí®æ¡C¬°¤F¥[³t»·ºÝ¸ê®ÆªºÀ˯Á¡A¥i¹ï¸ê®Æ¶°¦X¼È¦s¸ê®Æªí®æ©M¥Ñ SQL ¶Ç»¼¥H«D¦P¨B¼Ò¦¡«Ø¥ßªº¼È¦s¸ê®Æªí®æ¨Ï¥Îº¥¶i¦¡Àò¨ú§Þ³N¡C¦pªG¤@¦¸À˯Á¾ãÓ¸ê®Æ¶°¦X¡A©¹©¹·|³y¦¨À³¥Îµ{¦¡µ¥Ô®É¶¡¹Lªø¡A¦Óº¥¶i¦¡Àò¨ú§Þ³N»P¦¹¤£¦P¡C¦pªG¨Ï¥Îº¥¶i¦¡Àò¨ú§Þ³N¡AVisual FoxPro °õ¦æ¬d¸ß®É¥u§â¾ãÓµ²ªG¶°ªº¤@Ó¤l¶°¨ú¨ì¥»¦a¼È¦s¸ê®Æªí®æ¤¤¡C¦b¹w³]±¡ªp¤U¡A¤l¶°ªº¤j¤p¬° 100 ¦C¡C
ª`·N¡G
¦P¨B SQL ¶Ç»¼±Ôz¨Ã¤£¨Ï¥Îº¥¶i¦¡Àò¨ú§Þ³N¡C¦b±±¨îÅv¶Ç¦^À³¥Îµ{¦¡¤§«e¡A¥Ñ SQLEXEC( ) ±Ôz½Ð¨Dªº¾ãÓµ²ªG¶°³£±N³QÀ˯Á¡C
ÀHµÛ Visual FoxPro ¤£Â_À˯Á¸ê®Æ¡A¥»¦a¼È¦s¸ê®Æªí®æ¤¤±o¨ìªº¬d¸ß¸ê®Æ¤]³vº¥¼W¦h¡C¥Ñ©ó³o¨Ç¸ê®Æ°O¿ý¬O¦b¤£¦P®É´Á±q¸ê®Æ¨Ó·½À˯Á±o¨ìªº¡A¦]¦¹¸ê®Æ°O¿ý¤¤ªº¸ê®Æ¥i¯à¤£·|¬O¥Ø«e¸ê®Æ¡C¦pªG³s±µ³B©ó«D¦P¨B¼Ò¦¡¤U¡A¤@¸g§ì¨ú¤F¸ê®Æªº²Ä¤@Ó¤l¶°¡AVisual FoxPro «K§â±±¨îÅv¶Ç¦^µ¹±z©Î±zªºµ{¦¡¡C¦b¶¢¸m®É¶¡ùØ¡AVisual FoxPro ¦bI´º§ì¨ú¬d¸ß©Ò»Ýnªº³Ñ¤Uªº¸ê®Æ°O¿ý¡A¨C¦¸¨ú¤@Ó¤l¶°¨ì¥»¦aªº¼È¦s¸ê®Æªí®æ¤¤¡C³oºØ¤èªk¨Ï±z¥i¥HÀH®É¨Ï¥Î¼È¦s¸ê®Æªí®æ¤¤¤w§ì¨úªº¸ê®Æ¡A¦Ó¤£¥²µ¥«Ý¥þ³¡ªº¸ê®Æ³£¨ì¹F¡C
ª`·N¡G
¼W¥[§ì¨úªº¸ê®Æ°O¿ý¼Æ±N¥i´£ª@®Ä¯à¡A¦ý·|°§C¨Ï¥ÎªÌ¬É±ªº¦^À³®Ä¯à¡C´î¤Ö§ì¨úªº¸ê®Æ°O¿ý¼Æ«h§@¥Î¬Û¤Ï¡C
§ì¨ú»Ýnªº¸ê®Æ
³z¹L¨Ï¥Î FetchAsNeeded ¸ê®Æ®w©M¸ê®Æ¶°¼È¦s¸ê®Æªí®æÄݩʡA¥i¥H¥u§ì¨ú©Ò»Ý¸ê®Æ°O¿ý¡A¦Ó¤£¬O³sÄò§ì¨ú¡C³o¹ï©ó»·ºÝ¸ê®Æ¶°©Î¨º¨Ç»ÝnÀ˯Á¤j¶qµ²ªG¶°ªº¸ê®Æ¶°¡A¥i¨Ï¸ê®ÆÀ˯Á§ó¬°¦³®Ä¡C
FetchAsNeeded Äݩʪº¹w³]Ȭ°¡§°²¡¨(.F.)¡A§Y¹w³]¬°³sÄò§ì¨ú¡C±N FetchAsNeeded Äݩʳ]©w¬°¡§¯u¡¨(.T.)¡A«h¥u¦³¦b»Ýn®É¤~·|§ì¨ú¸ê®Æ°O¿ý¡C·í FetchAsNeeded Äݩʳ]©w¬°¯u®É¡A¦b¥H¤U¨âºØ±¡ªp¤U¥i¥H°õ¦æ§ó·s¡G©I¥s¥Ø«e³s±µ±±¨î½X¤¤ªº SQLCANCEL( ) ¨ç¼Æ§¹¦¨§ì¨ú¡A©ÎªÌ¡AÃö³¬¸ê®Æ¶°¡C
YnÀ˵ø¨Ï¥Î FetchAsNeeded Äݩʪº®ÄªG¡A¥i¦bÀ˯Á¤jµ²ªG¶°ªº¸ê®Æ¶°¤¤¡A±N FetchAsNeeded Äݩʳ]©w¬°¡§¯u¡¨(.T.)¡A¨Ã¦b¸ê®Æ¶°¤¤¶}±Ò¤@ÓÂsÄýµøµ¡¡A©¹¤U±²°Êµøµ¡¤¤¤º®e¡C ÀHµÛÂsÄýµøµ¡¤£Â_¦V¤U±²°Ê¡Aª¬ºA¦C¤£Â_§ó·s¥HÅã¥ÜÀ˯Á¹Lªº¦C¼Æ¡C
±±¨î¼È¦s¸ê®Æªí®æªº§ì¨ú
Yn§ì¨ú¾ãӼȦs¸ê®Æªí®æ¡A¥i¥H°õ¦æ GOTO BOTTOM «ü¥O¡A©ÎªÌ¥ô¦ó¨ä¥Ln¨D¦s¨ú¾ãÓ¸ê®Æ¶°¦Xªº«ü¥O¡C
´£¥Ü¡G
¾¨ºÞ¥i¥Î GO TO BOTTOM «ü¥O§ì¨ú¾ãӼȦs¸ê®Æªí®æ¡A¦ý§ó¦³®Ä²vªº°µªk¬O«Ø¥ß¤@Ó¦³±ø¥óªº¸ê®Æ¶°¡A¨C¦¸¶È¨ú³æ¿W¤@¦C¡A¦b¨Ï¥ÎªÌÅܧó¸ê®Æ°O¿ý®É¦A«·s¬d¸ß¡C¦³Ãö«Ø¥ß°ª®Ä¯à¸ê®Æ¶°ªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¦p¦ó¡G³Ì¨Î¤Æ¸ê®Æ¶°®Ä¯à¡v¡C
¦bµ{¦¡¤¤¤£n´£¨Ñ¶¢¸m°j°éªº³B²z¡Cn¥Hµ{¦¡¼¶¼g¼Ò¦¡§ì¨ú¸ê®Æ¶°¼È¦s¸ê®Æªí®æ¡A¥i¥Î GO nRecordNumber ©Î GO TO BOTTOM «ü¥O¡Cn¦b«D¦P¨B¼Ò¦¡¤U§ì¨ú SQL ¶Ç»¼«Ø¥ßªº¼È¦s¸ê®Æªí®æ¡A¥i¬°¨CÓ¸ê®Æ°O¿ý¤l¶°©I¥s¤@¦¸ SQL ¶Ç»¼«D¦P¨B¨ç¼Æ¡C
¨ú®ø SQLEXEC( ) ±Ôz
¦b¥ô¦ó®ÉÔ¡A³£¥i¥Î SQLCANCEL( ) ¨ç¼Æ¨Ó¨ú®ø¤@±ø SQLEXEC( ) ±Ôz©Î¤@Ó¸ê®Æ¶°¡C¦ý¬O¡A¦pªG¦øªA¾¹¤w¸g²£¥Í»·ºÝµ²ªG¶°¡A¨Ã¥B Visual FoxPro ¤w¶}©l§â»·ºÝµ²ªG¶°¦s¤J¥»¦a¼È¦s¸ê®Æªí®æ¡ASQLCANCEL( ) ´N·|¨ú®ø SQLEXEC( ) ±Ôz¡A¨Ã¯d¤U¸Ó¥»¦a¼È¦s¸ê®Æªí®æ¡CYn²¾°£¸Ó¥»¦a¼È¦s¸ê®Æªí®æ¡A¥i¥H°õ¦æ USE «ü¥O¡AÃö³¬¼È¦s¸ê®Æªí®æ¨Ã¨ú®ø§ì¨ú°Ê§@¡C
¦pªG SQLEXEC( ) ±ÔzÁÙ¨S¦³«Ø¥ß¤@Ó¥»¦aªº¼È¦s¸ê®Æªí®æ¡A«h USE «ü¥OµLªk¨ú®ø¸Ó¼È¦s¸ê®Æªí®æ¡C¬°¤F½T©w Visual FoxPro ¬O§_¤w«Ø¥ß¤F¤@Ó¥»¦aªº¼È¦s¸ê®Æªí®æ¡A¥i¥H©I¥s USED( ) ¨ç¼Æ¡C
±±¨î¤@¦¸§ì¨ú¦h¤Ö¦C¸ê®Æ
n±±¨îÀ³¥Îµ{¦¡±q»·ºÝ¦øªA¾¹¤W¤@¦¸§ì¨ú¦h¤Ö¦C¸ê®Æ¡A¥i¦b¸ê®Æ¶°¤¤³]©w FetchSize ÄݩʡA³z¹Lº¥¶i¦¡Àò¨ú©ÎªÌ©I¥s«D¦P¨B SQL ¶Ç»¼¥i±±¨î±q»·ºÝ¦øªA¾¹¤W¤@¦¸§ì¨ú¦h¤Öµ§¸ê®Æ°O¿ý¨ì¥»¦a¼È¦s¸ê®Æªí®æ¡CFetchSize Äݩʪº¹w³]Ȭ° 100 ¦C¡C
Yn±±¨î¤@¦¸§ì¨ú¨ì¸ê®Æ¶°¤¤ªº°O¿ý¼Æ¥Ø
1.¦b[¸ê®Æ¶°³]p¤u¨ã]¤¤¡A±q[¬d¸ß]¥\¯àªí¦C¿ï©w[¶i¶¥¿ï¶µ]«ü¥O¡CµM«á¦b[¶i¶¥¿ï¶µ]¹ï¸Ü¤è¶ôªº[§ì¨ú¸ê®Æ]°Ï°ì¤¤¡A¥Î¼ÆÈ·L½Õ¾¹ (Spinner)³]©w[¨C¤@¦¸n§ì¨ú¦h¤Öµ§°O¿ý]¼Æ¥ØÈ¡C
¡Ð©ÎªÌ¡Ð
2.¥Î DBSETPROP( ) ¨ç¼Æ³]©w FetchSize ÄݩʡA«ü©w¸ê®Æ¶°©w¸q¤¤ªº¸ê®Æ§ì¨ú¼Æ¶q¡C
¡Ð©ÎªÌ¡Ð
3.¥Î CURSORSETPROP( ) ¨ç¼Æ³]©w FetchSize ÄݩʡA«ü©w¨Ï¥Î¤¤¸ê®Æ¶°ªº¼È¦s¸ê®Æªí®æªº¸ê®Æ§ì¨úªºµ§¼Æ¡C
¨Ò¦p¡A¤U¦Cµ{¦¡³]©w¸ê®Æ¶°©w¸q¡A¨C¦¸§ì¨ú 50 ¦C¨ì Customer_remote_view ¤¤¡G
? DBSETPROP('Customer_remote_view', 'View', 'FetchSize', 50)
©µ¿ð§ì¨úªþµùÄæ¦ì
¤@Ó³]p¦X²zªºÀ³¥Îµ{¦¡·|¸g±`¨Ï¥Î©µ¿ð§ì¨úªþµùÄæ¦ìªº§Þ³N¡A¨Ó¥[§Ö¤U¸ü§tªþµù©Î³q¥Î«¬ºAÄæ¦ìªºµ²ªG¶°ªº³t«×¡C©µ¿ðªþµùÄæ¦ìªº§ì¨ú·N¨ýµÛ¦b¤U¸ü¤@µ§¸ê®Æ°O¿ý®É¡AªþµùÄæ¦ì©M³q¥Î«¬ºAÄæ¦ìªº¤º®e¨Ã¤£¦Û°Ê¤U¸ü¡C¬Û¸û¤§¤U¡A¸ê®Æ¤¤ªº¨ä¥LÄæ¦ì¯à°÷«Ü§Ö¤U¸ü¡CªþµùÄæ¦ì©M³q¥Î«¬ºAÄæ¦ìªº¤º®e¥²¶·ª½¨ì¶}±Ò¸ÓªþµùÄæ¦ì©Î³q¥Î«¬ºAÄæ¦ì®É¤~¶i¦æ§ì¨ú¡C¥Ñ©óªþµùÄæ¦ì©M³q¥Î«¬ºAÄæ¦ì©¹©¹¥]§t¤j¶qªº¤º®e¡A¦]¦¹©µ¿ð§ì¨úªþµùÄæ¦ìªº§Þ³N´£¨Ñ¤F¤U¸ü¸ê®Æ°O¿ýªº³Ì§Ö¼Ò¦¡¡A³oºØ¤U¸ü¸ê®Æªº¼Ò¦¡¤D¬O¥u¦b¨Ï¥ÎªÌ»Ýn®É¡A¤~¤U¸üªþµùÄæ¦ì©Î³q¥Î«¬ºAÄæ¦ì¡C
¨Ò¦p¡A±zªºªí³æ¤¤¥i¯à¥]§t¤@ӥΥHÅã¥Ü¹Ï¤ùªº³q¥Î«¬ºAÄæ¦ì¡A¬°¤F¥[³t°õ¦æ¡A¥i¥H¨Ï¥Î©µ¿ð§ì¨úªþµùÄæ¦ìªº§Þ³N¡Aªý¤î¹ï¸Ó¹Ï¤ùªº¤U¸ü¡Aª½¨ì¨Ï¥ÎªÌ¿ï©w¤Fªí³æ¤¤ªº[¹wÄý]«ö¶s¡C¥Ñ[¹wÄý]«ö¶sªº¬ÛÃöµ{¦¡½X§ì¨ú¸Ó³q¥Î«¬ºAÄæ¦ì¡A¨Ã§â¥¦¦bªí³æ¤WÅã¥Ü¥X¨Ó¡C
Yn©µ¿ðªþµùÄæ¦ìªº§ì¨ú¡A¥i¦b¸ê®Æ¶°©Î¼È¦s¸ê®Æªí®æ¤¤¨Ï¥Î FetchMemo ÄݩʡCFetchMemo Äݩʫü©w¦b¤U¸ü¸ê®Æ°O¿ý®É¬O§_§ì¨úªþµùÄæ¦ì©Î³q¥Î«¬ºAÄæ¦ìªº¤º®e¡C¦¹Äݩʪº¹w³]Ȭ°¡§¯u¡¨(.T.)¡Aªí¥ÜªþµùÄæ¦ì©M³q¥Î«¬ºAÄæ¦ì·|¦Û°Ê¤U¸ü¡CY±zªº¸ê®Æ¤¤¥]§t¤j¶qªºªþµùÄæ¦ì©Î³q¥Î«¬ºAÄæ¦ìªº¸ê®Æ¡A±N FetchMemo Äݩʳ]©w¬°¡§°²¡¨(.F.) ±N·|´£°ªµ{¦¡°õ¦æªº³t«×¡C
ª`·N¡G
¸ê®Æ¶°¥²¶·¬O¥i§ó·sªº¡A¤~¯à¨Ï¥Î©µ¿ð§ì¨úªþµùÄæ¦ì³o¤@§Þ³N¡A¦]¬° Visual FoxPro ¦bÀ˯ÁªþµùÄæ¦ì©Î³q¥Î«¬ºAÄæ¦ì®É¨Ï¥Î¥Ñ§ó·sÄݩʫإߪº«O¯dÄæ¦ìȨӷj´M¦øªA¾¹¤Wªº¸ê®Æ°O¿ý¨Ó·½¡C¦³Ãö¨Ï¤@Ó¸ê®Æ¶°¬°¥i§ó·sªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¦p¦ó¡G¦b¸ê®Æ¶°¤¤§ó·s¸ê®Æ¡v¡C
¥i¥Î DBSETPROP( ) ¨ç¼Æ³]©w¸ê®Æ¶°ªº FetchMemo ÄݩʡA¥Î CURSORSETPROP( ) ¨ç¼Æ³]©w¼È¦s¸ê®Æªí®æªº FetchMemo ÄݩʡC
³Ì¨Î¤Æ¸ê®Æªº§ì¨ú
¥i¥H¥Î¤U±«ØÄ³ªº³s±µ³]©w©M¸ê®Æ¶°ÄÝ©Ê¨Ó³Ì¨Î¤Æ¸ê®Æªº§ì¨ú¡C¨ä¤¤¡A³s±µªº PacketSize Äݩʹï®Ä¯à¼vÅT³Ì¤j¡C·íµM¡A¤]¥i¥Î¦P¨B³s±µ³Ì¨Î¤Æ§ì¨ú¯S©Ê¡C
-----------------------------
ª«¥ó¡@ Äݩʡ@¡@¡@¡@ ³]©w
------ ------------ ---------
³s±µ¡@ PacketSize¡@ 4K ¨ì 12K
³s±µ¡@ Asynchronous .F.
¸ê®Æ¶° FetchSize¡@¡@³Ì¤j
-----------------------------
1.¬°¥]§t¸û¦h¸ê®Æªº¦æ³]©w¸û¤jÈ¡A»Ýn¦h¸Õ´X¦¸¤£¦PȤ~¯à§ä¨ì³Ì¨ÎÈ¡C
2.¦pªG¤£·Q¦b¦øªA¾¹¤W°õ¦æ®É¨ú®ø SQL ±Ôz¡A¨Ï¥Î¦P¨B³s±µ¥i¨Ï®Ä¯à´£°ª 50¢H¡C
3.FetchSize Äݩʪº§@¥Î¨Ì¿à©ó¤w§ì¨úªºµ²ªG¶°ªº¸ê®Æ°O¿ýªº¦h¤Ö¡C¦b¦P¨B¼Ò¦¡¤U¡A¥¦¹ï®Ä²vªº¼vÅT¤£¤j¡A©Ò¥H®Ú¾Ú»Ýn³z¹L«D¦P¨B³B²z¸ê®Æ¶°ªº²Ö¿n§ì¨ú¡A¬° SQL ³]©w FetchSize ÄݩʡC¦pªG´î¤p FetchSize ªºÈ¡A«h²Ö¿n§ì¨ú¸ê®Æ¶°®É¦^À³¯S©ÊÅãµÛ´£°ª¡C¦ý«o°§C¤F§ì¨úªº³t«×¡CY¼W¤j FetchSize ªºÈ¡A«h¸ê®Æ¶°ªº§ì¨ú¯S©Ê¼W±j¡C
¹ê»Ú®Ä²v«Ü¤jµ{«×¨Ì¿à©ó¨t²Î³]©w©MÀ³¥Îµ{¦¡ªº»Ý¨D¡C
¬ÛÃö¸ê°T
³Ì¨Î¤Æ³s±µ
¬d¸ß©M¸ê®Æ¶°¥[³t
³Ì¨Î¤Æ¥D±q¬[ºc®Ä¯à
ªí³æ¥[³t
´£°ª§ó·s©M§R°£ªº®Ä²v
¨Ï¥Î SQL pass-through §Þ³N¥[±jÀ³¥Îµ{¦¡
----------------------------------------------------------------------------------------------
ì¤å¡G
Speeding Up Data Retrieval
You can speed up data retrieval by managing the number of rows fetched during progressive fetching, controlling fetch size, and by using delayed Memo fetching.
You can also use the UseMemoSize view property to return character fields as memo fields and then turn FetchMemo off to enable your application to selectively fetch those character fields converted to memo fields.
Using Progressive Fetching
When you query a remote data source, Visual FoxPro retrieves complete rows of data and builds a Visual FoxPro cursor. To speed retrieval of remote data, Visual FoxPro employs progressive fetching of view cursors and cursors created asynchronously with SQL pass-through. Rather than requiring you or your application to wait while an entire data set is retrieved, Visual FoxPro executes a query and fetches only a small subset of the result set rows into the local cursor. The size of this subset is 100 rows by default.
Note:
Synchronous SQL pass-through statements don't employ progressive fetching. The entire result set requested by a SQLEXEC( ) statement is retrieved before control is returned to your application.
As Visual FoxPro retrieves additional rows of data, the local cursor contains increasingly more of the queried data. Since rows are retrieved at different times from the data source, the information in the rows isn't automatically current. If your connection is operating in asynchronous mode, Visual FoxPro returns control to you or your program as soon as it fetches the first subset of data. During idle time, Visual FoxPro performs a background fetch of the remaining rows in the queried data, one subset at a time, into the local cursor. This scenario allows you to use the already fetched data in the cursor without having to wait for the rest of the data.
Note:
Increasing the number of rows fetched improves performance, but decreases the responsiveness of the user interface. Decreasing the number of rows fetched has the inverse effect.
Fetching Data On Demand
You can disable progressive fetching and fetch rows only on an as-needed basis by using the FetchAsNeeded database and view cursor property. This can result in more efficient data retrieval for remote views or views retrieving extremely large results sets.
The FetchAsNeeded property is set by default to false (.F.), which means that progressive fetching is employed by default. When you set the FetchAsNeeded property to true (.T.), rows are fetched only when needed. When the FetchAsNeeded property is set to true, you cannot perform an update until you either complete the fetch, call the SQLCANCEL( ) function on the current connection handle, or close the view.
If you want to see the impact of using the FetchAsNeeded property, set the FetchAsNeeded property on a view retrieving a large result set to .T. and then open a browse window on the view and scroll down. The status bar is updated to show the number of rows retrieved as you move through the browse window.
Controlling Cursor Fetching
If you want to fetch the entire cursor, you can issue the GOTO BOTTOM command, or any command requiring access to the entire data set.
Tip:
While you can use the GOTO BOTTOM command to fetch the entire cursor, it's often more efficient to build a parameterized view that fetches only a single row at a time and requeries as the user changes records. For more information on building high-performance views, see How to: Optimize View Performance.
Programs don't provide idle loop processing. To fetch view cursors programmatically, use the GO nRecordNumber or GOTO BOTTOM commands. To fetch cursors created with SQL pass-through in asynchronous mode, call the SQL pass-through asynchronous function once for each row subset.
Canceling a SQLEXEC( ) Statement
You can use the SQLCANCEL( ) function to cancel a SQLEXEC( ) statement or a view at any time. However, if the server has completed building the remote result set and Visual FoxPro has begun fetching the remote result set into a local cursor, the SQLCANCEL( ) function cancels the SQLEXEC( ) statement and leaves the local cursor. If you want to delete the local cursor you can issue the USE command, which closes the cursor and cancels the fetch.
The USE command will not cancel a SQLEXEC( )statement if the statement hasn't yet created a local cursor. To determine whether Visual FoxPro has created a local cursor, you can call the USED( ) function.
Controlling Fetch Size
You control the number of rows fetched at one time by your application from a remote server by setting the FetchSize property on your view. The FetchSize property specifies how many records are fetched into the local cursor from the remote server at one time, through progressive fetching or asynchronous SQL pass-through calls. The default value is 100 rows.
To control the number of records fetched at one time into a view
1.In the View Designer, choose Advanced Options from the Query menu. In the Data Fetching area of the Advanced Options dialog box, use the spinner to set a value for Number of Records to Fetch at a time.
-or-
2.Set the FetchSize property with the DBSETPROP( ) function to set the view definition's fetch size.
-or-
3.Set the FetchSize property with the CURSORSETPROP( ) function to set the active view cursor's fetch size.
For example, the following code sets the view definition to progressively fetch 50 rows at a time into Customer_remote_view:
? DBSETPROP('Customer_remote_view', 'View', 'FetchSize', 50)
Using Delayed Memo Fetching
A well-designed application frequently uses delayed Memo fetching to speed downloading of result sets that contain Memo or General fields. Delayed Memo fetching means that Memo and General field contents are not automatically downloaded when you download a result set. Instead, the rest of the fields in the row are quickly downloaded, and Memo and General field contents aren't fetched until you request them by opening the Memo or General field. Delayed Memo fetching provides the fastest downloading of rows, and allows Memo or General field contents, which can be quite large, to be fetched only if needed by the user.
For example, your form might include a General field that displays a picture. To speed performance, you can use delayed Memo fetching to prevent downloading of the picture until the user chooses a "Preview" button on your form. The code behind the "Preview" button then fetches the General field and displays it on the form.
To control delayed Memo fetching, you use the FetchMemo property on your view or cursor. The FetchMemo property specifies whether to fetch the contents of the Memo or General fields when the row is downloaded. The default value is true (.T.), which means that Memo and General fields are downloaded automatically. If your data contains large amounts of Memo or General field data, you might notice increased performance when you set the FetchMemo property to false (.F.).
Note:
The view must be updatable to allow delayed Memo fetching to work, because Visual FoxPro uses the key field values established by the update properties to locate the source row on the server when it retrieves the Memo or General field. For information on making a view updatable, see How to: Update Data in a View.
Use DBSETPROP( ) to set the FetchMemo property on a view, and CURSORSETPROP( ) to set the FetchMemo property on a cursor.
Optimizing Data Fetching Performance
You can use the following recommendations for setting connection and view properties to optimize data fetching. The PacketSize property on your connection has the greatest influence on performance. Also, you can optimize fetch performance using synchronous connections.
---------------------------------
Object¡@¡@ Property¡@¡@ Setting
---------- ------------ ---------
Connection PacketSize¡@ 4K to 12K
Connection Asynchronous .F.
View¡@¡@¡@ FetchSize¡@¡@maximum
---------------------------------
1. Set a higher value for rows containing more data; you should experiment to find the best value.
2. Use synchronous connections to increase performance up to 50%, unless you want to be able to cancel SQL statements while executing on the server.
3. The effect of FetchSize is highly dependent on the record size of the fetched result set. In synchronous mode, it does not significantly impact performance, so set it as needed for SQL pass-through asynchronous processing view progressive fetching. FetchSize, if reduced, provides significantly better responsiveness while progressively fetching a view, but slows down the fetch speed. If increased, it increases view fetch performance.
Actual performance depends greatly on your system configuration and application requirements.
See Also
Optimizing Connections
Query and View Acceleration
Optimizing Client/Server Performance
Form Acceleration
Performance Improvement on Updates and Deletes
Enhancing Applications Using SQL Pass-Through Technology _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 73 ¼Ó
|
µoªí©ó: ¬P´Á¥| ¤E¤ë 16, 2004 10:53 pm ¤å³¹¥DÃD: |
|
|
¬d¸ß©M¸ê®Æ¶°¥[³t
¥i¥H³z¹L¼W¥[¯Á¤Þ¡B³Ì¨Î¤Æ¥»¦a©M¶Ç¿é³B²z¡B³Ì¨Î¤Æ°Ñ¼Æ¹Bºâ¦¡¨Ó´£°ª¬d¸ß©M¸ê®Æ¶°ªº®Ä²v¡C
¦b»·ºÝ¸ê®Æªí®æ¤¤¼W¥[¯Á¤Þ
»·ºÝ¯Á¤Þ¥i¨Ï¬d¸ß³t«×ÅãµÛ´£°ª¡A¹ï©ó¦h¸ê®Æªí®æ¬d¸ß¡A¦pªG¦b¦UÓ¸ê®Æªí®æ¤¤¥H³s±µÄæ¦ì§@¬°¯Á¤Þ¡A³t«×·|§ó§Ö¡C¦b¬d¸ßªº WHERE ¤l¥y¤¤ªºÄæ¦ì¤W«Ø¥ß¯Á¤Þ¡A¤]¥i´£°ª®Ä²v¡C
ÂO¶°¯Á¤Þ¥i´£¨Ñ³Ì¨Î®Ä¯à¡C¦b SQL Server ¤W¡A¨CÓ¸ê®Æªí®æ¥i¦³¤@ÓÂO¶°¯Á¤Þ¡C[SQL Server ¤W²¾ºëÆF]¹ï©ó¨º¨Ç¦b Visual FoxPro ¤¤¨ã¦³¥DÁäȪº¸ê®Æªí®æ¡A·|¦Û°Ê«Ø¥ßÂO¶°¯Á¤Þ¡C
´£¥Ü¡G
¾¨ºÞ¦b³Q¬d¸ßªº¸ê®Æªí®æªºÄæ¦ì¤W«Ø¥ß¯Á¤Þ¥i¥[³t³B²zµ{§Ç¡A¦ý¦bµ²ªG¶°¤W«Ø¥ß¯Á¤Þ«o·|°§C°õ¦æ³t«×¡C¤p¤ß¨Ï¥Îµ²ªG¶°¤Wªº¯Á¤Þ¡C
³Ì¨Î¤Æ¥»¦a©M»·ºÝ¦øªA¾¹³B²z
¦pªG¬Jn³B²z¥»¦a¸ê®Æ¤Sn³B²z»·ºÝ¸ê®Æ¡A¨º»ò¥i¥ý«Ø¥ß¤@»·ºÝ¸ê®Æ¶°¡A§â©Ò¦³»·ºÝ¸ê®Æ²Õ¦X¨ì³æ¿W¤@Ó¸ê®Æ¶°¤¤¡CµM«á¦A§â»·ºÝ¸ê®Æ¶°©M¥»¦a¸ê®Æ¤@°_¥[¤J¨ì¤@Ó¥»¦a¸ê®Æ¶°¤¤¡C¥Ñ©ó Visual FoxPro ¦b³s±µ©M¹LÂo²Õ¦X¸ê®Æ¶°«e¡A¥þ³¡§ì¨ú¨âÓ¸ê®Æ¶°¡A©Ò¥H¨î¸ê®Æ¶°µ²ªG¶°ªº¸ê®Æªº¦h¤Ö¬O«Ü«nªº¡C
±N»·ºÝ¸ê®Æ¶°ªºµ²ªG¶°¨î¦bÀ³¥Îµ{¦¡©Ò»Ýªº³Ì¤p½d³ò¤º¡A¥i´£°ª»·ºÝ³B²zªº³t«×¡C ¦bÀ˯Á¤Ö¶q¸ê®Æ²¾¤J»·ºÝµ²ªG¶°ªº¦P®É¡A¤]´N´î¤Ö¤F¤U¸ü»·ºÝ¸ê®Æ¨ì¥»¦a¬d¸ß©Î¸ê®Æ¶°ªº¼È¦s¸ê®Æªí®æªº®É¶¡¡C
³Ì¨Î¤Æ±a¦³°Ñ¼Æªº¸ê®Æ¶°
¦b¹ï¤@Ó¶}±Òªº¡B±a¦³°Ñ¼Æªº¸ê®Æ¶°¡A¶i¦æ REQUERY( ) °Ê§@®É¡A¦b°õ¦æ«e½s¿è¸ê®Æ¶°¡A¥i´£°ª¸ê®ÆÀ˯Á³t«×¡Cn¹w¥ý½s¿è©Î[·Ç³Æ]¸ê®Æ¶°¡A¥i±N¸ê®Æ¶°¤¤ Prepared Äݩʳ]¬°¡§¯u¡¨(.T.)¡C
³Ì¨Î¤Æ°Ñ¼Æ¹Bºâ¦¡
¸ê®Æ¶°°Ñ¼Æ©M SQL pass-through °Ñ¼ÆÄÝ©ó Visual FoxPro ¹Bºâ¦¡¡A¦b°õ¦æµ¹»·ºÝ¦øªA¾¹«e¡Aº¥ýn¦b Visual FoxPro ¤¤¶i¦æ¨DÈ¡C¹Bºâ¦¡ªº¨DȮɶ¡«Ü«n¡A¦]¬°¥¦¥i¯à·|©µªø¬d¸ßªº°õ¦æ®É¶¡¡C
¬ÛÃö¸ê°T
¥[³t¸ê®ÆÀ˯Á
ªí³æ¥[³t
³Ì¨Î¤Æ¥D±q¬[ºc®Ä¯à
´£°ª§ó·s©M§R°£ªº®Ä²v
¨Ï¥Î SQL pass-through §Þ³N¥[±jÀ³¥Îµ{¦¡
----------------------------------------------------------------------------------------------
ì¤å¡G
Query and View Acceleration
You can improve query and view performance by adding indexes, optimizing local and remote processing, and optimizing parameter expressions.
Adding Indexes to Remote Tables
Remote indexes can make queries significantly faster. Multiple-table queries are faster if the tables are indexed on the joining fields. Having indexes on fields that are included in a query's WHERE clause can also improve performance.
Clustered indexes provide the best performance. On SQL Server, each table can have one clustered index. The SQL Server Upsizing Wizard automatically creates clustered indexes on tables that had a primary key in Visual FoxPro.
Tip:
While indexes on table fields used in queries can speed processing, indexes on result sets can slow performance. Use indexes on result sets with care.
Optimizing Local and Remote Processing
If you need to process a combination of local and remote data, create a remote view that combines all remote data in a single view. You can then join the remote view with the local data in a local view. Because Visual FoxPro fetches both views completely before joining and filtering the combined view, it's important to limit the size of the view result set.
You gain speed in remote processing by limiting the remote view result set to the minimum amount of data needed by your application. When you retrieve less data into a remote result set, you minimize the time required to download remote data into your local query or view cursor.
Optimizing Parameterized Views
You can speed data retrieval during REQUERY( ) operations on an open, parameterized view by compiling the view before it's executed. To precompile or "prepare" a view, set the Prepared property on the view to true (.T.).
Optimizing Parameter Expressions
View and SQL pass-through parameters are Visual FoxPro expressions and are evaluated in Visual FoxPro before being sent to the remote server. Evaluation time for the expression is important, because it lengthens the query execution time.
See Also
Speeding Up Data Retrieval
Form Acceleration
Optimizing Client/Server Performance
Performance Improvement on Updates and Deletes
Enhancing Applications Using SQL Pass-Through Technology _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 74 ¼Ó
|
µoªí©ó: ¬P´Á¤é ¤E¤ë 19, 2004 12:01 am ¤å³¹¥DÃD: |
|
|
ªí³æ¥[³t
¦b³]p¤@Ó¥Dn®Ú¾Ú¦øªA¾¹¸ê®Æªºªí³æ®É¡Aµy§@³B²z«K¥iÀò±o³Ì¨Îªº®Ä²v¡C½T©w©Ò»Ýªº¸ê®Æ©M¥\¯à¡A©µ¿ð¦V¦øªA¾¹½Ð¨D³o¨Ç¸ê®Æ©M¥\¯à¡A°£«D¨Ï¥ÎªÌ°µ¥X¤F½Ð¨D¡C¦V¦øªA¾¹½Ð¨D¸ê®Æ»Ýn³B²z®É¶¡¡A¨Ã¥B·|³y¦¨ºô¸ô¾ÖÀ½¡C±Ä¥Î¤U¦C¤èªk¥i¥H´î¤Ö½Ð¨Dªº¸ê®Æ¶q¡G
¡E½Ð¨D¾¨¥i¯à¤Öªº¸ê®Æ°O¿ý¡C¨Ò¦p¡A¨Ï¥Î¤@Ó¹LÂo±ø¥ó©Î¬d¸ß¨Ó¨î¸ê®Æ°O¿ý¶°¦Xªº¦h¤Ö¡C¥²¶·½T©w¦øªA¾¹¯à°÷³B²z±z©Ò¨Ï¥Îªº¨î±ø¥ó¡C
¡E¦bªí³æ¤Uªº¸ê®Æ¶°¤¤¡AºÉ¶q¤Ö¥Î»·ºÝÄæ¦ì¡C
¡E¦bªí³æ¶°¤¤ºÉ¶q¤Ö¥Îªí³æ¦s¨ú»·ºÝ¸ê®Æ¶°¡C¦b¶}±Ò¤@Óªí³æ¶°®É¡Aªí³æ¶°¤¤ªº©Ò¦³ªí³æ³£³Q¶}±Ò¡A¨Ã¥Î¾A·íªº¸ê®Æ¶i¦æ¶ñº¡¡C³z¹L´î¤Öªí³æ¶°¤¤ªºªí³æ¼Æ¥Ø¡A¤×¨ä¬O¨º¨Ç¥²¶·³s±µ¨ì¦øªA¾¹¤W¨Ã¥BÀ˯Á»·ºÝ¸ê®Æªºªí³æ¡A¥i¥H´î¤Öªí³æ¶°ªº¸ü¤J®É¶¡¡C
¡E¾¨¶q¤Ö¥Î¦s¨ú»·ºÝ¸ê®Æªº³s±µ«¬±±¨îª«¥ó¡C¨CÓ»P»·ºÝ¸ê®Æªí®æ©Î¬d¸ß¬Û³s±µªº¤U©Ô¦¡¦C¥Ü¤è¶ô¡B¦C¥Ü¤è¶ô©M¦hµ§½s¿è±±¨î¶µ¦bªí³æ¶}±Ò®É¡A³£·|¤À§O¦V¦øªA¾¹°õ¦æ¤@Ó¬d¸ß¡CÁ×§K¥]§tÁ`pªº±±¨î¶µ¡A©ÎªÌ¨ã¦³«Ü¦h¸ê®Æ°O¿ý¨Ó·½ªº¦C¥Ü¤è¶ô©M¤U©Ô¦¡¦C¥Ü¤è¶ô¥i¥H´£¤É®Ä²v¡C
¡EY¨Ï¥ÎªÌ»Ýn¤ñ¸û¦hÓ¸ê®Æ¶°¦X¡A¥i¦Ò¼{§â¦øªA¾¹¶Ç¦^ªº¸ê®ÆÀx¦s¦b¥»¦a¼È¦s¸ê®Æªí®æ¤¤¡C¨Ã´£¨Ñ¤@Óªí³æ¡AÅý¨Ï¥ÎªÌ¥i¥H¨Ï¥Î¥ý«eÀx¦sªº¸ê®Æ¡A©ÎªÌ°õ¦æ¤@Ó·s¬d¸ß¡C
±N·j´M¥Îªº¸ê®Æªí®æÀx¦s¦b¥»¦a¹q¸£¤¤
«Ü¦h±¡ªp¤U¡A¤@ÓÀ³¥Îµ{¦¡¤¤¥]§t¦³´XÓªí³æ¡A³£¨Ï¥Î¬Û¦Pªº»·ºÝ¸ê®Æªí®æ¡CY¸ê®Æªí®æ¤¤¸ê®Æ¨Ã¤£ÀWÁcÅܧó¡A¥i¥Î¤U¦C§Þ³N¤¤ªº¤@ºØ¨Ó¥[³tªí³æªº¸ü¤J¨Ã´î¤Ö¦øªA¾¹ªºt¾á¡G
¡E§â±q¤£ÅܰʦӥB¤£¤Ó¤jªº¸ê®Æªí®æ (¨Ò¦p¦s©ñ¬Ù©Î¦a°Ï¦WºÙªº¸ê®Æªí®æ) Àx¦s¨ì¥»¦a Visual FoxPro À³¥Îµ{¦¡¸ê®Æ®w¤¤¡CY¸Ó¸ê®Æªí®æ»Ýn¦b¬d¸ß©Î¸ê®Æ¶°¤¤»P»·ºÝ¸ê®Æªí®æ³s±µ¡A¨º»ò¥²¶·¦b¦øªA¾¹¤WÀx¦s¤@ӳƥ÷¡AÁ×§K³s±µ¥»¦a©M»·ºÝ¸ê®Æ¡C
¡E§â«Ü¤ÖÅܧó (¤ñ¦p¦s¦³¦U¤½¥q¿ì¤½¦ì§}ªº¸ê®Æªí®æ) ªº¸ê®Æªí®æÀx¦s¦b¦øªA¾¹©M¥»¦aÀ³¥Îµ{¦¡¸ê®Æ®w¤¤¡C¬°¨Ï¥ÎªÌ´£¨Ñ¤@Ó¤èªk¡A¦b¸ê®Æ½T¹êÅܧó®É¥i¥H¤U¸ü¸Ó¸ê®Æªí®æ¡C
¡E§â¸g±`¦ý¤£¬O¨C¤Ñ³£ÅÜ§óªº¸ê®Æªí®æ (¤ñ¦p¤@Ó¤p¤½¥q©Î³¡¥÷ªº¹µû²M³æ) Àx¦s¦b¦øªA¾¹©M¥»¦aÀ³¥Îµ{¦¡¸ê®Æ®w¤¤¡CÀ³¥Îµ{¦¡¥²¶·¦b¨C¦¸±Ò°Ê®É¦Û°Ê«·s¾ã²z¸Ó¥»¦aªº¸ê®Æªí®æ¡C³oºØ¤èªk·|¦bÀ³¥Îµ{¦¡±Ò°Ê®É®ø¯ÓÃB¥~ªº®É¶¡¡A¦ý¦b°õ¦æ®É´Á¥i¥H¥[³t¬d¸ß¡C
®Ú¾Ún¨DÅã¥ÜÄæ¦ì
¥u¦³¦b¨Ï¥ÎªÌ½Ð¨Dªº®ÉÔ¡A¤~Åã¥Ü¨º¨Ç»Ýnªá«Üªø®É¶¡±q¦øªA¾¹À˯Á¸ê®ÆªºÄæ¦ì¡A¤ñ¦pªþµù©Î³q¥Î«¬ºAÄæ¦ì¡C ¥i¥Î¤U¦C§Þ³N¡G
¡EY±zªºªí³æ®Ú¾Ú¤@Ó¸ê®Æ¶°¡A¥i§âªþµù©Î³q¥Î«¬ºAÄæ¦ì©ñ¨ì¥t¤@Óªí³æ¤¤¡C¦bªí³æ¤¤·s¼W¤@Ó¼ÐÅÒ¡A¤ñ¦p[À˵øªþµù©M¹Ï¤ù½Ð½¶]¡A¥H³qª¾¨Ï¥ÎªÌ¦p¦óÅã¥Ü¸Ó°T®§¡C§â¸ê®Æ¶°©Î¼È¦s¸ê®Æªí®æªº FetchMemo Äݩʳ]©w¬°¡§°²¡¨(.F.)¡A©Ò¥Hª½¨ìÅã¥Ü®É¡AVisual FoxPro ¤~À˯Áªþµù©Î³q¥Î«¬ºAÄæ¦ì¡C
¡E§â»Pªþµù©Î³q¥Î«¬ºAÄæ¦ì¬ÛÃöªº±±¨î¶µªº Visible Äݩʳ]©w¬°¡§°²¡¨(.F.)¡C¦Ó±Mªù¼W¥[¤@Ó¶}Ãö«ö¶s©Î«ü¥O«ö¶s¡A¥i¥H§â¸ÓÄݩʳ]©w¬°¡§¯u¡¨(.T.)¡A¥H¨Ï¨Ï¥ÎªÌ¥i¥H¿ï©wÀ˵ø³o¨Ç±±¨î¶µªº¤º®e¡C
¡E§â³Ì«nªºÄæ¦ìÅã¥Ü¦b¤@Ó¥Dªí³æ¤W¡A¦P®É´£¨Ñ¤@Ó¼ÐÃD¬°[¨ä¥L°T®§]ªº«ö¶s¡A¥Î¥¦¶}±Ò¥t¤@Ó¥]§t¨ä¥LÄæ¦ìªºªí³æ¡A¦¹ªí³æ®Ú¾Ú¤@Ó¥H¥Dªí³æ¤Wªº¥DÁäȬ°°Ñ¼Æªº¸ê®Æ¶°¡C¨Ò¦p¡A°²©w±zªº¥Dªí³æ®Ú¾Ú¤@Ó¸ê®Æ¶°¦Ó«Ø¥ß¡A¸Ó¸ê®Æ¶°ªº SQL SELECT ±Ôz¦p¤U¡G
SELECT customer_id, company_name, address, city, region, country
FROM customers
¦b³oÓªí³æ¤¤¡Acust_id »P thisform.txtCust_id ³s±µ¡C³o¼Ë¡A±z¥i¥H§â²Ä¤GÓªí³æ®Ú¾Ú¤U±ªº¸ê®Æ¶°«Ø¥ß¡A¥u¦b¨Ï¥ÎªÌ¿ï©w[¨ä¥L°T®§]«ö¶s®É¡A¤~¨Ï¥Î¦¹¸ê®Æ¶°¡G
SELECT orders.order_id, orders.order_date, orders.shipper_id, ;
employee.emp_id, employee.last_name, employee.first_name ;
FROM orders, employee ;
WHERE orders.cust_id = ?THISFORM.txtCust_id ;
AND orders.employee_id = employees.emp_id
¬ÛÃö¸ê°T
¬d¸ß©M¸ê®Æ¶°¥[³t
´£°ª§ó·s©M§R°£ªº®Ä²v
³Ì¨Î¤Æ¥D±q¬[ºc®Ä¯à
¨Ï¥Î SQL pass-through §Þ³N¥[±jÀ³¥Îµ{¦¡
----------------------------------------------------------------------------------------------
ì¤å¡G
Form Acceleration
When you design a form based primarily on server data, take a minimalist approach for the best performance. Determine the data and functionality needed, and delay asking the server for this data and functionality until requested by the user. Requesting data from the server uses processing time and creates network traffic. To request less data in your forms:
¡ERequest as few records as possible. For example, use a filter or query to limit the size of the record set. Make sure that the server can process any restrictions you use.
¡EUse as few remote fields as possible in views underlying your forms.
¡EUse as few forms that access remote views as possible in your form set. When you open a form set, all the forms in the form set are opened and populated with data as applicable. By limiting the number of forms in your form set, especially those that must connect to a server and retrieve remote data, you shorten the time the form set takes to load.
¡EUse fewer bound controls that access remote data. Each combo box, list box, and grid that's bound to a remote table or query requires a separate query to the server when the form is opened. Avoid controls containing totals, or list boxes and combo boxes that have large row sources.
¡EIf users need to compare multiple sets of data, consider storing the data returned by the server in temporary local tables. Provide a form in which the user can use the previously stored data, or execute a new query.
Storing Lookup Tables Locally
Often, an application contains several forms that use the same remote table. If the data in the table doesn't change frequently, you can speed up form loading and reduce server load using one of the following techniques:
¡EStore tables that never change and aren't too large (such as the names and abbreviations of the regions or states in your country) in the local Visual FoxPro application database. If the table is joined in queries or views with remote tables, you should also keep a copy of it on the server to avoid joining local and remote data.
¡EStore tables that rarely change (such as a list of company buildings) both on the server and in the local application database. Provide a way for the user to download the table when the data does change.
¡EStore tables that change occasionally but not daily (such as a list of employees in a small company or department) both on the server and in the local application database. Your application should automatically refresh the local version each time it starts. This method uses extra time when the application starts, but speeds up queries when the application is running.
Displaying Fields Only On Request
Display fields that take a long time to retrieve data from the server, such as Memo or General fields, only when requested. You can use the following techniques:
¡EIf your form is based on a view, place Memo or General fields off screen on another form page. Add a label to the form, such as "Page down to see notes and pictures," that informs the user how to display the information. Set the FetchMemo property on the view or cursor to false (.F.), so that Visual FoxPro doesn't retrieve Memo or General fields until they're displayed on screen.
¡ESet the Visible property to false (.F.) for controls bound to Memo or General fields. Add a toggle button or command button that sets the property to true (.T.), so that the user can choose to view the contents of these controls.
¡EDisplay the most important fields on a main form, and provide a button labeled "More Information" that opens another form containing other fields. Base the second form on a view that's parameterized by the primary key field on the main form. For example, suppose you have a main form based on a view whose SQL SELECT statement includes the following code:
SELECT customer_id, company_name, address, city, region, country
FROM customers
In the preceding form, cust_id is bound to thisform.txtCust_id. You could base the second form on the following view, which is used only when the user chooses the "More Information" button:
SELECT orders.order_id, orders.order_date, orders.shipper_id, ;
employee.emp_id, employee.last_name, employee.first_name ;
FROM orders, employee ;
WHERE orders.cust_id = ?THISFORM.txtCust_id ;
AND orders.employee_id = employees.emp_id
See Also
Query and View Acceleration
Performance Improvement on Updates and Deletes
Optimizing Client/Server Performance
Enhancing Applications Using SQL Pass-Through Technology _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
¦¶¨|¿³
µù¥U®É¶¡: 2003-08-25 ¤å³¹: 661 ¨Ó¦Û: ¥x¤¤¥«¤j¨½°Ï
²Ä 75 ¼Ó
|
µoªí©ó: ¬P´Á¤é ¤E¤ë 19, 2004 12:02 am ¤å³¹¥DÃD: |
|
|
´£°ª§ó·s©M§R°£ªº®Ä²v
³z¹L¥H¤U¼Ò¦¡¥[³t§ó·s±Ôz©M§R°£±Ôzªº°õ¦æ¡G
¡E¦V»·ºÝ¸ê®Æªí®æ·s¼W®É¶¡ÂW°OÄæ¦ì¡C
¡E¨Ï¥Î CompareMemo ÄݩʡC
¡E¨Ï¥Î¤â°Ê²§°Ê¥æ©ö¼Ò¦¡¡C
¡E¦b»·ºÝ¦øªA¾¹¤W¨Ï¥ÎÀx¦s¦¡µ{§Ç¡C
¡E§å¦¸³B²z§ó·s¡C
·s¼W®É¶¡ÂW°OÄæ¦ì
¦b¤@Ó¥]§t³\¦hÄæ¦ìªº»·ºÝ¸ê®Æªí®æ¤¤§ó·s¡B´¡¤J©Î²¾°£¸ê®Æ®É¡A¥i¥H¦b¸Ó»·ºÝ¸ê®Æªí®æ¤¤·s¼W¤@Ӯɶ¡ÂW°OÄæ¦ì¡A³o¼Ë¥i¥H´£°ª®Ä¯à¡A±ø¥ó¬O±zªº¦øªA¾¹¥²¶·´£¨Ñ®É¶¡ÂW°O«¬ºAªºÄæ¦ì¡C
¦pªG»·ºÝ¸ê®Æªí®æ¨ã¦³®É¶¡ÂW°OÄæ¦ì¡A±z´N¥i¥H¥Î Visual FoxPro SQL WhereType §ó·s¿ï¶µ DB_KEYANDTIMESTAMP¡C¨Ï¥Î³oÓ¿ï¶µ¥i¥H¸`¬Ù³B²z®É¶¡¡A¦]¬°³o®É Visual FoxPro ¥u¨Ï¥Î¸ê®Æ¶°¤¤ªºÁäÈÄæ¦ì©M®É¶¡ÂW°OÄæ¦ì»P»·ºÝ¸ê®Æªí®æªº¬Û¹ïÀ³Äæ¦ì¶i¦æ¤ñ¸û¡AÀË´ú§ó·s½Ä¬ð¡C¥Ñ©ó¥u¤ñ¸û³o¨â³¡¥÷Äæ¦ì¡A¦Ó¤£¬O©Ò¦³¥i§ó·sªºÄæ¦ì (DB_KEYANDUPDATABLE ¿ï¶µ)¡A©ÎªÌ©Ò¦³¤w×§ïªºÄæ¦ì (DB_KEYANDMODIFIED ¿ï¶µ)¡A¦]¦Ó´î¤Ö¤F§ó·s»·ºÝ¸ê®Æªº®É¶¡¡C¦³Ãö WhereType ¿ï¶µªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¨Ï¥Î¸ê®Æ¶°ºÞ²z§ó·s¡v¡C
ª`·N¡G
¥u¦³¦b»·ºÝ¸ê®Æªí®æ¤¤¥]§t®É¶¡ÂW°OÄæ¦ì®É¡ADB_KEYANDTIMESTAMP ¿ï¶µ¤~¤ñ¸ûÁäÈÄæ¦ì©M®É¶¡ÂW°OÄæ¦ì¡C¦pªG¹ï¤£¥]§t®É¶¡ÂW°OÄæ¦ìªº»·ºÝ¸ê®Æªí®æ¨Ï¥Î DB_KEYANDTIMESTAMP ¿ï¶µ¡AVisual FoxPro ±N¥u¤ñ¸ûÁäÈÄæ¦ì¡C
¦b¾A·íªº®ÉÔ¡A[¤W²¾ºëÆF]¯à¦Û°Ê¦a¦b¶×¥Xªº¸ê®Æªí®æ¤¤¥[¤W®É¶¡ÂW°OÄæ¦ì¡C¦³Ãöªº¸Ô²Ó¤º®e¡A½Ð°Ñ¾\¡u¤W²¾ Visual FoxPro ¸ê®Æ®w¡v¤¤ªº[·s¼W®É¶¡ÂW°OÄæ¦ì]³¡¥÷¡C
´£¥Ü¡G
Y§ïÅܤF¤@Ó¸ê®Æ¶°ªº°ò¥»¸ê®Æªí®æªºµ²ºc¡A¤ñ¦p¼W¥[¤F¤@Ӯɶ¡ÂW°OÄæ¦ì¡A´N¥²¶·«·s«Ø¥ß¸ê®Æ¶°¡C¤@Ó¸ê®Æ¶°©w¸q¤¤ªºÄæ¦ìÀx¦s¦b¸ê®Æ®w¤¤¡A¦b¸ê®Æ¶°¨Ï¥Î¥H«á¡A¥ô¦ó¹ï¸Ó¸ê®Æ¶°°ò¥»¸ê®Æªí®æªºÅܧóµLªk¦b¸ê®Æ¶°©w¸q¤¤¤ÏÀ³¥X¨Ó¡A°£«D«·s«Ø¥ß¸Ó¸ê®Æ¶°¡C
¦b Update WHERE ¤l¥y¤¤±Æ°£ªþµùÄæ¦ì
¦b¥ô¦ó®ÉÔ¡A³£¥i³z¹L¸T¤îªþµùÄæ¦ì (ªþµù¡B¤@¯ë©Î¹Ï¤ùÃþÄæ¦ì) »P¥¦Ì¬Û¹ïªº°ò¥»¸ê®Æªí®æ¤ñ¸û¡A¨Ó´£°ª§ó·s³t«×¡C¹w³]±¡ªp¤U¡ACompareMemo Äݩʳ]©w¬°¡§¯u¡¨(.T.)¡ASQL WHERE ¤l¥y¦Û°Ê¥]§t¦bªþµùÄæ¦ì¤¤¡A¸Ó¤l¥y¬O¦b«Ø¥ß§ó·s¸ê®Æ¶°®É²£¥Íªº¡C¥i±N CompareMemo Äݩʳ]©w¬°¡§°²¡¨(.F.)¡A³o¼Ë¦b SQL WHERE ¤l¥y´N¤£¥]§tªþµùÄæ¦ì¤F¡C
¨Ï¥Î²§°Ê¥æ©ö
¬°¤F¹F¨ì³Ì¨Î®Ä¯à¡A¥i¥Î¤â°Ê²§°Ê¥æ©ö¼Ò¦¡¡A¦Û¤vºÞ²z²§°Ê¥æ©ö¡C¤â°Ê²§°Ê¥æ©ö¼Ò¦¡Åý±z¯à°÷±±¨î¦ó®É§¹¦¨¤@²Õ²§°Ê¥æ©ö¡A±q¦Ó¨Ï±o¦øªA¾¹¥i¥H§Ö³t¦a³B²z§ó¦h±Ôz¡C
¦Û°Ê²§°Ê¥æ©ö¼Ò¦¡®ø¯Óªº®É¶¡n¦h¤@¨Ç¡A¦]¬°¦b¹w³]±¡ªp¤U¡A¨C¤@±ø§ó·s±Ôz³£ wrapper ¦b¤@Ó¿W¥ßªº²§°Ê¥æ©ö·í¤¤¡C³oºØ¤èªk¬°³æ±ø§ó·s±Ôz´£¨Ñ¤F³Ì¤jµ{«×ªº±±¨î¤â¬q¡A¦ý¦P®É¤]¼W¥[¤Ft¾á¡C
¦b¦Û°Ê²§°Ê¥æ©ö¼Ò¦¡¤U¡A³z¹L¼W¥[¸ê®Æ¶°©Î¼È¦s¸ê®Æªí®æªº BatchUpdateCount Äݩʪº³]©w¡A¥i¥H´£°ª®Ä¯à¡C·í¨Ï¥Î BatchUpdateCount ³]©w¤@Ó¤jªºÈ®É¡A¦h±ø§ó·s±Ôz¥i¥H§å¦¸³B²z¬°¤@±ø§ó·s±Ôz¡AµM«á wrapper ¦b¤@Ó³æ¿Wªº²§°Ê¥æ©ö¤¤¡C¦ý¬O¡A¦pªG§å¦¸³B²z¤¤¦³¥ô¦ó±Ôz¥¢±Ñ¡A¾ãӧ妸³B²z±N³Q¦V«á¦^´_¡C
´£¥Ü¡G
¦³¨Ç¦øªA¾¹¤£¤ä´© BatchUpdateCount ÄݩʡF¦]¦¹¦bÀ³¥Îµ{¦¡¨Ï¥Î¥¦¤§«e¡A»Ýn¹ï¨CÓ»·ºÝ¦øªA¾¹°µ´ú¸Õ¡C
¨Ï¥Î¦øªA¾¹Àx¦s¦¡µ{§Ç
¥i¥H¦b¦øªA¾¹¤W«Ø¥ßÀx¦s¦¡µ{§Ç¡AÀx¦s¦¡µ{§Ç¥Ñ©ó¶i¦æ¹L¹w¥ý½sĶ¡A¦]¦Ó¥i³t¦¨°õ¦æ¡C¥i¥H°õ¦æÀx¦s¦¡µ{§Ç¡B¥Î SQL ¶Ç»¼°õ¦æ°Ñ¼Æ¡A¨Ã§âÀ³¥Îµ{¦¡¤¤ªº¬YºØ³B²z¤u§@¾A·í¦aÂಾ¨ì¦øªA¾¹¤W¡C
¨Ò¦p¡A±z¤]³\§Æ±æ¦b¥»¦a·J¾ã¨Ï¥ÎªÌªº¿é¤J°T®§¡AµM«á°õ¦æ¤@Ó SQL ¶Ç»¼¬d¸ß¨Ó°õ¦æ¸ê®Æµ¹¦øªA¾¹¡A©I¥s¦X¾AªºÀx¦s¦¡µ{§Ç¡C¬°¤F°µ¨ì³o¤@ÂI¡A±z¥i¥H¦b¤@Ó¥»¦a¼È¦s¸ê®Æªí®æ©Î°}¦C¤W«Ø¥ß¤@Óªí³æ¨Ó·J¾ã¸ê®Æ¡AµM«á¥Î¦øªA¾¹Àx¦s¦¡µ{§Çªº¦WºÙ©M´£¨Ñªº°Ñ¼Æ¨Ó«Ø¥ß¤@±ø SQLEXEC( ) ±Ôz¡C±µ¤U¨Ó´N¥i§â³o¬qµ{¦¡½X¥[¤J¨ì[½T©w]©Î[§¹¦¨]«ü¥O«ö¶sªº Click ¨Æ¥óµ{§Ç¤¤¡A¦b¨Ï¥ÎªÌ¿ï©w¸Ó«ö¶s®É°õ¦æ SQLEXEC( ) ±Ôz¡C¨Ï¥Î¦b»·ºÝ¦øªA¾¹¤WªºÀx¦s¦¡µ{§Ç¨Ó§ó·s»·ºÝ¸ê®Æ¨ã¦³§ó°ª®Ä²v¡A¦]¬°Àx¦s¦¡µ{§Ç¦b¦øªA¾¹¤W¤w¶i¦æ¹L½sĶ¡C
§å¦¸³B²z§ó·s
¦pªGÀ³¥Îµ{¦¡§ó·sªº¸ê®Æ°O¿ý¤ñ¸û¦h¡A¨º»ò¥i±Ä¥Î§å¦¸³B²z¼Ò¦¡¶i¦æ§ó·s¡A³o¼Ë¥i¥H´£°ªºô¸ô©M¦øªA¾¹ªº³B²z®Ä²v¡C®Ú¾Ú¸ê®Æ¶°ªº BatchUpdateCount ÄݩʡA¦b§ó·s©Î´¡¤J±Ôz°õ¦æµ¹¦øªA¾¹¤§«e¡An¶i¦æ¤À§å°Ê§@¡CBatchUpdateCount ªº¹w³]Ȭ° 1¡Aªí¥Ü¨CÓ°O¿ý¥Ñ¤@±ø§ó·s±Ôz°õ¦æ¶Ç°eµ¹¦øªA¾¹¡C³z¹L¼W¥[³oÓÈ¡A¥i¥H¦b¤@±ø±Ôz¤¤®e¯Ç¦hÓ§ó·sn¨D¡A±q¦Ó´î¤Öºô¸ô³q°T¶q¡C
´£¥Ü¡G
¦³¨Ç¦øªA¾¹¤£¤ä´© BatchUpdateCount ÄݩʡF¦]¦¹¦bÀ³¥Îµ{¦¡¨Ï¥Î¥¦¤§«e¡A»Ýn¹ï¨CÓ»·ºÝ¦øªA¾¹°µ´ú¸Õ¡C
¬°¤F¦³®Ä¦a¨Ï¥Î³oÓ¯S©Ê¡A¸ê®Æ¶°³s±µ¥²¶·³]©w¬°½w½Ä³B²z¼Ò¦¡ 5¡A§Y¶}©ñ¼Ò¦¡¸ê®Æªí®æ½w½Ä³B²z¡A²z·QªºÅܧóÀ³¨î¦b¼È¦s¸ê®Æªí®æ¨C¤@µ§¸ê®Æ°O¿ýªº¦P¤@Äæ¦ì¤W¡C¥i¥H¥Î DBSETPROP( ) ³]©w¸ê®Æ¶°©w¸qªº BatchUpdateCount ÄݩʡF¥Î CURSORSETPROP( ) Åܧó¨Ï¥Î¤¤¸ê®Æ¶°¼È¦s¸ê®Æªí®æªº BatchUpdateCount ÄݩʡC
³Ì¨Î¤Æ§ó·s©M²¾°£ªº®Ä¯à
±z¥i¥H±Ä¯Ç¤U±ªº«ØÄ³¨Ó³]©w¸ê®Æ¶°©M³s±µªºÄݩʡA¥H³Ì¨Î¤Æ§ó·s©M²¾°£ªº®Ä¯à¡C¸ê®Æ¶°ªº BatchSize Äݩʹï®Ä¯àªº¼vÅT«Ü¤j¡C
------------------------------------------------------------------------
ª«¥ó¡@ Äݩʡ@¡@¡@¡@¡@¡@ ³]©w¡@¡@¡@¡@ª`·N¨Æ¶µ
------ ---------------- ----------- ------------------------------------
¸ê®Æ¶° BatchUpdateCount 10 ¡Ð 30 ¦æ ¹ï©ó¤pªº§ó·s¥i¥H³]©w¤@Ó¤j¤@ÂIªºÈ¡C
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@³Ì¦h¥i´£°ª 50% ªº®Ä¯à¡C¹w³]Ȭ° 1¡C
³s±µ¡@ Asynchronous¡@¡@ (.F.)¡@¡@¡@ ¦pªG¤£·Q¦b¦øªA¾¹¤W°õ¦æ®É¨ú®ø SQL ±Ô
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@z¡A¨Ï¥Î¦P¨B³s±µ¥i¨Ï®Ä¯à´£°ª 50¢H¡C
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¹w³]Ȭ°¦P¨B¡C
³s±µ¡@ WaitTime¡@¡@¡@¡@ N/A¡@¡@¡@¡@ ¦b«D¦P¨B¼Ò¦¡¤Un´£°ª®Ä¯à¡A¥i¨Ï¥Îµyµu
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¤@¨Çªºµ¥Ô®É¶¡¡Fn´î¤Öºô¸ô³q°T¶q¡A¥i
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¼W¥[µ¥Ô®É¶¡¡C
³s±µ¡@ PacketSize¡@¡@¡@ 4K ¨ì 12K¡@ ¹ï®Ä¯à¼vÅT¤£¤j¡C
------------------------------------------------------------------------
³Ì¨ÎÈÁÙ¨ú¨M©ó¦øªA¾¹ªº³t«×¡C
¹ê»Ú®Ä²v«Ü¤jµ{«×¨Ì¿à©ó¨t²Î³]©w©MÀ³¥Îµ{¦¡ªº»Ý¨D¡C
¬ÛÃö¸ê°T
ªí³æ¥[³t
¦p¦ó¡G³Ì¨Î¤Æ¸ê®Æ¶°®Ä¯à
¬d¸ß©M¸ê®Æ¶°¥[³t
³Ì¨Î¤Æ¥D±q¬[ºc®Ä¯à
³Ì¨Î¤Æ³s±µ
¥[³t¸ê®ÆÀ˯Á
¨Ï¥Î SQL pass-through §Þ³N¥[±jÀ³¥Îµ{¦¡
----------------------------------------------------------------------------------------------
ì¤å¡G
Performance Improvement on Updates and Deletes
You can speed up Update and Delete statements by:
¡EAdding timestamps to your remote tables.
¡EUsing the CompareMemo property.
¡EUsing manual transaction mode.
¡EUsing stored procedures on a remote server.
¡EBatching updates.
Adding Timestamps
You can improve performance when you update, insert, or delete data in a remote table that contains many fields by adding a timestamp field to the remote table, if your server provides the Timestamp field type.
The presence of a timestamp field in a remote table allows you to use the Visual FoxPro SQL WhereType update option DB_KEYANDTIMESTAMP. This option saves processing time because Visual FoxPro compares only two fields in your view, the key field and the timestamp field, against a remote table to detect update conflicts. By comparing only two fields, rather than all the updatable fields (with the DB_KEYANDUPDATABLE option) or all the modified fields (with the DB_KEYANDMODIFIED option), the DB_KEYANDTIMESTAMP option reduces the time it takes to update remote data. For more information on WhereType options, see Managing Updates by Using Views.
Note:
The DB_KEYANDTIMESTAMP option compares the key and timestamp fields only when your remote table contains a timestamp field. If you use the DB_KEYANDTIMESTAMP option against a remote table that doesn't contain a timestamp field, Visual FoxPro compares the key fields only.
The Upsizing Wizard can automatically add timestamp fields as appropriate to tables you export. For more information, see "Timestamp Columns" in Upsizing Visual FoxPro Databases.
Tip:
If you do something that alters the structure of a view's base table, such as adding a timestamp field, you might need to re-create the view. The fields in a view definition are stored in the database, and any changes to the base tables for a view after the view is used aren't reflected in the view definition until you re-create the view.
Excluding Memo Fields from the Update WHERE Clause
Whenever appropriate, you can speed updates by preventing view memo fields (fields of type Memo, General, or Picture) from being compared against their base table counterparts. By default, the CompareMemo property is set to true (.T.), which automatically includes memo fields in the SQL WHERE clause generated when you create an updatable view. You can set the CompareMemo property to false (.F.) to exclude memos from the SQL WHERE clause.
Using Transactions
For optimum performance, use manual transaction mode and manage transactions yourself. Manual transaction mode allows you to control when you commit a group of transactions, which enables the server to process more statements quickly.
Automatic transaction mode is more time-consuming, because by default every single update statement is wrapped in a separate transaction. This method provides maximum control over each individual update statement, but also increases overhead.
You can improve performance in automatic transaction mode by increasing the setting of the BatchUpdateCount property on the view or cursor. When you use a large BatchUpdateCount setting, many update statements are batched in a single update statement, which is then wrapped in a single transaction. However, if any statement in the batch fails, the entire batch is rolled back.
Tip:
The BatchUpdateCount property isn't supported by some servers; you should test this property against each remote server before deploying it in your application.
Using Server-Stored Procedures
You can create stored procedures on the server, which are precompiled and therefore run very quickly. You can execute stored procedures, send parameters with SQL pass-through, and move additional processing to the server as appropriate for your application.
For example, you might want to collect user input locally and then execute a SQL pass-through query to send the data to the server, calling the appropriate stored procedure. To do this, you might want to create a form on a local cursor or array to collect data and then write code that constructs a SQLEXEC( ) statement by using the name of the stored procedure and the parameters to be supplied. You could then add this code to the Click event of a command button titled "OK" or "Commit." When the user chooses the button, the SQLEXEC( ) statement runs. Using stored procedures on a remote server to update remote data can be more efficient, because the stored procedures are compiled on the server.
Batching Updates
If your application updates a number of records, you might want to batch updates so they're handled more efficiently by the network and server. Update or Insert statements are batched before being sent to the server, according to the setting of the BatchUpdateCount property of the view. The default value is 1, which means that each record is sent to the server with an update statement. You can reduce network traffic by increasing the value to package multiple updates in a statement.
Tip:
The BatchUpdateCount property isn't supported by some servers; you should test this property against each remote server before deploying it in your application.
To use this feature efficiently, the view connection should be set to Buffering mode 5, for optimistic table buffering, and changes ideally should be confined to the same fields in each row of the cursor. You can use DBSETPROP( ) to set the BatchUpdateCount property for the view definition; to change the value for an active view cursor, use CURSORSETPROP( ).
Optimizing Performance of Updates and Deletes
You can use the following guidelines for setting view and connection properties to optimize performance of updates and deletes. The BatchSize property on your view has the greatest influence on performance.
---------------------------------------------------------------------------------------
Object¡@¡@ Property¡@¡@¡@¡@ Setting¡@¡@¡@ Notes
---------- ---------------- ------------- ---------------------------------------------
View¡@¡@¡@ BatchUpdateCount 10 ¡V 30 rows Set a higher value for smaller-sized updates.
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@Set to increase performance by up to 50%.
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@The default is 1.
Connection Asynchronous¡@¡@ (.F.)¡@¡@¡@¡@ Use synchronous connections to increase
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@performance up to 50%, unless you want to be
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@able to cancel SQL statements while executing
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@on the server. The default is synchronous.
Connection WaitTime¡@¡@¡@¡@ N/A¡@¡@¡@¡@¡@ To increase performance in asynchronous mode,
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@use a shorter wait time; to reduce network
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@traffic, increase the wait time.
Connection PacketSize¡@¡@¡@ 4K to 12K¡@¡@ Has little effect on performance.
---------------------------------------------------------------------------------------
Your best value also depends on the speed of your server.
Actual performance depends greatly on your system configuration and application requirements.
See Also
Form Acceleration
How to: Optimize View Performance
Query and View Acceleration
Optimizing Client/Server Performance
Optimizing Connections
Speeding Up Data Retrieval
Enhancing Applications Using SQL Pass-Through Technology _________________ §Æ±æ¦³§ó¦h¤H¨Ó°Ñ»P
VFP wiki - »Ýn¤j®a¤@°_§¹¦¨ªºVFP¹q¤l®Ñ»PFAQ |
|
¦^³»ºÝ |
|
 |
|
|
±z µLªk ¦b³oÓª©±µoªí¤å³¹ ±z µLªk ¦b³oÓª©±¦^ÂФ峹 ±z µLªk ¦b³oÓª©±½s¿è¤å³¹ ±z µLªk ¦b³oÓª©±§R°£¤å³¹ ±z µLªk ¦b³oÓª©±¶i¦æ§ë²¼ ±z µLªk ¦b³oÓª©±ªþ¥[ÀÉ®× ±z µLªk ¦b³oÓª©±¤U¸üÀÉ®×
|
Powered by phpBB © 2001, 2005 phpBB Group ¥¿Å餤¤å»y¨t¥Ñ phpbb-tw ºûÅ@»s§@
|