2009-11-25 1 views
2

BDE를 통해 Interbase에 연결된 TQuery의 많은 부분에서이 오류가 발생합니다. 정확한 메시지는 다음과 같습니다Interbase 오류 : SQLDA 누락 또는 부정확 버전 또는 잘못된 숫자/변수 유형

General SQL Error. Dynamic SQL Error, SQL error code = -804, SQLDA missing or incorrect version, or incorrect number/type of variables.

메시지는 내가 열려고로/디자인 타임에 TQuery을 편집하거나 게시물이 런타임에 완료되면 즉시 나타납니다. 런타임에 게시 작업의 경우, 게시 전에 테이블을 준비하면 게시물이 멋지게 완료된다는 것을 발견했습니다.

나는 Craig Stunz's Weblog about same error을 읽었습니다. 내가 가진 매개 변수는 모두 정수입니다. 데이터베이스가 작고 Interbase 2009입니다. 오류 메시지 (선택, 삭제, 업데이트 등)를 표시하는 쿼리에는 특별한 패턴이 없습니다. Delphi에서 쿼리를 실행하면됩니다.

테이블에 숫자 데이터 형식 (15,2)이 있습니다. 2009.

실제 ODS는 (인터베이스 9) 13.1이다 인터베이스로 방언 1 -

테이블은 인터베이스 버전 5에서 복원/백업왔다.

UDF가 없습니다.

잘못 어떤 생각?

[업데이트]하지 오류를 보여주는/오류를 보여주는 쿼리의

샘플 :

없음 오류 :

select MASTER_ID, GL_ACCT_DR, GL_ACCT_CR, 
VENDOR_ID, VENDOR_CODE, 
ORDER_NO, ORDER_DATE, INVOICE_NO, INVOICE_DATE, 
DESCRIP, BUYER, SHIP_VIA, FOB, IS_FREIGHT_PREPAID, 
IS_TAXABLE, TERMS_ID, TERMS_CODE, 
DISC_DAYS_OR_DATE, DISCOUNT_PCT, NET_DAYS_OR_DATE, 
BILL_TO_LOC_ID, SHIP_TO_LOC_ID, 
BILL_TO_LOC_CODE, SHIP_TO_LOC_CODE, 
DISCOUNT_DATE, DUE_DATE 
from P_JRNTRN where 
ENTITY_DB_ID = :PRIMARY_DB_ID and 
SRC_MODULE = 'PJ' 
order by INVOICE_NO 

매개 변수는 정수이다.

오류 :

select * from P_JRNTRN where 
BATCH_ID = :BATCH_ID 
order by MASTER_ID 

매개 변수는 정수이다.

[]이 문제를 해결할 수 없어서 BDE 대신 IBDAC로 옮겼습니다. 나는 더 이상 오류가 없습니다. 감사합니다.

+0

샘플 쿼리를 게시 할 수 있습니까? 오래 전이 오류로 인해 문제가 있었지만 문제가 무엇인지 기억하기가 어려워요. 나는 우리가 캐릭터 세트 불일치로 그것을보고있는듯한 느낌이 들었지 만, 당신에게는 그렇지 않다. – robsoft

+0

문자 집합이 기본값입니다. 나는 필드 유형 불일치가 거의 없다는 것을 알고있다. (번역본은 interbase 5 t0 9). 나는 몇 가지 샘플 쿼리를 게시 할 것이다. - 고마워. – volvox

+0

아, 편집을 게시 해 주셔서 감사합니다. 해당 테이블에 다른 필드가 있습니까 (select *와 select [named] 사이의 차이점을 생각해보십시오)? 해당 테이블의 스키마를 게시 할 수 있습니까?이전 Interbase 및 긴 필드/sproc 이름에 문제가있어서 이상하고 예기치 않은 일을 일으켰지 만 여기에도 문제가 있다고 생각하지 않습니다. (처음 12 자만 사용하고 기억이 약합니다.) 이전 Interbase에서 작동하는 이유와 새로운 Interbase에서 작동하지 않는 이유를 보지 마십시오. 다른 방법이 될 가능성이 더 큽니다. – robsoft

답변

0

내게는 방언 1에 문제가있는 것처럼 보입니다. 당신의 연접을 사용하고 있는지 확인해 주시겠습니까? 또는 기본값 3?

+0

나는 dialect1 (인터베이스 5)에서 dialect 1 또는 3 (interbase 2009) -> 같은 오류로 이동했습니다. 참고 : 모든 쿼리에서 오류가 발생하는 것은 아닙니다. quey의 가장 큰 질문 샘플에 오류가 있고 no가 오류로 게시되었습니다. 감사. – volvox

+1

매개 변수 이름을 변경해보십시오. 필드 이름과 충돌 할 수 있습니다 –

0

같은 문제가있었습니다. DataDirect ODBC InterBase 드라이버를 사용하고있었습니다.

공식 Firebird ODBC 드라이버로 전환했을 때 해결되었습니다.

+0

코드 예제를 게시 할 수 있습니까? 나는 그것을 고칠 수 없다 ... –

+0

@EduardoCuomo, 미안하지만, 나는이 오류를 우연히 만난 응용 프로그램을 기억할 수 없다 ... – bluish

관련 문제