VFP ·R¥ÎªÌªÀ°Ï ­º­¶ 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¸ü.
 
 ±`¨£°ÝÃD±`¨£°ÝÃD   ·j´M·j´M   ·|­û¦Cªí·|­û¦Cªí   ·|­û¸s²Õ·|­û¸s²Õ   ·|­ûµù¥U·|­ûµù¥U 
 ­Ó¤H¸ê®Æ­Ó¤H¸ê®Æ   µn¤JÀˬd±zªº¨p¤H°T®§µn¤JÀˬd±zªº¨p¤H°T®§   µn¤Jµn¤J

¨t²Î¤é»x

 
µoªí·s¥DÃD   ¦^ÂÐ¥DÃD    VFP ·R¥ÎªÌªÀ°Ï ­º­¶ -> VFP °Q½×°Ï
¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD  
µoªí¤H ¤º®e
Ruey



µù¥U®É¶¡: 2003-03-12
¤å³¹: 1698
¨Ó¦Û: tunglo

²Ä 1 ¼Ó

µoªíµoªí©ó: ¬P´Á¤T ¤K¤ë 13, 2003 11:09 am    ¤å³¹¥DÃD: ¨t²Î¤é»x ¤Þ¨¥¦^ÂÐ

VFPªí¸òÂܤé»xªº¹ê²{¤èªk
( §@ªÌ: ¼B¬À )

2000-03-21• ¼B¬À•VFPºô¸ô¤u§@«Ç

ºK­n ¥»¤å¤¶²Ð¤FVisual Foxpro¤¤¸ê®Æ®wIJµo§Þ³NªºÀ³¥Î¹ê¨Ò¡A¬°VFPªí«Ø¥ß¸òÂܤé»x,´£¨Ñ¸Ñ¨Mºô¸ô¦h¥Î¤áÀô¹Ò¤¤¸ê®ÆÀɮצw¥þªº¤@ºØ¤èªk¡C
ÃöÁä¦r IJµo§Þ³N¡Aªí¸òÂÜ¡A¦Û©w¸q¨ç¼Æ
¡@¡@ªí¸òÂÜ°ÝÃDªº´£¥X¡G
¡@¡@¦bºÞ²z¸ê°T¨t²Îªº¥¿±`¹B¦æ¤¤¡A¸ê°Tªº¦w¥þ©Ê°ÝÃD¤é¯q¬ð¥X¡CÁöµMºô¸ô¬°§Ú­Ì´£¨Ñ¤F¤@©wªº¸ê®Æ¦w¥þ©Ê¡A¥u¦³±ÂÅvªº¥Î¤á¤~¯à¹ï¸ê®Æ¶i¦æ¤é±`ªººûÅ@¡A¦ý¦³®É¥Î¤áªº»~¾Þ§@¥i¯à¾É­P¸ê®Æªº¥á¥¢©Î²V¶Ã¡F¥t¥~¡A¦³®É§Ú­Ì»Ý­n¹ï¸ê®Æªº§ï°Ê¯d¤U°O¸üµ¥¡C¹ï­«­nªº¸ê®ÆÀɮסA°O¿ý¨C¤@­Ó¸ê®ÆÅܤƪº¼f®Ö¤é»x¡A¹ï¨ä«Ø¥ß¨ä¬ÛÀ³ªº¤é»xªí¨Ó¸òÂܹ復ªº¼W¡B§R©M­×§ï¾Þ§@¬O¤Q¤À¥²­nªº¡C¤é»xªí¤¤°O¸ü¤F¦ó®É¡B¦ó¥Î¤á¶i¦æ¤F¦óºØ¾Þ§@¡A°O¸ü¤F³Q¥Î¤á¼W¥[©Î§R°£ªº°O¿ý¸ê°T¡A¥H¤Î³Q­×§ï°O¿ýªº­ì¨Ó¸ê°T©M­×§ï«áªº¸ê°T¡A±N³Q¾ÞÁa¹Lªº°O¿ý¶i¦æ³Æ¥÷¡C
VFPIJµo§Þ³N¡G
¡@¡@Visual Foxpro»P¥¦ªº«e´Áª©¥»­«¤j®t§O¤§¤@¬O¨Ï¥Î¤F¸ê®Æ®w¡]Database¡^³o¤@±j¤j¥\¯à¡A¨Ï¤§¦¨¬°¤@­Ó¯u¥¿ªºDataBase¡CVFPªºDatabase Container¥]§t¤Fªí¡]Table¡^¤Îªíªº¦UºØÄÝ©Ê©w¸q¡A¤]¥]§t¤FÄÝ©ó«áºÝªºSQL¤¤ªºÄ²µo§Þ³N¡]Trigger¡^¡C
¡@¡@Triggerªº¨Ï¥Î¬°Database¤¤ªºTable´£¨Ñ¤F¤@­Ó°O¿ý¯Å³W«h¡]§YÀË´úµ{¦¡¡^¡CTrigger¤À¬°Insert Trigger¡BUpdate Trigger©MDelete Trigger¤TºØ¾Þ§@¡CInsert Trigger¥Î©óTable·s¼W°O¿ý®É©ÒIJµoªºÀË´úµ{¦¡¡AUpdate Trigger¥Î©óTable­×§ï°O¿ý¦^¦s®É©ÒIJµoªºÀË´úµ{¦¡¡ADelete Trigger¥Î©óTable¤¤°O¿ý³Q§R®É©ÒIJµoªºÀË´úµ{¦¡¡CVFP¤¹³\¹ï¥ô¤@ºØ¾Þ§@³]©w¤£¦Pªº³W«h¡A¸Ó³W«h¥i¥H¬O¹Bºâ¦¡©Î¥Î¤á¦Û©w¸q¨ç¼Æ¡]UFD¡^¡A­Y¦^À³¬°¯u­È®É¡Aªí¥ÜIJµo¦¨¥\¡A­Y¦^À³¬°°²­È®É¡Aªí¥ÜIJµo¥¢±Ñ¡C¥Î¤á¦Û©w¸q¨ç¼Æ¡]UFD¡^¦sÀx¦bDatabase Container¤¤¡C
¡@¡@³Ð«ØIJµo¾¹¦³¨âºØ¤è¦¡¡G
¡@¡@1) ¥´¶}ªíÄÝ©Ê¡¨¹ï¸Ü¤è¶ô¡A¦b INSERT¡BUPDATE ©Î DELETE IJµo¾¹®Ø¤¤¡A¿é¤JIJµo¾¹¹Bºâ¦¡©Î¥Î¤á¦Û©w¸q¨ç¼Æ¡]UFD¡^¡F
¡@¡@2) ¨Ï¥Î CREATE TRIGGER ©R¥O¡C
³Ð«Ø¡B­×§ï©Î²¾¥h¦sÀx¹Lµ{¦³¤TºØ¤è¦¡¡G
¡@¡@1) ¦b±M®×ºÞ²z¾¹¤¤¡A¿ï¾Ü¨Ã®i¶}¤@­Ó¸ê®Æ®w¡A¿ï©w¡§¦sÀx¹Lµ{¡¨¡AµM«á¿ï¾Ü¡§·s«Ø¡¨¡B¡§­×§ï¡¨©Î¡§²¾¥h¡¨«ö¶s¡F
¡@¡@2) ¦b¸ê®Æ®w³]­p¾¹¤¤¡A±q¡§¸ê®Æ®w¡¨¥\¯àªí¤¤¿ï¾Ü¡§½s¿è¦sÀx¹Lµ{¡¨«ö¶s¡F
¡@¡@3) ¦bCOMMAND©R¥Oµøµ¡¤¤¡A¨Ï¥Î MODIFY PROCEDURE ©R¥O¡C
¡@¡@ªí¸òÂܳ]­p¡G
¡@¡@§Q¥ÎInsert Trigger¡BUpdate Trigger©MDelete Trigger¤TºØ¾Þ§@­ì²z¡A§Ú­Ì¥i¥Hºc³y³Æ¥÷³Q¾ÞÁa°O¿ýªº¥Î¤á¦Û©w¸q¨ç¼Æ¡A¨Ã±N¨ä¥[¤J»Ý­n¶i¦æªí¸òÂܪº¸ê®ÆÀÉ®×Trigger¤¤¡A¥H¹ê²{ªí¸òÂÜ¡C³o¼Ë¡A¤£½×¥Î¤á¨Ï¥Îµ{¦¡¶i¦æ¹ï¦¹ªíªº¾ÞÁa©Îª½±µ¥´¶}¦¹ªí¶i¦æ¼W§R©M­×§ï°O¿ý¡A³£¯à¿EµoTrigger±N³Q¾ÞÁa°O¿ý¶i¦æ¤é»x°O¸ü¡C
¡@¡@¥»¤Hºc³y¤F¥|­Ó³q¥Îªº¦Û©w¸q¨ç¼Æ¡AInslog()¡BDellog()¡BModlog()©Maddlog()¡A¦s©ñ©óDatabase Containerªº¦sÀx¹Lµ{¤¤¡C¦b»Ý­n¶i¦æªí¸òÂܪº¸ê®ÆÀɮתºInsert Trigger¡BDelete Trigger©MUpdate Trigger¤¤¤À§O¥[¤JInslog()¨ç¼Æ¡BDellog()¨ç¼Æ©MModlog()¨ç¼Æ¡A¥H¨Ï¹ï¸ê®ÆÀɮפ¤°O¿ýªº¼W¡B§R©M­×§ï§¡¿EµoTrigger¶i¦æ¤é»x°O¸ü¡Caddlog()¥Î©ó«Ø¥ß³Q¸òÂÜªíªº¤é»xªíµ²ºc¡A¤é»xªíªºµ²ºc³]­p¥]§t¤F³Q¸òÂÜªíªº©Ò¦³Äæ¦ì¸ê°T¡A¨Ã¥B¼W¥[¤F¥Î¤á¼Ð»xopid¡B¾Þ§@¤é´Á®É¶¡optime©M¾Þ§@¼Ð»xopmakÄæ¦ì¡C¤é»xªíªº©R¦W³W«h¬°³Q¸òÂÜªíªºªí¦W«e¥[¡¥L',¥H¥Ü°Ï¤À¡A¥t¥~¥»¤H¦b¦s©ñ¸ê®ÆÀɮץؿý¤U¥t³]¤l¥Ø¿ýLOGDBFS¡A±M¥Î¤_¦s©ñ¤é»xªí¥H«KºÞ²z¡C³o¥|­Ó¨ç¼Æµ{¦¡³]­p¦p¤U¡G

¥N½X:
*Insert Trigger:
FUNCTION inslog()
m.path=substr(dbf(),1,rat('\',dbf()))
m. logname=m.path+'LOGDBFS\L'+SUBSTR(DBF(),LEN(m.path)+1)
IF NOT FILE(m.logname)
=addlog() &&«Ø¥ß¤é»xªíµ²ºc
ENDI
SCATTER MEMVAR
m.opmak='¼W' &&¼W¥[°O¿ý¼Ð»x
m.opid=SYS(0) &&¨úºô¸ô¥Î¤á¼Ð»x
m.optime=datetime() &&¼W¥[°O¿ý®É¶¡
INSERT INTO (m.logname) ;
FROM MEMVAR &&°O¸ü©Ò¼W°O¿ý
RETURN .T.

*Delete Trigger:
FUNCTION dellog()
m.path=substr(dbf(),1,rat('\',dbf()))
m. logname=m.path+'LOGDBFS\L'+SUBSTR(DBF(),LEN(m.path)+1)
IF NOT FILE(m.logname)
=addlog()
ENDI
SCATTER MEMVAR
m.opmak='§R' &&§R°£°O¿ý¼Ð»x
m.opid=SYS(0)
m.optime=datetime()
INSERT INTO (m.logname) ;
FROM MEMVAR &&°O¸ü©Ò§R°O¿ý
RETURN .T.

*Update Trigger:
FUNCTION modlog()
m.path=substr(dbf(),1,rat('\',dbf()))
m. logname=m.path+'LOGDBFS\L'+SUBSTR(DBF(),LEN(m.path)+1)
IF NOT FILE(m.logname)
=addlog()
ENDI
DIME alog[FCOUNT()+3]
alog[FCOUNT()+2]=SYS(0)
alog[FCOUNT()+3]=datetime()
alog[FCOUNT()+1]='­×(­ì)'
FOR i=1 TO FCOUNT()
alog[I]=oldval(field[I])
ENDFOR
INSERT INTO (m.logname) ;
FROM ARRAY alog &&°O¸ü§ó§ï«e¸ê°T
alog[FCOUNT()+1]='­×(²{)'
FOR i=1 TO FCOUNT()
alog[I]=EVALUATE(field[I])
ENDFOR
INSERT INTO (m.logname) ;
FROM ARRAY alog &&°O¸ü§ó§ï«á¸ê°T
RETURN .T.

*«Ø¥ß¤é»xªíµ²ºc:
FUNCTION addlog()
*¨ú³Q¸òÂܪí¦r¬q
COPY STRU TO tmp EXTEND
*«Ø¥ß¥Î¤á¼Ð»x¡B¾Þ§@®É¶¡©M¾Þ§@¼Ð»xÄæ¦ì¸ê°T
INSERT INTO tmp.dbf ;
(field_name,field_type,field_len);
VALUES ('OPMAK','C',6)
INSERT INTO tmp.dbf ;
(field_name,field_type,field_len);
VALUES ('OPID','C',10)
INSERT INTO tmp.dbf ;
(field_name,field_type,field_len);
VALUES ('OPTIME','T',8)
USE IN tmp
oldselect=SELECT() &&¥Í¦¨¤é»xªíµ²ºc
SELE 0
CREATE (m.logname) FROM tmp
DELETE FILE tmp.dbf
SELECT (oldselect)

_________________
#############################
§Ö¼Ö¶ý«}¨t¦C©¯ºÖ¦v°t,³Ü¤Q¥þÂû´ö~­ì¨Ó©¯ºÖ¨º»ò²³æ!!

¾Ç·|VFP¨Ï¥ÎªÌªÀ°Ïªº·j´M,Code¤~·|§ó¦³½ì~
#############################
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
±q¤§«eªº¤å³¹¶}©lÅã¥Ü:   
µoªí·s¥DÃD   ¦^ÂÐ¥DÃD    VFP ·R¥ÎªÌªÀ°Ï ­º­¶ -> VFP °Q½×°Ï ©Ò¦³ªº®É¶¡§¡¬° ¥x¥_®É¶¡ (GMT + 8 ¤p®É)
²Ä1­¶(¦@1­¶)

 
«e©¹:  
±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§@