본문 바로가기

컴퓨터/파워빌더

파워빌더 - MS Access DB odbc에 자동으로 등록하기

MS Access db 를 프로그램 실행시 자동으로 odbc에 등록하여 사용하기입니다.
윈도우의 데이터원본(ODBC)에 별도설정 없이 프로그램 실행시 ODBC에 자동으로 등록됩니다.

//Global External Functions

//윈도우디렉토리 위치 확인용 함수
FUNCTION ulong GetWindowsDirectoryA(ref string wdir, long buf) LIBRARY "kernel32.dll"

//스크립트

string ls_job_folder,ls_dbname,ls_dbuid,ls_dbpwd
ls_job_folder    = "C:\pbex\" // DB 파일이 있는 폴더
ls_dbname      = "sample"      // DB명 , 확장자 mdb는 빼고
ls_dbuid          = "admin"       // DB 사용 ID
ls_dbpwd        = "1234"         //  DB 사용 password

//OS 에 따른 Windows Directory를 읽어오기 위함
string ls_windir,ls_odbcset=''
ulong l_buf
l_buf = 144
ls_windir = space(144)
    GetWindowsDirectoryA(ls_windir, l_buf)
ls_windir = Trim(ls_windir)

//먼저 odbc 등록에 필요한 odbcjt32.dll 이 시스템 폴더에 존재하는지 여부를 확인해야합니다.
IF FileExists(ls_windir + '\system32' + '\odbcjt32.dll') = False then
   messagebox('에러','ODBC 자동설정에러...')
   Return
else
   Registryget("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources",ls_dbname,RegString!,ls_odbcset )
  if trim(ls_odbcset) = ''  then
    RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources",ls_dbname,"Microsoft Access Driver (*.mdb)" )
    RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_dbname,"DBQ",ls_job_folder +  ls_dbname  + ".mdb")
    RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_dbname,"Driver",ls_windir + '\system32' + "\odbcjt32.dll")
    RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_dbname,"UID",ls_dbuid)
    RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_dbname,"PWD",ls_dbpwd)
    RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_dbname,"DriverId","")
    RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_dbname,"FIL","MS Access;")
    RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_dbname,"SafeTransactions","0")
  end if
end if

//DataBase Connect   ------ Script 코딩 ------