Hej! Det finns ingen chans att du har en felaktig deklaration när du tar värdet från recordsetet? Hej! Hej. Tackar för det tipset Uffe! DAO - Oracle värdefel vid recordset.
Finns det någon som har någon aning om var man skall söka efter felet när man via DAO kopplar till en Oracle databas och läser ut värden men får felaktiga värden i svar. Vi har en applikation som varit i drift i ett antal år > 5 och hela tiden använt sig av DAO för att koppla till Oracle. Drivern som används för att koppla är den samma hela tiden en 8.00.4 driver.
Genom åren har vi använt DAO 3.5 och nu 3.6 men nu börjar en del nyare maskiner få fel värden i dataöverföringen från Oracle. Det spelar ingen roll om vi använder den gamla appen med DAO 3.5 för den har också slutat fungera.
Än så länge så är det ett fåtal maskiner som har det här problemet men det verkar bli fler och fler. Nästan alla värden förs över på ett korrekt sätt. Det är bara värden i fält av typen NUMBER(n,p) där n och p kan vara av varierande heltal > 0 som har det här problemet.
Värdena hämtas genom att ett Dao.recordset fylls från Oracle med hjälp av en sql fråga. Men värdena i recordsetet är då felaktiga.
Det som händer är att om ett värde finns i Oracle som typ 45,5624 så överförs det som 455624 altså ett helt felaktigt tal. Värden som börjar med 0 typ 0,345 förs över som 0 eller null beroende på regionala inställningar.
Vi har även testat att länka in tabeller till Access från Oracle på dessa maskiner och samma fel får man då också. Vi har kollat med olika regionala inställningar utan framgång. De maskiner som fungerar har samma inställningar.
Nu tror jag att det kan vara i nån dll eller nånstans som typmappningen sker.
Är det nån som har nån ide om var man ska söka efter felet.
Applikationerna som har detta problem är spridda över hela världen och är av både nyare och gamlare versioner och de förväntas fortsätta fungera som de är utan omkompilering.
PS
Det finns mycket problem på ABB nuförtiden.
DS
Leif PSv: DAO - Oracle värdefel vid recordset.
Att en variabel deklarerad int inte tar 12,32243 - men däremot variant eller kanske datatypen long osv.
Det som låter konstigt är att det har fungerat förrut vilket måste innebära att något av lagren förändrats. Varför inte på just det anropet gå över till ole-db och prova om datat kommer in rätt.
Jag tror spontant att det har något med att något av lagren tolkar datatypen felaktigt.
Hälsningar
/PelleSv: DAO - Oracle värdefel vid recordset.
>>Det finns ingen chans att du har en felaktig deklaration när du tar värdet från recordsetet?
Nix för värdet är fel även när man kör debug.print på fältet direkt från recordsettet.
>>Det som låter konstigt är att det har fungerat förrut vilket måste innebära att något av lagren förändrats. Varför inte på just det anropet gå över till ole-db och prova om datat kommer in rätt.
Den här delen av appen är skriven i Visual Basic. Om jag byter DAO mot ADO för att testa så kommer värdet in rätt.
>>Jag tror spontant att det har något med att något av lagren tolkar datatypen felaktigt.
Jag tror också det men att lokalisera i vilket lager och sen peka ut en speciell component som är boven i dramat verkar lurigt.
Tack i alla fall. Jag hopppas att så småningom hitta var felet uppstår. Det vore naturligtvis lättare om man var lite mer insatt i hur den här tolkningen mellan lagren går till.
Leif PSv: DAO - Oracle värdefel vid recordset.
Har inte riktigt koll på DAO, ADO mm... men,
är du helt hundra på att nationella inställningar är lika överallt ?
Har för mig att så länge du inte använder JDBC så finns alltid
SQL*Net/Netx i botten med sina inställningar.
Har nedanstående parametrar ändrats på servern eller klienten ?
På klienten finns de i registryt under nyckeln
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE eller
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEx
Om dessa saknas på klienten gäller serverns inställningar.
NLS_LANG = övergripande NLS inställning.
NLS_xxxx_FORMAT, tex NLS_DATE_FORMAT
NLS_NUMERIC_CHARACTERS = ",."
Hoppas att du blir något klockare.
/UffeSv: DAO - Oracle värdefel vid recordset.
Det var precis vad jag behövde för att fixxa det hela. Hade bara kollat regionala installningar i kontrollpanelen och de var lika på fungerande maskiner och icke fungerande men de registersettings som du tipsade om skilde sig åt så jag kopierade över de settings som fanns i de fungerande maskinerna och då fungerar allt som det ska igen.
*** Tackar så väldans mycke Uffe. ***
Leif P