uj5u.com熱心網友回復:
現在的問題就是脫離不了pb環境,必須用pb創建資料源才能正常運行,大神都來幫幫忙啊uj5u.com熱心網友回復:

有啥問題沒,給點思路吧。脫機運行的dll應該都配好了,資料源怎么自動創建呢?
如何在沒有pb的環境下運行能夠連接資料庫檔案,就是桌面右下角會顯示紅色圖示,證明已經連接好資料庫
uj5u.com熱心網友回復:
關于動態注冊ASA資料庫ODBC資料源//************************************************************//
// 函式名: //
// 功能: 主要是根據傳入的庫檔案名,自動完成ODBC的配置 //
// 一檔案名在ODBC中注冊資料源 //
// 輸入: //
// ls_filename 檔案名稱(主要是庫檔案) //
// ls_dir 檔案所在的目錄 //
// 回傳值: //
// 1 表示自動配置成功 //
// 0 表示自動配置失敗 //
// 設計者: Adamswater //
// 完成時間: 2003年10月 //
//************************************************************//
integer li_return //回傳值
string ls_filename
integer li_rtn
string ls_root
string ls_root_table
ls_filename = as_filename + ".db"//獲得資料庫檔案名字
ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"
ls_root_table = ls_root + "\" + as_filename
li_return = 1
li_rtn = registryset(ls_root,as_filename,regstring!,"")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"AutoStop",regstring!,"Yes")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"Compress",regstring!,"NO")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"DatabaseFile",regstring!,as_dir + "\"+ls_filename)
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"DatabaseName",regstring!,as_filename)
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"Debug",regstring!,"NO")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"DisableMultiRowFetch",regstring!,"NO")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"Driver",regstring!,as_dir + "\"+"dbodbc8.dll")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"Start",regstring!,as_dir + "\"+"dbeng8.exe -d -c8m")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"EngineName",regstring!,"ndjwglxt")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"Integrated",regstring!,"No")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"PWD",regstring!,"jwglxt")
if li_rtn= - 1 then
li_return = 0
end if
li_rtn = registryset(ls_root_table,"UID",regstring!,"jwglxt")
if li_rtn= - 1 then
li_return = 0
end if
return li_return
uj5u.com熱心網友回復:
函式定義/* 函式名稱 f_odbc_autoreg
函式功能 將拷貝到winsystem32 下的資料庫進行注冊
函式引數:mydb_name 將注冊資料庫名稱:
適用范圍pb9.0 sqlanywhere9.0 資料庫
實用注意事項:需將sqlanywhere9.0支持驅動 安裝到系統目錄
存在問題:運行后pb9.0 不能生成新的資料庫,有待解決
2006 - 11 已解決 設定引數大小寫問題.*/
constant long lensize=260
string str
str=Space(lensize)
GetSystemDirectory(str,lensize)
/////////自動設定odbc
int answer1,answer2,answer3,answer4,answer5,answer6,answer7,answer8,answer9,ing1,ing2,ing3,ing4,tag1,tag2,tag3
string ls_driver,ls_trans,app_path,db_path,db_start,ins1,ins2,ins3,ins4,tags1,tags2,tags3
app_path = str
////////SET ODBC/ODBCIST.INI/ODBC DRVIER
ls_driver=app_path+'/DBODBC9.DLL'
Ls_trans=app_path+'/DBODTR9.DLL'
tag1 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers','Adaptive Server Anywhere 9.0',RegString!,tags1)
if tag1 = - 1 then
answer1=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers','Adaptive Server Anywhere 9.0',RegString!,'Installed')
end if
if answer1=-1 then
return -1
end if
////////////
ing1 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Driver',RegString!,ins1)
ing2 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Setup',RegString!,ins2)
if ing1= -1 or ing2= -1 then
answer2=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Driver',RegString!,ls_driver)
answer3=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Setup',RegString!,ls_driver)
if answer2=-1 or answer3=-1 then
return -1
end if
end if
///////以上部分沒有資料庫資料
tag3 = RegistryGet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/ODBC data Sources',&
mydb_name,RegString!,tags3)
if tag3 = -1 then
answer4=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/ODBC data Sources',&
mydb_name,RegString!,'Adaptive Server Anywhere 9.0')
end if
if answer4=-1 then
return -1
end if
db_path=app_path+'/'+mydb_name+'.db'
db_start=app_path+'/dbeng9.exe -c9m'
answer1=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'autostop',RegString!,'yes')
answer2=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'DatabaseFile',RegString!,db_path)
answer3=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'DatabaseName',RegString!,mydb_name)
answer4=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'driver',RegString!,ls_driver)
answer5=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'Integrated',RegString!,'No')
answer6=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'PWD',RegString!,'SQL')
answer7=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'start',RegString!,db_start)
answer8=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'UID',RegString!,'DBA')
answer9=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'AutoStop',RegString!,'Yes')
if answer1=-1 or answer2=-1 or answer3=-1 or answer4=-1 or answer5=-1 or answer6=-1 or answer7=-1 or answer8=-1 then
return -1
end if
return 1
以下寫在應用的open事件
///自動注冊資料庫
string mydb
mydb = "tytank"
f_db_autoreg(mydb)
/////資料庫聯結
// Profile Tank3
// Profile tytank
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=tytank;UID=;PWD='"
//資料庫相應驅動程式拷貝到系統目錄下
uj5u.com熱心網友回復:
這些內容都應該寫到哪里啊,原諒我小白了uj5u.com熱心網友回復:
這些東西都該寫在哪里呢?我已經很混亂了
uj5u.com熱心網友回復:
不管怎樣還是謝謝了轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/46550.html
標籤:基礎類
下一篇:pb的ole控制元件
