2개 이상의 디비 접속2개 이상의 디비 접속
Posted at 2010. 10. 8. 13:25 | Posted in PowerBuilder가끔 작업을 하다 보면 불가피(?)하게 2개의 디비에 접속을 해야할 경우가 생깁니다.
특히 sms 보내기 등 할때 말이죠.. ㅠㅠ
파빌 9.0 + ms sql2000 기준입니다.. 다른 디비는 접속 스크립트를 변경하시면..되겠죠..
배포시에는.. 해당 디비의 접속 dll 이 들어가야 한답니다..--;;
//글로벌 변수
TRANSACTION SQLCA, SQLCA_sms //사용할 트랜젝션 선언해줍니다..
//어플리케이션 오픈 이벤트
// 1번디비
SQLCA = Create Transaction // 트랜젝션 생성합니다..
SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.Database =
"디비명"
SQLCA.LogPass = "페스워드"
SQLCA.ServerName = "서버주소"
SQLCA.LogId =
"로그인아뒤"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
connect using sqlca;
if sqlca.sqlcode <> 0 then
messagebox('error',
sqlca.sqlerrtext)
return
end if
//sms디비
sqlca_sms = Create Transaction
sqlca_sms.DBMS = "MSS Microsoft SQL Server"
sqlca_sms.Database =
"디비명"
sqlca_sms.LogPass = "페스워드"
sqlca_sms.ServerName =
"서버주소"
sqlca_sms.LogId = "로그인아뒤"
sqlca_sms.AutoCommit =
False
sqlca_sms.DBParm = ""
connect using sqlca_sms;
if sqlca_sms.sqlcode <> 0 then
messagebox('error',
sqlca_sms.sqlerrtext)
return
end if
open(w_main) //오픈윈도우..
// 사용할 페이지에서..변수 선언 제외했음..
select count(*) into :변수 from 테이블 using sqlca; //1번 디비 연결이용
select count(*) into :변수 from 테이블 using sqlca_sms; //sms 디비 연결 이용..
'PowerBuilder' 카테고리의 다른 글
데이타윈도우가 아닌 화면윈도우를 인쇄하는 방법 (0) | 2010.10.11 |
---|---|
타원형 윈도우 만들기 (0) | 2010.10.11 |
ORACLE(PL-SQL) 초급 매뉴얼 (0) | 2010.10.08 |
PowerBuilder 컴퓨터 환경 읽어오기 (0) | 2010.10.08 |
간단히 현재 실행 중인 경로 알아오기 [출처] [초보] 간단히 현재 실행 중인 경로 알아오기. (0) | 2010.10.08 |
ORACLE(PL-SQL) 초급 매뉴얼ORACLE(PL-SQL) 초급 매뉴얼
Posted at 2010. 10. 8. 13:19 | Posted in PowerBuilder오라클 SQL 기초 강좌 입니다.
Oracle 초급매뉴얼 -> Oracle 강좌 -> SQL 기초강의
순서로 보시면 됩니다.
'PowerBuilder' 카테고리의 다른 글
타원형 윈도우 만들기 (0) | 2010.10.11 |
---|---|
2개 이상의 디비 접속 (0) | 2010.10.08 |
PowerBuilder 컴퓨터 환경 읽어오기 (0) | 2010.10.08 |
간단히 현재 실행 중인 경로 알아오기 [출처] [초보] 간단히 현재 실행 중인 경로 알아오기. (0) | 2010.10.08 |
파워빌더에서 화면 캡처하기 (0) | 2010.10.03 |
PowerBuilder 컴퓨터 환경 읽어오기PowerBuilder 컴퓨터 환경 읽어오기
Posted at 2010. 10. 8. 13:17 | Posted in PowerBuilderContextKeyword lcxk_base
string ls_Path
string ls_values[]
this.GetContextService("Keyword",
lcxk_base)
lcxk_base.GetContextKeywords("OS", ls_values)
IF Upperbound(ls_values) > 0 THEN
ls_Path =
ls_values[1]
ELSE
ls_Path = "*UNDEFINED*"
END IF
messagebox('1',ls_path)
//XP 적용된 환경 정보
ALLUSERSPROFILE location of the All Users
Profile.
APPDATA location where applications store data by
default.
CD current directory
string.
CLIENTNAME client's NETBIOS name when connected to terminal
server session.
CMDCMDLINE ncommand line used to start the current
cmd.exe.
CMDEXTVERSION version number of the current Command Processor
Extensions.
CommonProgramFiles path to the Common Files
folder.
COMPUTERNAME name of the computer.
COMSPEC
path to the command shell executable.
DATE current
date.
ERRORLEVEL error code of the most recently used
command.
HOMEDRIVE drive letter is connected to the user's home
directory.
HOMEPATH full path of the user's home
directory.
HOMESHARE network path to the user's shared home
directory.
LOGONSEVER name of the domain controller that validated
the current logon session.
NUMBER_OF_PROCESSORS number of processors
installed on the computer.
OS name of the operating
system.
(Windows XP and Windows 2000 list the operating
system as Windows_NT.)
Path search path for executable
files.
PATHEXT file extensions that the operating system
considers to be executable.
PROCESSOR_ARCHITECTURE processor's chip
architecture.
PROCESSOR_IDENTFIER description of the
processor.
PROCESSOR_LEVEL model number of the computer's
processor.
PROCESSOR_REVISION revision number of the
processor.
ProgramFiles path to the Program Files
folder.
PROMPT command-prompt settings for the current
interpreter.
RANDOM random decimal number between 0 and
32767.
SESSIONNAME connection and session names when connected to
terminal server session.
SYSTEMDRIVE drive containing the Windows
root directory.
SYSTEMROOT location of the Windows root
directory.
TEMP and TMP default temporary directories for
applications that are available to users who are currently
logged on.
TIME current time.
USERDOMAIN name of
the domain that contains the user's account.
USERNAME name of the
user currently logged on.
USERPROFILE location of the profile for
the current user.
WINDIR location of the OS directory.
'PowerBuilder' 카테고리의 다른 글
2개 이상의 디비 접속 (0) | 2010.10.08 |
---|---|
ORACLE(PL-SQL) 초급 매뉴얼 (0) | 2010.10.08 |
간단히 현재 실행 중인 경로 알아오기 [출처] [초보] 간단히 현재 실행 중인 경로 알아오기. (0) | 2010.10.08 |
파워빌더에서 화면 캡처하기 (0) | 2010.10.03 |
PB DataDirect ODBC 등록방법 (0) | 2010.10.03 |
간단히 현재 실행 중인 경로 알아오기 [출처] [초보] 간단히 현재 실행 중인 경로 알아오기.간단히 현재 실행 중인 경로 알아오기 [출처] [초보] 간단히 현재 실행 중인 경로 알아오기.
Posted at 2010. 10. 8. 13:14 | Posted in PowerBuilderGetCurrentDirectory() 함수를 사용하게되면 특별히 함수를 등록하거나 하지 않고
바로 현재 실행중인 프로그램의 경로를 알수있다.
예)
===== 코드 =====
string sDir
//현재 directory 가져오기
sDir =
GetCurrentDirectory()
간단한 코드로 쉽게 현재 실행 중인 경로를 변수에 담아서
원하는 이벤트에서 변수를 이용하여 현재 경로를 통해서 결과를 얻을 수 있다.
(파워빌더 9.0이상 버전에서 기본으로 제공되는 함수/ 이하버전에서는 API이용)
===== 9.0이하 하위버전 =====
Global External
Functions
FUNCTION ulong
GetCurrentDirectoryA(ulong BufferLen, ref string currentdir) LIBRARY
"Kernel32.dll"
FUNCTION boolean
SetCurrentDirectoryA(ref string cdir) LIBRARY
"kernel32.dll"
GlobalVariables
string gs_main_path // 시작경로를 저장(Global 변수로
선언합니다)
ulong
ul_BufferLen
어플리케이션 오픈시
ul_BufferLen = 100
gs_main_path = space(ul_BufferLen)
GetCurrentDirectoryA(ul_BufferLen,
gs_main_path)
'PowerBuilder' 카테고리의 다른 글
2개 이상의 디비 접속 (0) | 2010.10.08 |
---|---|
ORACLE(PL-SQL) 초급 매뉴얼 (0) | 2010.10.08 |
PowerBuilder 컴퓨터 환경 읽어오기 (0) | 2010.10.08 |
파워빌더에서 화면 캡처하기 (0) | 2010.10.03 |
PB DataDirect ODBC 등록방법 (0) | 2010.10.03 |
파워빌더에서 화면 캡처하기파워빌더에서 화면 캡처하기
Posted at 2010. 10. 3. 18:07 | Posted in PowerBuilder파워빌더에서 직접 윈도우 API 를 호출하는 방법도 있지만
매우 복잡해져서, DLL 을 만들고 파워빌더에서는 간단하게
함수를 호출하는 형식으로 만들어봤습니다.
첫번째 argument 에 윈도우의 handle 을 넘겨주면 그 윈도우 만을 capture 하게 됩니다.
만약 파워빌더에서 다른 윈도우의 화면을 capture 하려고 한다면 그 윈도우의 handle 을
찾는 것은 별도로 구현하셔야 합니다.
첫번째 argument 에 0 을 주면 두번째 argument 에 지정된 모니터 화면 전체를 capture 합니다.
(멀티 모니터도 지원이 됩니다. 1 이 기본 모니터이며 2가 확장된 모니터입니다.
3개 이상의 모니터를 가지고 있을 경우 2, 3 이 어떤 것이 될지는 테스트되지 않았습니다.
테스트 후 프로그램에 반영하셔야 합니다.)
자세한 내용은 첨부한 소스를 보시면 됩니다.
PB 11.5 에서 만들어 졌으며, 하위 버전을 사용하시는 분들은 아래의 스크립트를 참조하십시요.
// external function
FUNCTION long pb_screencapture( unsignedlong hwnd, long whichMonitor, long imageType, long imageQuality, string filename, ref string msg ) library "pbscreen.dll" alias for "pb_screencapture;ansi"
// PowerBuidler scripts
boolean lb_checked
long ll_ret, ll_monitor_no, ll_imageType, ll_imageQuality
ulong lu_handle
string ls_filename, ls_msg, ls_imageType
// 저장될 파일 이름.
ls_filename = sle_3.text
// 에러가 발생했을 때, 메시지. 반드시 space 로 공간을 잡아주어야 한다.
ls_msg = space(1024)
// 현재의 윈도우만 capture 할 것인지의 여부를 묻는 체크박스
// 체크되지 않으면 monitor number 에 지정된 화면 전체를 capture.
lb_checked = cbx_1.checked
if lb_checked then
lu_handle = handle(parent)
else
lu_handle = 0
end if
// 윈도우만 capture 하는 것이 아닐 경우에만 사용. 모니터의 번호. 1 부터 시작.
// 1 은 기본 모니터를 뜻한다.
ll_monitor_no = long( sle_4.text )
// 그림의 형식. JPG, GIF, BMP 만 지원된다.
// JPG 가 가장 효율적임.
ls_imageType = ddlb_1.text
choose case ls_imageType
case "JPG"
ll_imageType = 1
case "GIF"
ll_imageType = 2
case "BMP"
ll_imageType = 3
end choose
// 100 : 가장 좋은 품질. 사이즈가 커진다.
// 1 : 가장 않좋은 품질. 사이즈가 작다.
// 50-80 사이의 값이면 화면을 알아보는데 지장이 없음.
ll_imageQuality = 50
ll_ret = pb_screencapture( lu_handle, ll_monitor_no, ll_imageType, ll_imageQuality, ls_filename, ls_msg )
MessageBox( string(ll_ret), ls_msg )
'PowerBuilder' 카테고리의 다른 글
2개 이상의 디비 접속 (0) | 2010.10.08 |
---|---|
ORACLE(PL-SQL) 초급 매뉴얼 (0) | 2010.10.08 |
PowerBuilder 컴퓨터 환경 읽어오기 (0) | 2010.10.08 |
간단히 현재 실행 중인 경로 알아오기 [출처] [초보] 간단히 현재 실행 중인 경로 알아오기. (0) | 2010.10.08 |
PB DataDirect ODBC 등록방법 (0) | 2010.10.03 |
PB DataDirect ODBC 등록방법PB DataDirect ODBC 등록방법
Posted at 2010. 10. 3. 18:06 | Posted in PowerBuilder--> 레지스트리 등록
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", "ODBC_TEST", "PB DATADIRECT OEM 4.20 Oracle Wire Protocol")
// Intersolv ODBC Registry Set
If RegistryGet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers", "PB DATADIRECT OEM 4.20 Oracle Wire Protocol", ls_Tmp) = -1 Then
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers", "PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "Installed")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "APILevel" , "1")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "ConnectFunctions", "YYY")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "CPTimeout" , "60")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "Driver" , SYS.WINDOWSDIR + "\pbora19.dll")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "DriverODBCVer" , "3.52")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "FileUsage" , "0")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "Setup" , SYS.WINDOWSDIR + "\pbora19s.dll")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "SQLLevel" , "1")
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "UsageCount" , "1")
End If
// Intersolv ODBC(PB) SharedDLL Registry Set
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBORA19.DLL" ,ReguLong!, 2)
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBORA19S.DLL" ,ReguLong!, 2)
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBBAS19.DLL" ,ReguLong!, 2)
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBUTL19.DLL" ,ReguLong!, 2)
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBUTL19R.DLL" ,ReguLong!, 2)
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\IVPB.LIC" ,ReguLong!, 2)
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBODB100.DLL" ,ReguLong!, 2)
// ODBC.INI Set
SetProfileString(SYS.WINDOWSDIR + "\ODBC.INI", "ODBC 32 bit Data Sources" , "ODBC_TEST", "PB DATADIRECT OEM 4.20 Oracle Wire Protocol")
SetProfileString(SYS.WINDOWSDIR + "\ODBC.INI", "ODBC_TEST" , "Driver32", SYS.WINDOWSDIR + "\PBORA19.DLL")
// ODBC_TEST ODBC Configure
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "ApplicationUsingThreads" , "1" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "ArraySize" , "60000" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "CachedCursorLimit" , "32")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "CachedDescLimit" , "1" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "CatalogIncludesSynonyms" , "1" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "CatalogOptions" , "0")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "DefaultLongDataBuffLen" , "8192" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "DescribeAtPrepare" , "1" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "Description" , "ODBC_TEST")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "Driver" , SYS.WINDOWSDIR + "\PBORA19.DLL")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableDescribeParam" , "0" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableNcharSupport" , "1" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableScrollableCursors" , "1" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableStaticCursorsForLongData", "1")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableTimestampWithTimeZone" , "1" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "HostName" , "")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "LocalTimeZoneOffset" , "")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "LockTimeOut" , "-1")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "LogonID" , "")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "PortNumber" , "")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "ProcedureRetResults" , "1" )
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "SID" , "")
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "UseCurrentSchema" , "1")
이렇게 하면 ODBC_TEST 이라는 ODBC가 생성됩니다.
관련 화일은 위 구문에 보시면 몇개 안됩니다..
그걸 찾으시면 됩니다..
CONNECT 시에는
SQLCA.DBMS = "ODBC" // ODBC
SQLCA.DBPARM = "ConnectString='DSN=ODBC_TEST;HOST="+ls_ipaddress+";PORT="+ls_port+";SID="+ls_sid+";UID="+ls_logid+";PWD="+ls_logpass+"',CommitonDisconnect='No'"
SQLCA.AUTOCOMMIT = FALSE
로 하시면 됩니다.
단, 단점은 Oracle SP를 sqlca transaction에 등록 후 사용하셔야 합니다.
'PowerBuilder' 카테고리의 다른 글
2개 이상의 디비 접속 (0) | 2010.10.08 |
---|---|
ORACLE(PL-SQL) 초급 매뉴얼 (0) | 2010.10.08 |
PowerBuilder 컴퓨터 환경 읽어오기 (0) | 2010.10.08 |
간단히 현재 실행 중인 경로 알아오기 [출처] [초보] 간단히 현재 실행 중인 경로 알아오기. (0) | 2010.10.08 |
파워빌더에서 화면 캡처하기 (0) | 2010.10.03 |