|
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 |
Ruey
µù¥U®É¶¡: 2003-03-12 ¤å³¹: 1698 ¨Ó¦Û: tunglo
²Ä 1 ¼Ó
|
µoªí©ó: ¬P´Á¤T ¤K¤ë 13, 2003 11:09 am ¤å³¹¥DÃD: ¨t²Î¤é»x |
|
|
VFPªí¸òÂܤé»xªº¹ê²{¤èªk
( §@ªÌ: ¼B¬À )
2000-03-21• ¼B¬À•VFPºô¸ô¤u§@«Ç
ºKn ¥»¤å¤¶²Ð¤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¡^¡AY¦^À³¬°¯uȮɡAªí¥ÜIJµo¦¨¥\¡AY¦^À³¬°°²È®É¡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¤~·|§ó¦³½ì~
############################# |
|
¦^³»ºÝ |
|
|
|
|
±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§@
|