로그인 프롬프트로 데이터베이스 연결모두 안녕
저는 데이터베이스 시스템에 연결한 다음 일부 데이터를 가져오는 스크립트 작업을 해왔습니다.
내 자격 증명을 사용하면 스크립트가 제대로 작동하지만 암호를 업데이트해야 하기 때문에 이러한 자격 증명이 두 달마다 변경되므로 종종 스크립트를 변경해야 합니다. 우리는 또한 이 스크립트를 유효성 검사 경로 아래로 푸시하는 것을 검토하고 있습니다. 즉, 일단 유효성이 검사되면 스크립트를 변경할 수 없습니다. 따라서 누구나 이 스크립트를 사용할 수 있고 유효성 검사를 통과할 수 있도록 프롬프트를 추가하고 싶습니다.
아래는 현재 스크립트입니다(UID 및 암호는 입력해야 하는 세부 정보임).
Dt1=Open Database(
"DSN=MACPAC;SYSTEM=MEDIUK;UID=INSERT;PASSWORD=INSERT;DBQ=MPDAT10;DFTPKGLIB=QGPL;LANGUAGEID=ENU;PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;QRYSTGLMT=-1;",
"Select ixplot as batchid,
ixppn as product_part_no,
ixrecq as batch_size,
ixlevl as macpac_level,
ixcpn as comp_part_no,
ixcpde as comp_desc,
ixclot as comp_lot_no,
ixcmpo as comp_order_no,
ixissq as comp_qty,
ixvend as vendor_code,
ixvlot as vendor_lot_no,
ixseqn as sequence
FROM \!"MPDAT10\!".\!"ICM860P\!""
)
누군가 프롬프트를 추가하는 방법을 찾는 데 도움을 줄 수 있다면 좋을 것입니다.
미리 감사드립니다.
야곱
Re: 로그인 프롬프트로 데이터베이스 연결내 시스템(v17.1)에서 쿼리 결과를 저장하는 데이터 세트를 보면 테이블 스크립트가 있습니다. 소스, DB에서 업데이트, DB에 저장 일반 텍스트의 암호로.
이러한 테이블 스크립트의 생성은 다음을 통해 기본 설정에서 비활성화할 수 있습니다. 테이블 > ODBC 연결 문자열을 숨깁니다.
JMP 노트 621050
Bis에는 사용자가 비활성화하는 것을 방지하는 옵션이 있습니다. ODBC 연결 문자열 숨기기 , 달리기 SQL(my_dbc, ...) 실행 테이블 스크립트에서 암호를 가져옵니다.
Re: 로그인 프롬프트로 데이터베이스 연결이중 세로 막대('||')는 JMP가 두 개의 문자열을 연결하도록 지시합니다. 그러니 시도해보세요:
"DSN=MACPAC;SYSTEM=MEDIUK;UID="||user||";PASSWORD="||pass||";DBQ=MPDAT10;DFTPKGLIB=QGPL;LANGUAGEID=ENU;PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;QRYSTGLMT=-1;"
Re: 로그인 프롬프트로 데이터베이스 연결안녕 이안,
제 질문에 답해주셔서 다시 한 번 감사드립니다. 이것이 대화 상자를 생성하고 내가 입력한 암호를 저장하는 것을 보았지만 데이터베이스에 연결할 때 이것을 아래 코드에 입력하는 방법에 대해서는 여전히 확신이 없습니다.
아프게 해서 미안해요, 당신은 많은 도움이 되었어요!
NamesDefaultToHere(1);
// Your first code block
Speak("First code block", wait(1));
// Using a 'modal' window delays execution of subsequent code until input is given
nw = NewWindow("Connect To Database", << Modal, << returnResult,
PanelBox("Input your credentials",
LineUpBox(NCol(2),
TextBox("User:"),
teb1 = TextEditBox("", << setWidth(200)),
TextBox("Password:"),
teb2 = TextEditBox("", << setWidth(200), << passwordStyle(1))
);
),
LineUpBox(NCol(2),
ButtonBox("OK"),
ButtonBox("Cancel")
);
);
// Your second code block
// Stop if the user canecls . . .
if(nw["Button"] == -1, Speak("User Cancelled"); Stop());
// . . . else get the values the user gave
user = nw["teb1"];
pass = nw["teb2"];
DBconnectionString = "User is "||user||" password is "||pass;
Speak(DBconnectionString);
MACPAC_CHARTGEN = Function( {},/* Tell MACPAC to open the materials data from a certain table*/
Dt1=Open Database(
"DSN=MACPAC;SYSTEM=MEDIUK;UID=||user||;PASSWORD=||pass;DBQ=MPDAT10;DFTPKGLIB=QGPL;LANGUAGEID=ENU;PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;QRYSTGLMT=-1;",
"Select ixplot as batchid,
ixppn as product_part_no,
ixrecq as batch_size,
ixlevl as macpac_level,
ixcpn as comp_part_no,
ixcpde as comp_desc,
ixclot as comp_lot_no,
ixcmpo as comp_order_no,
ixissq as comp_qty,
ixvend as vendor_code,
ixvlot as vendor_lot_no,
ixseqn as sequence
FROM \!"MPDAT10\!".\!"ICM860P\!""
));
Re: 로그인 프롬프트로 데이터베이스 연결데이터베이스 담당자가 이러한 종류의 솔루션에 만족할까요?
- 암호가 만료되지 않는 필요한 권한이 있는 데이터베이스에 응용 프로그램 계정을 만듭니다.
- 만들기 암호화 GET_DBC 함수를 정의하는 jsl 파일입니다.
- GET_DBC 함수는 적절한 dsn 문자열을 사용하여 CREATE DATABASE CONNECTION을 호출하고 데이터베이스 연결을 반환합니다.
- 기본 프로그램에서 데이터베이스 연결을 사용하여 EXECUTE SQL을 호출합니다.
- 모두 완료되면 CLOSE DATABASE CONNECTION을 호출하십시오.
다음은 GET_DBC의 간단한 버전입니다.
/*
File Name: Get_DBC.JSL
Description: Function to get database connection string
*/
get_dbc = function({}, {default local},
my_dbc = "";
dsn_string = "Driver={Oracle in OraClient12Home1};Dbq=MY_TNS_ENTRY;UID=USERNAME;PWD=PASSWORD;";
my_dbc = create database connection(dsn_string);
// Return the connection to Oracle
my_dbc;
); // end Get_DBC.JSL
Re: 로그인 프롬프트로 데이터베이스 연결저는 모달이 아닌 UI를 좋아하는 경향이 있으므로 코드가 위의 'OKscript'로 이동한다고 가정했습니다.
기존 코드와 함께 대화 상자를 인라인으로 배치하려면 몇 가지 작은 변경을 수행해야 합니다.
DB 연결 문자열을 구축하는 다른(더 좋은?) 방법이 있다는 점에 유의하십시오.
NamesDefaultToHere(1);
// Your first code block
Speak("First code block", wait(1));
// Using a 'modal' window delays execution of subsequent code until input is given
nw = NewWindow("Connect To Database", << Modal, << returnResult,
PanelBox("Input your credentials",
LineUpBox(NCol(2),
TextBox("User:"),
teb1 = TextEditBox("", << setWidth(200)),
TextBox("Password:"),
teb2 = TextEditBox("", << setWidth(200), << passwordStyle(1))
);
),
LineUpBox(NCol(2),
ButtonBox("OK"),
ButtonBox("Cancel")
);
);
// Your second code block
// Stop if the user canecls . . .
if(nw["Button"] == -1, Speak("User Cancelled"); Stop());
// . . . else get the values the user gave
user = nw["teb1"];
pass = nw["teb2"];
DBconnectionString = "User is "||user||" password is "||pass;
Speak(DBconnectionString);
Re: 로그인 프롬프트로 데이터베이스 연결안녕 이안,
답장해주셔서 감사합니다.
이 새로운 프롬프트 상자를 어떻게 사용할 수 있지만 이것을 내 현재 코드에 끼울 수 있는지 아십니까? 상자가 나타나도록 ID와 암호를 입력한 다음 데이터베이스에 연결하는 코드 줄에 입력합니다.
나는 "teb1"과 "user"를 따옴표를 사용하거나 사용하지 않고 사용하려고 했습니다. 확실히 나는 작동하지 않는다는 것을 의미하는 약간의 누락이 있어야합니까?
비밀번호에 대한 프롬프트가 작동하는 것을 볼 수 있지만 데이터베이스 쿼리에 비밀번호를 입력하는 방법을 알 수 없습니다.
NamesDefaultToHere(1);
nw = NewWindow("Cooext To Database",
PanelBox("Input your credentials",
LineUpBox(NCol(2),
TextBox("User:"),
teb1 = TextEditBox("", << setWidth(200)),
TextBox("Password:"),
teb2 = TextEditBox("", << setWidth(200), << passwordStyle(1))
);
),
LineUpBox(NCol(2),
ButtonBox("OK", OKscript),
ButtonBox("Cancel", nw << closeWindow)
);
);
OKScript =
Expr(
nw << closeWindow;
user = teb1 << getText;
pass = teb2 << getText;
// DB connection info . . .
Speak("User was "||user, wait(1));
Speak("Password was "||pass, wait(1));
);
Dt1=Open Database(
"DSN=MACPAC;SYSTEM=MEDIUK;UID=(HOW TO GET UID HERE?);PASSWORD=(HOW TO GET PASSWORD HERE?;DBQ=MPDAT10;DFTPKGLIB=QGPL;LANGUAGEID=ENU;PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;QRYSTGLMT=-1;",
"Select ixplot as batchid,
ixppn as product_part_no,
ixrecq as batch_size,
ixlevl as macpac_level,
ixcpn as comp_part_no,
ixcpde as comp_desc,
ixclot as comp_lot_no,
ixcmpo as comp_order_no,
ixissq as comp_qty,
ixvend as vendor_code,
ixvlot as vendor_lot_no,
ixseqn as sequence
FROM \!"MPDAT10\!".\!"ICM860P\!""
);
감사해요,
야곱
Re: 로그인 프롬프트로 데이터베이스 연결아마도 다음과 같을 것입니다.
NamesDefaultToHere(1);
nw = NewWindow("Cooext To Database",
PanelBox("Input your credentials",
LineUpBox(NCol(2),
TextBox("User:"),
teb1 = TextEditBox("", << setWidth(200)),
TextBox("Password:"),
teb2 = TextEditBox("", << setWidth(200), << passwordStyle(1))
);
),
LineUpBox(NCol(2),
ButtonBox("OK", OKscript),
ButtonBox("Cancel", nw << closeWindow)
);
);
OKScript =
Expr(
nw << closeWindow;
user = teb1 << getText;
pass = teb2 << getText;
// DB connection info . . .
Speak("User was "||user, wait(1));
Speak("Password was "||pass, wait(1));
);Re: 로그인 프롬프트로 데이터베이스 연결내가 올바르게 기억한다면 이것은 몇 가지 아이디어가 있습니다 JSL에서 사용자 비밀번호 정보를 처리하는 방법(ODBC 연결 문자열)