VB 6.0 환경에서 레코드 컨트롤 시에 런타임 오류가 발생합니다.

by red03410 posted Mar 20, 2014
* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, 
CUBRID Ver.
CUBRID 9.2 <9.2.2.0155>
CUBRID TOOL Ver.
CUBRID 매니저 2014.01 빌드 0377  (32bit)
응용 환경(API)
 VB 6.0

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------ 


안녕하세요. 오늘도 이렇게 도움을 요청하게 되네요 


지난번 에도 비슷한 문제로 문의를 드리다 필수적인 요소는 아니어서 그냥 지나갔던 내용인데요. 


개발 환경은 VB 6.0 을 사용하고 있습니다. Connection 관련 내용입니다. 


Provider = CUBRIDProvider.1

CursorLocation = adUseClient

Charset = EUC-KR


파라미터로 넘겨주는 값은 위의 값입니다. 나머지는 Data Source, User ID, Password, Location 이고요


문제가 발생하는 상황은 아래와 같습니다. 

1개 테이블 을 Select 하는 쿼리를 주고 조회를 하고 전체 레코드를 카운트하는 RecordCount 명령이나 MoveFirst, Movenext 명령을 했을때 다음과 같은 오류가 발생합니다.

=========================================================

Run-time error '-2147467259(80004005)' 

데이터 공급자나 기타 서비스가 E-FAIL 상태를 반환했습니다.

=========================================================


사용한 쿼리는 아래와 같습니다. 


SELECT 

BID AS "BIMS ID", 

PID AS "등록번호", 

pnm AS "성명", 

birthday AS "생년월일", 

sex AS "성별", 

SUBSTR(POSTCD, 1, 3)||  '-' ||  SUBSTR(POSTCD, 4, 3)AS "우편번호", 

addr1 AS "주소1", 

addr2 AS "주소2", 

telephone AS "전화번호", 

cellphone AS "휴대전화", 

remark AS "비고" 

FROM 

Tbcom_Patientinfo 

ORDER BY Credt, Cretm, BID


총 레코드 수 는 25000건 정도 됩니다.  BID, PID 를 제외한 모든 항목은 Null 값이 있을 수 있습니다.


어떤 부분을 점검해봐야 할까요? 

자동 커밋 설정은 꺼져있습니다.


테스트 후 추가로 발견한 내용입니다. 


SUBSTR(POSTCD, 1, 3)||  '-' ||  SUBSTR(POSTCD, 4, 3)AS "우편번호", 


을 POSTCD AS "우편번호", 로 바꿔서 쿼리 해보니 정상적으로 동작하네요. 

substr() 같은 함수 사용시 레코드셋 컨트롤에 문제가 있을 수 있나요? 


===============================================================


추가로 더 확인 된 내용입니다. 


위에 말씀 드렸던 SUBSTR() 함수 사용 자체가 아니라 SUBSTR() 이든 서브 쿼리를 사용 하던지 

레코드를 그대로 가져오는 방법 이외에 별도의 편집을 했을 때 (NULL) 값이 나오면 위와 같은 문제가 발생 하는 것 같습니다.

혹시 DB 옵션에서 NULL 값에 대한 처리를 하는 설정값이 있는지요?