CAFE

파워빌더 공부

Re: MS-SQL ODBC로 접속 하기

작성자파빌신|작성시간17.07.19|조회수1,106 목록 댓글 1

오브젝특로 만들어 봤습니다.


첨부파일 nvo_mssql_to_odbc.sru



$PBExportHeader$nvo_mssql_to_odbc.sru

$PBExportComments$MS-SQL 사용을 ODBC 이용을 위한 설정

forward

global type nvo_mssql_to_odbc from nonvisualobject

end type

end forward


global type nvo_mssql_to_odbc from nonvisualobject autoinstantiate

end type


type variables

Public: // 모두 접근


Protected: // 상속 하위까지 접근


Private: // 현재의 오브젝트만 접근

end variables


forward prototypes

public function integer of_settransobject (ref transaction atrans, string as_dsn, string as_user, string as_pass)

public function integer of_mssqlconnectodbc (string as_server, string as_port, string as_dsn, string as_user, string as_database)

end prototypes


public function integer of_settransobject (ref transaction atrans, string as_dsn, string as_user, string as_pass);/*

ODBC 사용을 위한 transaction 설정

*/

//integer of_SetTransObject (ref transaction atrans, string : as_DSN, as_USER, as_PASS )


atrans.DBMS = "ODBC"

atrans.AutoCommit = False

atrans.DBParm = "ConnectString='DSN="+as_DSN+";"+ &

                               "UID="+as_USER+";"+ &

                               "PWD="+as_PASS+"'"+ &

                               ",PBCatalogOwner='dbo'"


return 0

end function


public function integer of_mssqlconnectodbc (string as_server, string as_port, string as_dsn, string as_user, string as_database);/*  MS-SQL 접속용 ODBC 정보 만들기  

Real파빌Shin

string as_Server   = ""

String as_Port     = "1433"

String as_DSN      = "" //ODBC에서 사용할 DSN 명

String as_user     = ""

String as_password = ""

String as_database = ""

of_MSSQLconnectODBC(as_Server, as_Port, as_DSN, as_user, as_database)


*/

//integer gf_MSSQLConnectODBC(string as_Server, String as_Port, String as_DSN, String as_user, String as_database)

String ls_Key, ls_Val, ls_dat

integer rtn

/* Cliconfg 설정 값 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]

as_DSN="DBMSSOCN,{IP or URL}{,PORT}"

*/

if IsNumber(as_Port) then

if Trim(as_Port) = '' or IsNull(as_Port) then as_Port = '1433'

else

as_Port = '1433'

end if

ls_Key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo"

ls_Val = as_DSN ; ls_dat = ""

rtn = RegistryGet( ls_Key, ls_Val, RegString!, ls_dat )

if ls_dat <> "DBMSSOCN,"+as_Server+','+as_Port then

ls_dat = "DBMSSOCN,"+as_Server+','+as_Port

rtn = RegistrySet( ls_Key, ls_Val, RegString!, ls_dat )

end if


/* ODBC Data Sources 설정 값

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources]

as_DSN="SQL Server" 

*/

ls_Key = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"

ls_Val = as_DSN ; ls_dat = ""

rtn = RegistryGet( ls_Key, ls_Val, RegString!, ls_dat )

if ls_dat <> "SQL Server" then

ls_dat = "SQL Server"

rtn = RegistrySet( ls_Key, ls_Val, RegString!, ls_dat )

end if


/* ODBC 

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\{as_DSN}]

"Database"=as_database

"Driver"="C:\\Windows\\system32\\SQLSRV32.dll"

"Language"="한국어"

"LastUser"={as_user}

"Server"=as_DSN

*/

ls_Key = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\"+as_DSN

ls_Val = "Driver" ; ls_dat = ""

rtn = RegistryGet( ls_Key, ls_Val, RegString!, ls_dat )

if ls_dat <> "C:\\Windows\\system32\\SQLSRV32.dll" then

ls_dat = "C:\\Windows\\system32\\SQLSRV32.dll"

rtn = RegistrySet( ls_Key, ls_Val, RegString!, ls_dat )

end if

ls_Val = "Language" ; ls_dat = ""

rtn = RegistryGet( ls_Key, ls_Val, RegString!, ls_dat )

if ls_dat <> "한국어" then

ls_dat = "한국어"

rtn = RegistrySet( ls_Key, ls_Val, RegString!, ls_dat )

end if

ls_Val = "Database" ; ls_dat = ""

rtn = RegistryGet( ls_Key, ls_Val, RegString!, ls_dat )

if ls_dat <> as_Database then

ls_dat = as_Database

rtn = RegistrySet( ls_Key, ls_Val, RegString!, ls_dat )

end if

ls_Val = "LastUser" ; ls_dat = ""

rtn = RegistryGet( ls_Key, ls_Val, RegString!, ls_dat )

if ls_dat <> as_user then

ls_dat = as_user

rtn = RegistrySet( ls_Key, ls_Val, RegString!, ls_dat )

end if

ls_Val = "Server" ; ls_dat = ""

rtn = RegistryGet( ls_Key, ls_Val, RegString!, ls_dat )

if ls_dat <> as_DSN then

ls_dat = as_DSN

rtn = RegistrySet( ls_Key, ls_Val, RegString!, ls_dat )

end if


return rtn

end function


on nvo_mssql_to_odbc.create

call super::create

TriggerEvent( this, "constructor" )

end on


on nvo_mssql_to_odbc.destroy

TriggerEvent( this, "destructor" )

call super::destroy

end on




다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자짐승 | 작성시간 17.07.20 최고입니다.
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼