Computer/PowerBuilder

MS-Access ODBC 자동 설정 방법

ICARUS㈜ 2010. 4. 12. 19:56
반응형

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      = "Database1"      // 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 코딩 ------

// Profile comDB
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=Database1;UID=;PWD='"

connect ;

* 붉은색으로 된 부분은 일치되어야 합니다.

출처 ; http://wild-frontier.tistory.com/entry/%ED%8C%8C%EC%9B%8C%EB%B9%8C%EB%8D%94-MS-Access-DB-odbc%EC%97%90-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EB%93%B1%EB%A1%9D%ED%95%98%EA%B8%B0