精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖外部引用〗>>请问如何在vfp中创建odbc(dsn) (内无)

主题:请问如何在vfp中创建odbc(dsn) (内无)
发信人: zeng_zhe()
整理人: hunter__fox(2002-03-16 23:36:01), 站内信件
经研究,请参考:

*!***************************
PROC ODBCREG
PARA P_ODBCNAME,P_ODBCTYPE

IF EMPTY(P_ODBCNAME)
   P_ODBCNAME="MYSYS2"
   P_ODBCTYPE="SQL Server"
ENDIF   

DECLARE INTEGER RegOpenKey IN Win32API INTEGER nHKey,STRING cSubKey,IN
TEGER @nHandle
DECLARE INTEGER RegCreateKey IN Win32API INTEGER nHKey,STRING cSubKey,
INTEGER @nHandle
DECLARE INTEGER RegSetValueEx IN Win32API INTEGER nHKey, STRING lpszEn
try, INTEGER dwReserved,INTEGER fdwType,STRING lpbData,INTEGER cbData


#DEFINE HKEY_CLASSES_ROOT -2147483648
#DEFINE HKEY_CURRENT_USER -2147483647
#DEFINE HKEY_LOCAL_MACHINE -2147483646
#DEFINE HKEY_USERS -2147483645
#DEFINE ERROR_SUCCESS 0
#DEFINE ERROR_SUCCESS 0

&& 在HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources中新建
字符串值
&& 名称:Mysys1  数据:SQL Server
=WRITREGS(HKEY_LOCAL_MACHINE,"SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources
",P_ODBCNAME,P_ODBCTYPE)

&& 在HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI中新建一个子键Mysys1
=crearegk(HKEY_LOCAL_MACHINE,"SOFTWARE\ODBC\ODBC.INI\"+P_ODBCNAME)

&& 再在Mysys1下创建一些键值。
=WRITREGS(HKEY_LOCAL_MACHINE,"SOFTWARE\ODBC\ODBC.INI\"+P_ODBCNAME,"Dat
abase","pubs")
=WRITREGS(HKEY_LOCAL_MACHINE,"SOFTWARE\ODBC\ODBC.INI\"+P_ODBCNAME,"Des
cription","pubs-memo")
=WRITREGS(HKEY_LOCAL_MACHINE,"SOFTWARE\ODBC\ODBC.INI\"+P_ODBCNAME,"Dri
ver"," C:\WINNT\System32\sqlsrv32.dll")
=WRITREGS(HKEY_LOCAL_MACHINE,"SOFTWARE\ODBC\ODBC.INI\"+P_ODBCNAME,"Las
tUser","ZZ")
=WRITREGS(HKEY_LOCAL_MACHINE,"SOFTWARE\ODBC\ODBC.INI\"+P_ODBCNAME,"Ser
ver","HP-SERVER-O")
=WRITREGS(HKEY_LOCAL_MACHINE,"SOFTWARE\ODBC\ODBC.INI\"+P_ODBCNAME,"Tru
sted_Connection","Yes")

*!********************************
FUNCTION CREAREGK
LPARAMETERS HKey,SUBKEY
&& 新建项

LOCAL nRsult,nHandle
nHandle=0
nResult=RegCreateKey(HKey,SubKey,@nHandle)
IF nResult # ERROR_SUCCESS
   RETURN .NULL.
ENDIF
RETURN .T.

*!********************************
FUNCTION WRITREGS
LPARAMETERS HKey,SubKey,Entry,Value
&& 修改项值
LOCAL nHandle,nResult,nSize,cDataBuffer,nType
nHandle=0
nResult=RegOpenKey(HKey,SubKey,@nHandle)
IF nResult # ERROR_SUCCESS
   RETURN .NULL.
ENDIF

nSize=len(value)
nResult=RegSetValueEx(nHandle,Entry,0,1,Value,nSize)
=RegCloseKey(nHandle)
IF nResult # ERROR_SUCCESS
   RETURN .NULL.
ENDIF
RETURN .T.


--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.124]

[关闭][返回]