>

큰 응용 프로그램을 Delphi 6에서 Delphi 2009로 변환하고 있습니다.

원래는 Oracle 8i를 사용하도록 구축되었지만 이제는 Oracle 11g를 사용해야합니다. 원래 응용 프로그램은 Oracle 11g를 매우 행복하게 사용하고 있으며 Delphi 6을 사용하여 다시 빌드하면 그렇게 할 것입니다.

지난 11 년 동안 개발 된 응용 프로그램에서 일부 문자 세트/문자 표시 문제 및 기타 사소한 문제를 극복하기 위해 이후 버전의 Delphi에서 다시 빌드하기로 결정했습니다. 따라서 2009 년을 사용했습니다.) 나는 이것과 저것에 관한 550 개 이상의 컴파일러 경고를 물리 쳤다.

그러나 이제 테스트 oracle 11g 데이터베이스에 대해 열려고하는 거의 모든 테이블/데이터 세트는 "xxxxxx 필드에 대한 유형 불일치"BCD 실제 FmtBCDField를 예상합니다.

클라이언트 데이터베이스 설치와보증할 모든 80 개 이상의 데이터 모듈을 열지 않고도이 문제를 해결할 방법이 있습니까? 나는 그것들을 모두 바꾸는 것은 마음에 들지 않지만 많은 혼란없이 라이브 데이터베이스에 대해 테스트 할 수 없으며 클라이언트 사이트에서 반대의 오류를 얻기 위해 그것을하고 싶지 않습니다!

이것은 ADO 쿼리에 연결된 TClientDataSet의 거의 모든 영구 필드이지만 거의 모든 경우 FieldByName을 사용하여 액세스합니다.

모든 아이디어?

  • 답변 # 1

    Oracle 9와 11에서 모두 작동하기 위해 DBXpress 애플리케이션이 필요할 때 비슷한 문제가있었습니다. 어떤 이유로 DBXpress는 Oracle 데이터베이스 버전에 따라 다른 방식으로 일부 NUMBER 필드를 인식합니다. 모든 쿼리에서 숫자 필드를 더 큰 숫자 필드로 캐스팅하고 FMTBCD 필드의 BCD 필드를 변경하여 문제를 해결했습니다. 캐스트로 인해 DBXpress는 BCD가 큰 숫자를 지원할 수 없으므로 모든 NUMBER를 FMTBCD로 인식하도록했습니다. ADO에서도 작업하십시오.

  • 이전 java : 다른 예외에 중첩된 예외 잡기
  • 다음 aws lambda - Amazon API Gateway로 POST URL 인코딩 양식