|
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 ¤C¤ë 30, 2003 3:27 pm ¤å³¹¥DÃD: ºc«Ø¸ê®Æ®wªº¦w¥þ©Ê(Âà¶K) |
|
|
myf1 §@ªÌ:«e«×¼B¦
¥ÎÀ³¥Îµ{¦¡¨¤¦â¨Ó«OÃÒ¸ê®Æ®wªº¦w¥þ©Ê
«OÅ@µn¿ý¨ìSQL Serverªº±K½X¤@ª½¬OÓÀY¯kªº°ÝÃD¡C
¤£ºÞ«ç¼Ë¡A§A³£¥²¶·n«Ø¥ß¤@ÓODBC³s±µ©M¤@ÓVFP¤¤ªº¸ê®Æ®w³s±µ¡A¸ê®Æ®w¤¤³s±µªº±K½X«h«D±`®e©ö¬ªº|¡A¨ì¥Ø«e¬°¤î¡A¦ü¥G³Ì¦w¥þªº°µªk¥u¦³¥ÎODBC API ¨Ó¦b¹B¦æ®É«Ø¥ß³s±µ¡X¡X¦ý°ÝÃD¬O¡A¦pªG¥Î¤á¬OÓ¦³¸gÅ窺µ{¦¡®v¡A¨º»ò¥L·|¦bµ{¦¡¹B¦æ®É¡B©ÎªÌ°®¯Ü±þ¦ºµ{¦¡ªº¶iµ{¡A¤£Åý§Aªºµ{¦¡¤¤¦Û°Ê¦b°h¥X®É§R°£³s±µªº³¡¤À¥N½X¹B¦æ¡A³o¼Ë¥L´N¤S¦³¥i¯à±o¨ì§AªºODBC³s±µ±K½X¤F¡C
UTÂø»x¤W´£¨Ñ¤F¤@Ó§ó¦w¥þªº¤èªk¡C¥Î³oÓ¤èªk¡A¹ï¤è¥u¦³¤Ï½sĶ¤F§Aªºµ{¦¡¤~¥i¯à±o¨ì¯u¥¿ªº±K½X¡C³oÓ°µªk´N¬O¨Ï¥ÎSQL ServerªºÀ³¥Îµ{¦¡¨¤¦â¡C
1¡Bµ¦²¤
º¥ý¡A§Aªºµ{¦¡ÁÙ¬On«Ø¥ß¤@Ó´¶³qªºODBC³s±µ©M¤@Ó¸ê®Æ®w³s±µ¡C¯µ³Z¦b©ó¡G§A¦b SQL Server ¤W¬°¥Î¤á«Ø¥ßªº¬O¤@Ó¥u¯à³s±µ¨ì¸ê®Æ®w¡B¦ý¬O¨S¦³¥ô¦ó¹ï¥ô¦óªíª«¥óªº Select ¡BUpdate¡BDelete³\¥iÅvªº Public ¨¤¦â¡C
§AªºÀ³¥Îµ{¦¡¦b±Ò°Ê®É¥Î³oÓODBC³s±µ¨Ó³s±µ¨ì¸ê®Æ®w¡AµM«á¡A¦A¨Ï¥ÎÀ³¥Îµ{¦¡¨¤¦â¨ÓÀò±o¹ï¸ê®Æªíª«¥óªº³X°Ý³\¥iÅv¡CÀ³¥Îµ{¦¡¨¤¦âªº±K½X«hÁôÂæbµ{¦¡¤¤¡A¦]¬°¥¦¤£¥Î«Ø¥ßODBC³s±µ¡A©Ò¥H¥¦ªº±K½X¤]´N¤£®e©ö¬ªº|¡C
2¡B°µªk
A¡B¦øªA¾¹ºÝ³]¸m
¥´¶} SQL Server ¥ø·~ºÞ²z¾¹¡A¦b§Aªº¸ê®Æ®w¥Ø¿ý¤Uªº¨¤¦â¸`ÂI¤W³æÀ»¥kÁä¡A¿ï¾Ü¡i·s«Ø¸ê®Æ®w¨¤¦â¡j¡AµM«á¦b¥´¶}ªº¸ê®Æ®w¨¤¦â¹ï¸Ü¤è¶ô¤¤¿ï¾Ü¡iÀ³¥Îµ{¦¡¨¤¦â¡j¡A¨Ã³]¸m¦n±K½X¡C
Ãö³¬¹ï¸Ü¤è¶ô«á¡A¿ï¾Ü³oÓ·s«ØªºÀ³¥Îµ{¦¡¨¤¦â,³æÀ»¥kÁä¿ï¾Ü¡iÄÝ©Ê¡j¡A¦b¥´¶}ªºÄݩʹï¸Ü¤è¶ô¤¤³æÀ»¡i³\¥iÅv¡j¡A¬°³oÓ¨¤¦â³]¸m³X°Ý¨CÓ¸ê®Æªíªº³\¥iÅv¡C
B¡BÀ³¥Îµ{¦¡³]¸m
¥Î¥u¯à³s±µ¨ì¸ê®Æ®w¡B¨S¦³³X°Ý¥ô¦óªíªº³\¥iÅvªºODBC³s±µ¨Ó³s±µ¨ì SQL Server ¥H«á¡A¦A¨Ï¥Î SPT ¨Ó¦b·í«e³s±µ¤W±Ò°ÊÀ³¥Îµ{¦¡¨¤¦â¡C
OK¡A³o¼Ë´N¦³¤@Ó°ÝÃD¡A§A³oÓ³s±µ±Ò°Ê¥H«á¡A·o³Jªº¤H¬O¤£¬O¤S¥i¥H¥Î³oÓODBC³s±µ¨Óª±¤õ¤F¡H¤£¦æ¡AÀ³¥Îµ{¦¡¨¤¦âªº±Ò°Ê¥u¦b·í«e³s±µ¤W¦³®Ä¡A¦pªGn·s«Ø¤@Ó³s±µ¡A¨º»ò¥²¶·¦A¦¸±Ò°ÊÀ³¥Îµ{¦¡¨¤¦â¡C³o¼Ë¤@¨Ó¡A°£¤F§AªºÀ³¥Îµ{¦¡¥H¥~¡A¨S¦³¥ô¦ó¤H¯à°÷§Q¥Î¤W¤w¸g³Q±Ò°Êªº³s±µ¤F¡C¡G¡^
±Ò°ÊÀ³¥Îµ{¦¡¨¤¦âªº¿ìªk¡G¨Ï¥Î¨t²Î¦sÀx¹Lµ{ Sp_Setapprole¡CT-SQL ªº»yªk¬O¡G
sp_setapprole 'rolename', 'password' [, 'encrypt style']
«e±¨âӰѼƴN¬OÀ³¥Îµ{¦¡¨¤¦â¦WºÙ©M±K½X¡C²Ä¤TӰѼƥi¥Î¥i¤£¥Î¡A¥¦ªí¥Ü¹ï±K½Xªº¥[±K¤è¦¡¡ANONE ªí¥Ü¤£¥[±K¡AODBC ªí¥Ü¥ÎODBC ªº¥[±KAPI¨Ó±N±K½X¥[±K«á¦Aµo°e¨ì¦øªA¾¹¤W¡C
¦n¤F¡A²{¦b§ÚÌ¥i¥H¨É¨üÀ³¥Îµ{¦¡¨¤¦â¥u¦b·í«e³s±µ¤W¦³®Äªº¦n³B¤F¡C¦ý¬OÁÙ¦³¤@ÂI¤p°ÝÃD¡A§A¥²¶·ª¾¹D·í«e³s±µ¤W¬O§_¤w¸g±Ò°Ê¤FÀ³¥Îµ{¦¡¨¤¦â¡A¦pªG¦b¤w±Ò°Êªº³s±µ¤W¸Õ¹Ï¦A¦¸±Ò°Ê¡A·|µo¥Í¤@Ó¿ù»~¡C
§PÂ_·í«e³s±µ¬O§_¤w¸g±Ò°Ên¥Î¤@ÂI¨±¦^ªº¿ìªk¡G¸ÕµÛÀˬd·í«e³s±µ¬O§_¾Ö¦³¹ï¬YÓªíªº³X°Ý³\¥iÅv¡C³on¥Î¨ìT-SQL ªº PERMISSIONS ¨ç¼Æ¡C
PERMISSIONS ¨ç¼Æ±µ¨ü2ӰѼơC²Ä¤@ӰѼơA¬O¥Ø¼Ðªºª«¥ó¼Ð»x²Å¡C²Ä¤GӰѼƥi¥Î¥i¤£¥Î¡A¥¦¬O¤@ÓÄæ¦ìªº¦WºÙ¡C¦pªGPERMISSIONSªð¦^0¡A«h·í«e³s±µ¹ï¥Ø¼Ð¨S¦³³X°Ý³\¥iÅv¡F¦pªGªð¦^ªº¬O¨ä¥LÈ¡A«h¾Ö¦³¹ï¥Ø¼Ðªº³X°Ý³\¥iÅv¡C
³oùØ»¡ªº¥Ø¼Ð¡A«üªº¬OSQL Server¤¤ªº¬YÓª«¥ó¡A¤ñ¦p¤@Óªíª«¥ó¡B©ÎªÌ¤@Ó¨¤¦âª«¥ó¡C¥Ø¼Ðªºª«¥ó¼Ð»x²Å«h¬O SQL Server ¬°¨CÓª«¥ó«Ø¥ßªº¤@ÓÃѧO½X¡A³oÓÃѧO½X¥i¥H¥Î T-SQL ªº OBJECT_ID ¨ç¼Æ¨Ó¨ú±o¡C
OK¡A²{¦b§Ú̪¾¹D¤F¡AÀˬd·í«e³s±µ¬O§_¹ï¬YÓªí¦³³\¥iÅvªºT-SQL¥N½X´N¬O¡G
select PERMISSIONS(OBJECT_ID(¡¥your_table_name¡¦))
¤U±¬O¤@¬q SQL Passthrough ªº¥Ü¨Ò¥N½X¡G
LOCAL liHandle as Integer, liResult as Integer
** Àò±o¤@Ó³s±µ±±¨î½X
liHandle = SQLCONNECT('Northwind')
** Àˬd³\¥iÅv
liResult = SQLEXEC(liHandle, ;
"select permissions(object_id('customers')) as iPermissions", "PermissionCheck")
IF liResult > 0
IF PermissionCheck.iPermissions = 0
** »Ýn±Ò°ÊÀ³¥Îµ{¦¡¨¤¦â
liResult = SQLEXEC(liHandle, "exec sp_setapprole 'MyAppRole', 'MyAppRolePassword'")
IF liResult < 0
** ¦b±Ò°ÊÀ³¥Îµ{¦¡¨¤¦âªº®ÉÔµo¥Í¤F¿ù»~
ENDIF
ENDIF
ELSE
** ¦bÀˬd³\¥iÅvªº®ÉÔµo¥Í¤F¿ù»~
ENDIF
** ²{¦b´N¥i¥H¥¿±`¾Þ§@¤F
SQLEXEC(liHandle, 'select top 10 * from customers')
BROWSE
SQLDISCONNECT(liHandle)
C¡BÀ³¥Î¨ì CursorAdapter ¤W
¥H¤U¥N½X¬°«Ø¥ß¤@Ó¦Û©w¸qªº CursorAdapter Ãþ¡G
DEFINE CLASS MyCursorAdapter as CursorAdapter
FUNCTION BeforeCursorFill( ;
tlUseCursorSchema as Logical, tlNoDataOnLoad as Logical, tcSelectCmd) as Logical
** Âл\ BeforeCursorFill ¤èªk¨Ó±Ò°ÊÀ³¥Îµ{¦¡¨¤¦â
LOCAL llRetVal as Logical
llRetVal = DODEFAULT(tlUseCursorSchema, tlNoDataOnLoad, tcSelectCmd)
IF llRetVal
** ±Ò°ÊÀ³¥Îµ{¦¡¨¤¦â
llRetVal = This.LogOnToAppRole()
ENDIF
RETURN llRetVal
ENDFUNC
PROTECTED FUNCTION LogOnToAppRole() as Logical
** ±Ò°ÊÀ³¥Îµ{¦¡¨¤¦â¡A¨Ãªð¦^¤@ÓÅÞ¿èÈ»¡©ú¬O§_±Ò°Ê¦¨¥\
LOCAL liHandle as Integer, llRetVal as Logical
** Àò±o³s±µ±±¨î½X
liHandle = This.DataSource
IF liHandle > 0
** ÀˬdÀ³¥Îµ{¦¡¨¤¦â¬O§_¤w¸g³]¸m¦n¤F
IF !This.AppRoleSet()
** ¦pªG¨S¦³¡A¨º»ò²{¦b³]¸m¥¦
IF SQLEXEC(liHandle, "exec sp_setapprole 'MyAppRole', 'MyAppRolePassword'") > 0
llRetVal = .t.
ELSE
llRetVal = .f.
ENDIF
ELSE
** À³¥Îµ{¦¡¨¤¦â¤w¸g³]¸m¦n¤F
llRetVal = .t.
ENDIF
ELSE
** ·í«e¨S¦³¤@Ó¦³®Äªº³s±µ±±¨î½X
llRetVal = .f.
ENDIF
RETURN llRetVal
ENDFUNC
PROTECTED FUNCTION AppRoleSet() as Logical
** ÀˬdÀ³¥Îµ{¦¡¨¤¦â¬O§_¤w¸g³]¸m¦n
LOCAL llRetVal as Logical, lcAlias as Character
** «O¦s·í«e§O¦W
lcAlias = ALIAS()
** Àˬd¦bªí¤Wªº³\¥iÅv
IF SQLEXEC(This.DataSource, ;
"select permissions(OBJECT_ID('" + This.Alias + "')) as iPermissions", ;
'approlepermission') > 0
** ¦pªG permissions ªð¦^ 0, ¨º»ò´N¬OÀ³¥Îµ{¦¡¨¤¦â¨S¦³±Ò°Ê
llRetVal = (AppRolePermission.iPermissions <> 0)
ELSE
llRetVal = .f.
ENDIF
** ²M²z
IF USED('AppRolePermission')
USE IN AppRolePermission
ENDIF
IF !EMPTY(lcAlias)
SELECT (lcAlias)
ENDIF
RETURN llRetVal
ENDFUNC
ENDDEFINE
¨Ï¥Î³oÓÃþªº¥N½X¡G
LOCAL loCustomers as CursorAdapter
LOCAL liHandle as Integer
** «Ø¥ß¤@Ó³s±µ
liHandle = SQLCONNECT('Northwind')
IF liHandle > 0
** ²{¦b¤w¸g³s±µ¤W¤F
** «Ø¥ß¤@Ó¹ï cursor adapter Ãþªº¤Þ¥Î
loCustomers = NEWOBJECT('MyCursorAdapter', 'MyCursorAdapter.prg')
** ³]¸m¤@¨ÇÄÝ©Ê¡A¥]¬A³s±µ±±¨î½X
WITH loCustomers
.DataSource = liHandle
.DataSourceType = 'ODBC'
.SelectCmd = 'Select * from customers'
.Alias = 'Customers'
ENDWITH
** ¤U¸ü¼Æ¾Ú
IF loCustomers.CursorFill()
BROWSE
ELSE
MESSAGEBOX(MESSAGE())
ENDIF
ENDIF
** Â_¶}³s±µ
SQLDISCONNECT(liHandle)
³o½T¹ê¬O¤@Ó«OÅ@¦w¥þ©Êªº¦n¿ìªk¡C¬Û¤ñ¤£¤[¤§«á¡A³oºØ¿ìªk´N±N¦¨¬°§ÚÌ foxer ªº¼Ð·Ç¿ìªk¤F§a¡I¡G¡^ _________________ #############################
§Ö¼Ö¶ý«}¨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§@
|