我用的是pb9.0 asa8.0
比如 我新建一個應用,在應用中新建函式f_regdatasource() 是個自動選擇資料源的函式,
有三個引數 (資料庫名,用戶名,密碼),建好了在應用的open事件中運行,但是為什么每次我點run以后,還是蹦出選則資料源的
視窗讓我自己選擇?那位高手能指點一下?謝謝了
下面是f_regdatasource()函式的內容
integer li_rc,li_filenum
string ls_dir,ls_dbfile,ls_datasource,ls_dbname,ls_config
boolean lb_exist
ls_datasource = as_dbname
ls_dbname = as_dbname
ls_dir = GetCurrentdirectory()
ls_dbfile = ls_dir+'\'+ls_dbname+'.db'
ls_config = ls_dir + "\config.ini"
boolean lb_exeist
lb_exist = FileExists(ls_dbfile)
if not lb_exist then
messagebox("提示","在當前目錄下不存在:"+ls_dbname+".db")
halt
end if
lb_exist = FileExists(ls_config)
//判斷組態檔是否存在
if lb_exist then
li_rc = profileint("config.ini","start","first",0)
//如果存在則獲取組態檔的start段的first的鍵值
//如果鍵值不存在則賦值為0
else
li_FileNum = FileOpen(ls_config,LineMode!,Write!,Shared!,Append!)
FileWrite(li_FileNum,"[start]~r~n first = 1")
li_rc = 1
//如果不存在,則按一定的格式創建組態檔
end if
if li_rc = 1 then
//第一次讀取組態檔
if RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+"Adaptive Server Anywhere 8.0","Driver",RegString!,"dbodbc8.dll") = 1 then
messagebox("提示","資料源已注冊成功!")
end if
//注冊資料源
else
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+"Adaptive Server Anywhere 8.0","Driver",RegString!,"dbodbc8.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Data Sources",ls_datasource,RegString!,"Adaptive Server Anywhere 8.0")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"Drive",RegString!,"dbodbc8.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"PWD",RegString!,"SQL")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"DataFile",RegString!,ls_dbfile)
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"AutoStop",RegString!,"Yes")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"Integrated",RegString!,"No")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"DatabaseName",RegString!,ls_dbname)
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"Debug",RegString!,"No")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"DisableMultiRowFetch",RegString!,"No")
setprofilestring("config.ini","start","first","0")
//修改組態檔的初始值,以后不再讀取該檔案
end if
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString'" +"DSN="+ls_datasource +";UID="+as_uid+";PWD="+as_pwd+"'"
//連接資料庫
connect using sqlca;
if sqlca.sqlcode <> 0 then
if li_rc = 0 then
setprofilestring("config.ini","start","first","1")
messagebox("提示","請重新連接")
else
messagebox("與資料庫連接失敗","在連接資料庫時發現錯誤。")
end if
return false
else
return true
disconnect;
end if
uj5u.com熱心網友回復:
說明你的設定有問題,程式找不到!看看ODBC中的引數,和你程式中的設定是否一樣!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/116459.html
標籤:數據庫相關
