int SQLSelect(DWORD id, char *Table, char *BindList, char *whereExpr, char *orderExpr);
연결된 데이터 베이스 자료를 감시 프로그램의 가상적인 메모리로 가져오는 함수이다. 이 함수를 실행한 다음 SQLFirst, SQLGetPos, SQLLast, SQLNext, SQLPrev, SQLSetPos 등의 함수를 이용하여 레코드를 검색할 수 있다.
함수인자
id - SQLConnect 함수를 사용하여 연결한 연결 번호
Table - 가져오고자 하는 데이터 베이스의 테이블 이름(MS-SQL은 VIEW테이블도 가능)
BindList - 편집기에서 설정한 연결설정 리스트 이름
whereExpr - 이 조건을 만족하는 레코드만 가져온다. "VALUE > 10" 이라고 설정하면 VALUE 필드의 값이 10보다 큰 레코드만 메모리로 가져오게 된다. (이 부분을 SQL문이 실행될 때 각 ODBC 엔진에서 해석하는 방법이 조금씩 다를 수 있으므로 각 데이터 베이스 프로그램의 WHERE 도움말을 참고하도록 한다.)
orderExpr - 데이터를 가져올 때 정렬 순서를 정할 수 있다. "NAME" 이나 "NAME ASC" 라고 설정하면 NAME 필드를 기준으로 오름차순으로 정렬하여 메모리로 가져오게 된다. "NAME DESC" 라고 설정하면 내림차순 정렬이 된다. (주의:5.13 버전까지는 "BY NAME" 처럼 앞에 항상 BY라는 문자를 적어주어야 하고 5.14 이후의 버전에서는 "NAME"처럼 BY를 생략해야 한다.) 이 부분은 SQL문이 실행될 때 각 ODBC 엔진에서 해석하는 방법이 조금씩 다를 수 있으므로 각 데이터 베이스 프로그램의 ORDER BY 도움말을 참고하도록 한다.
return 값
return값이 0이면 함수를 성공적으로 수행하지 못했다는 뜻이다.
예제1
@SQLSelect(id, "ValueTable", "BindListValue", "", "");
@SQLFirst(id);
문장설명 : 데이터베이스의 ValueTable 테이블에서 모든 레코드를 읽어와서 가상적인 메모리에 담는다.
다음 문장인 SQLFirst를 실행하게 되면 읽어온 첫번째 레코드를 BindListValue에 설정한 태그로 데이터를 옮겨준다.
예제2
@SQLSelect(id, "ValueTable", "BindListValue", "VALUE < 0", "");
@SQLLast(id);
문장설명 : 데이터베이스의 ValueTable 테이블에서 VALUE 필드가 0보다 작은 레코드만을 읽어와서 가상적인 메모리에 담는다.
다음 문장인 SQLLast를 실행하게 되면 읽어온 마지막 레코드를 BindListValue에 설정한 태그로 데이터를 옮겨준다.
예제3
@SQLSelect(id, "ValueTable", "BindListValue", "", "NAME DESC");
@SQLLast(id);
문장설명 : 데이터베이스의 ValueTable 테이블에서 모든 레코드를 NAME 필드를 내림차순으로 정렬된 레코드를 읽어와서 가상적인 메모리에 담는다.
다음 문장인 SQLLast를 실행하게 되면 읽어온 마지막 레코드를 BindListValue에 설정한 태그로 데이터를 옮겨준다.
참조