다시 : SQL 입력에 대한 열 값고려해야 할 두 가지 점이 있습니다. 첫째, 코드를 크게 단순화 할 수 있습니다. 이렇게 변경하면 오류 기회가 줄어들고 오류를 쉽게 발견 할 수 있습니다. 둘째, Open Database () 함수의 인수에 대한 문자열을 조작하고 있습니다. 큰 따옴표는 문자열의 구분 기호입니다. 그러므로 내장 된 큰 따옴표는 이스케이프 문자열 "\!"로 식별되어야합니다. (백 슬래시, 강타).
이 스크립트를 테스트하십시오. (나는 할 수 없다.)
dt = New Table( "Lots",
Add Rows( 5 ),
New Column( "vcLotCode", Character, Nominal, Set Values( {"lcode.0123", "12345.4321", "dcode.0123", "54321.0123", "lotcd.4567"} ) )
);
For( r = 1, r <= N Row( dt ), r++,
Eval(
Parse(
Substitute(
"dt2 = Open Database(
\!"Driver={SQL Server}; SERVER=rpt; DATABASE=FAB; UID=rrpt; \!",
\!"select vcLotCode, vcWaferCode, dAvg from fr.database where vcLotCode like '\!"LLLLL\!"'\!",
\!"Data\!"
)",
"LLLLL", dt:vcLotCode[r]
)
)
)
);다시 : SQL 입력에 대한 열 값몇 가지:
o 개방형 데이터베이스를 사용하고 있습니다. 나는 선호한다 데이터베이스 연결 만들기 + SQL 실행 + 데이터베이스 연결 닫기 . 의 장점 SQL 실행 데이터베이스에 하나의 연결을 작성하고이를 사용하여 여러 SQL 문을 실행할 수 있다는 것입니다. 열려있는 데이터베이스는 모든 SQL 문에 대해 새 연결을 만듭니다.
o 그 모든 증거를 사용하거나 대용 할 필요가 없습니다. 또한 datasource 및 sqlcode와 같이 정의되지 않은 변수가 있습니다.
이 코드를보십시오 :
// Data table
dt = New Table( "Lots",
Add Rows( 5 ),
New Column( "vcLotCode",
Character,
Nominal,
Set Values( {"lcode.0123", "12345.4321", "dcode.0123", "54321.0123", "lotcd.4567"} )
),
);
// Pull data from database using lot code as lookup variable
DSNString = "Driver={SQL Server}; SERVER=rpt; DATABASE=FAB; UID=rrpt; ";
// Create a connection to SQL Server
dbc = create database connection(dsnstring);
// Loop over all lot numbers
for (i = 1, i <= nrows(dt), i++,
lotcode = dt:vclotcode[i];
sqlStr = evalinsert(
"select vcLotCode, vcWaferCode, dAvg
from fr.database
where vcLotCode like '^lotcode^'");
print(sqlstr);
// Create a separate table for each lot number
dt2 = execute sql(dbc, sqlstr);
);
close database connection(dbc);
다시 : SQL 입력에 대한 열 값또 다른 코멘트 - 당신은 와일드 카드를 쓰지 않고 LIKE 연산자를 사용하고 있습니다. 아마 너는 이런 뜻인가?
"select vcLotCode, vcWaferCode, dAvg
from fr.database
where vcLotCode like '%^lotcode^%'");
다시 : SQL 입력에 대한 열 값이 경우에는 쿼리를 통해 중재 할 때 세 단계를 별도의 작업으로 나눌 수 있다는 이점이 있습니다.
이 접근법을 사용하면 상용구 sqlstr에서 Substitute ()를 사용할 수도 있습니다.
다시 : SQL 입력에 대한 열 값완전한. 정말 고맙습니다!
SQL 입력의 열 값나는 이것이 간단해야한다고 생각하지만 지난 며칠 동안 다양한 방법을 시도하고 이전 토론을 검색하고 스크립팅 색인을 참조한 후 비어 있습니다.
데이터 테이블의 값을 반복하여 데이터 테이블 값이 "로트 코드"이고 SQL 쿼리가 "where vcLotCode like ..."인 SQL 쿼리의 입력으로 사용하려고합니다. 나는 루핑을 나중에 다루고, 첫 번째 가치조차도 얻기 위해 고심하고 있습니다. "select", "set", "get"등의 다양한 반복을 시도했습니다. 도움을 주시면 감사하겠습니다.
// 데이터 테이블 dt = 새 테이블 ( "Lots", 행 추가 (5), 새 열 ( "vcLotCode", 문자, 명목, 설정 값 ({ "lcode.0123", "12345.4321", "dcode.0123", "54321.0123", "lotcd.4567"})),); // 테이블에서 로트 코드를 값으로 설정하려는 시도 dt << Select Rows (1); lotcode = : vcLotCode << 선택하십시오. // 로트 코드를 조회 변수로 사용하여 데이터베이스에서 데이터를 가져 오려고 시도 DSNString = "Driver = {SQL Server}; SERVER = rpt; DATABASE = FAB; UID = rrpt;"; sqlStr = "fr.database에서 vcLotCode, vcWaferCode, dAvg를 선택하십시오. 여기서 vcLotCode는 '"|| lotcode || "' '"; dt2 = 평가 (대체 (Expr (dt = 오픈 데이터베이스 (DataSource, sqlcode, "Data");), Expr (sqlcode), sqlstr, Expr (DataSource), DSNString));