2012-04-08 10 views
7

sto convertendo un'applicazione di grandi dimensioni da Delphi 6 a Delphi 2009.Problemi con mancata corrispondenza del tipo con TBCDField e TfmtBCDfield e compatibilità oracolo

'stato costruito originariamente utilizzare Oracle 8i ma ora deve utilizzare per Oracle 11g. L'applicazione originale è abbastanza felicemente usando oracle 11g e lo farà se lo ricostruirò usando Delphi 6.

Per superare alcuni problemi di visualizzazione dei caratteri/caratteri e altri fastidi minori con l'applicazione sviluppata negli ultimi 11 anni , Ho deciso di ricostruirlo in una versione successiva di Delphi (che è stata anche rimandata per un paio di anni, quindi, usando il 2009.) che è stata acquistata per lo scopo. Ora ho sconfitto i 550 + Compiler Warnings su questo e quello e l'altro.

Ma ora quasi ogni tavolo/set di dati provo ad aprire contro la mia prova report di database Oracle 11g "Tipo non corrispondente per il campo 'xxxxxx' Expecting BCD FmtBCDField reale.

Esiste un modo per aggirare questo senza aprire tutto 80+ i datamodules che garantiranno la compatibilità con con l'installazione del database dei client? Non mi interessa cambiarli tutti ma non posso testarlo sul database live senza un sacco di problemi e non voglio farlo solo per ottenere il errore opposto sul sito del cliente!

Questi sono quasi tutti i campi persistenti in TClientDataSet connessi alle query ADO ma sono accessibili sed utilizzando FieldByName in (ancora quasi tutti) i casi.

Qualsiasi idea?

+0

Ciao, ho avuto lo stesso problema. Solo un suggerimento: in primo luogo, provare a eseguire l'applicazione eseguibile e verificare se il problema persiste. a volte funziona bene su eseguibile ma ottiene alcuni errori durante il debug. secondo, hai detto usando ADO. Immagino che usi il driver ODBC per Oracle 11g. Forse il problema è che il driver ODBC o ADO stesso. – theodorusap

risposta

0

Avevo un problema simile quando avevo bisogno che l'applicazione DBXpress funzionasse con Oracle 9 e 11. Per qualche ragione DBXpress riconosce alcuni campi NUMBER in modi diversi a seconda della versione del database Oracle. Ho lavorato intorno a esso, lanciando i campi numerici ai campi numerici più grandi e cambiando i campi BCD per i campi FMTBCD in tutte le mie query, il cast forzato DBXpress per riconoscere ogni NUMBER come FMTBCD dal momento che BCD non poteva supportare numeri così grandi, forse sarà lavoro anche su ADO.

Problemi correlati