Hej! Lotta, Tack, Dennis! Lotta, Jag har ORAhome8.1 installerat, men känner mig inte så hemma där, tyvärr. Nu har jag kollat i ODBC och den Oracledriver jag har är 8.01.06.00. Det borde väl vara OK? Lotta, Ok, mitt fel... Jag har svårt för alla benämningarna. Ahhh, nu fattar jag! OLEDB - ODBC! Där har vi skillnaden!!! Om jag kör med Provider=OraOLEDB.Oracle och ändrar i sql till Problem med data från db till Excel
Hämtar priser från en Oracledb till xl via ADO. Sql-satsen frågar bl.a mot en view.
När datat skrivits in i xl så visas det så här: 289283233513799
Det värde som returneras ser ut så här när jag ställer frågan i SQL-plus: 28,9283234
Datatypen är NUMBER(38)
Jag "äger" inte databasen och har inte skapat view´n, utan hanterar bara rapporter i excel.
Kan nån ge ett tips om hur jag kan manipulera datat så att det visas rätt i xl?Sv: Problem med data från db till Excel
Problemet är att omvandling sker till "Variant/Double" istället för
"Variant/Decimal".
Att använda sig av typen FLOAT kan hjälpa men det kan å andra sidan senare ge problem.
Initialt är problemet relaterat till den OLEDB-driver du använder...
Blir du klokare av detta svar?
Mvh
XL-DennisSv: Problem med data från db till Excel
Förstod nog inte allt, du menar alltså att det inte går att hantera i excel överhuvudtaget?
Men eftersom jag inte "kommer åt" databasen så kan jag väl inte göra nått åt datatyperna heller?
Öppnar db på detta sättet:
db2.ConnectionString = "Provider=MSDAORA.1;Password=*****;User ID=*****;Data Source=*****"
Är det Provider som jag skulle kunna ge mig på att förändra? Eller hämta datat på något annat sätt?
Hjälp, vad okunnig jag känner mig....
----------------------------------------------------------------------------------
Tillägg: Det fungerar hur bra som helst med andra valutor. Dvs de visas med decimaler, om det finns.Ovanstående gäller EUR.
Slänger med lite kod också. Vad står adCmdText för, tro?
rs.Open sqlstr, db2, adOpenForwardOnly, adLockBatchOptimistic, adCmdText
----------------------------------------------------------------------------------
Testade nyss med att byta ut MSDAORA till OraOLEDB.Oracle, men det blev ingen skillnad. Hmm...Sv: Problem med data från db till Excel
I mitt svar glömde jag att skriva ut i klartext slutsatsen använd inte MS OLE DB-provider....
Gör som så här:
1.Gå till http://otn.oracle.com/software/content.html
2. Skapa ett konto för att kunna ladda ned datafiler.
3. Hämta hem Oracle Provider for OLEDB
4. Installera och koppla den till din XL-arbetsbok.
Mvh
XL-DennisSv: Problem med data från db till Excel
Har, som jag var in och kluddade i mitt förra inlägg, testat med annan driver med samma resultat som tidigare.
Är ute och letar för fullt bland alla sidor om Oracle + ADO. Blir matt...
Sv: Problem med data från db till Excel
Fråga i samband med detta: Om någon annan än jag ska köra excelfilen så måste väl även dessa ha drivern? Är nog därför som MS används istället.
Behöver jag ändra på något annat än bara Provider när jag testar?Sv: Problem med data från db till Excel
Du skrev att du använder ADO i ditt första inlägg.
Jag hänvisade till Oracles hemsida för att hämta
hem Oracles OLEDB Provider utifrån din information.
ODBC är en annan typ av databaskoppling och där
finns mycket riktigt en Oracle ODBC att tillgå.
Men för att vi ska kunna hjälpa måste du hjälpa oss
att fastslå vilken typ av databaskoppling du har.
Enklast är att tilhandahålla koden för kopplingen :-)
Mvh
XL-DennisSv: Problem med data från db till Excel
Provider och Driver är inte samma sak? Använder man inte ADO när man utnyttjar Connection och Recordset? Är jag ute och cyklar? **Märks att det är fredag**
Så här ser koden ut (som jag fått från dba)
????= hemligt ;-)
Har kommenterat ut den som jag brukar använda och lagt till testraden.
<code>
Dim db2 As New ADODB.Connection
Dim rs As New ADODB.Recordset
'db2.ConnectionString = "Provider=MSDAORA.1;Password=?????;User ID=??????;Data Source=??????"
db2.ConnectionString = "Provider=OraOLEDB.Oracle;Password=?????;User ID=??????;Data Source=??????"
db2.Open
sqlstr = "SELECT t1.PRICE, t1.CPARTY, t1.REGION," _
& " t2.STARTDATE, t2.ENDDATE, t1.PCODE, t1.CDATE" _
& " FROM ???_SPTRADES_VIEW t1, ????_STANDARDPROD t2" _
& " WHERE t2.STANDARDPRODUCTID = t1.PRODUCTID " _
& " AND (t1.PCODE like 'VSOP')" _
& " AND (t1.CDATE <= TO_DATE('" & Datum & "','YYYY-MM-DD'))" _
& " AND (t1.REGION <> 'XXX')" _
& " ORDER BY t1.REGION DESC"
rs.Open sqlstr, db2, adOpenForwardOnly, adLockBatchOptimistic, adCmdText
' Skriver ut recordset
For i = 0 To rs.Fields.Count - 1
ws.Cells(2, i + 1).Value = rs.Fields(i).Name
Next
rad = 3
Do Until rs.EOF
For i = 0 To rs.Fields.Count - 1
ws.Cells(rad, i + 1).Value = CStr(rs.Fields(i).Value)
Next
rad = rad + 1
rs.MoveNext
Loop
rs.Close
db2.Close
</code>
I övrigt är det bara en massa VBA för att beräkna och stuva om...Sv: Problem med data från db till Excel
Jag var in hos Oracle men blev feg och tordes inte ladda ner Providern. Kan det inte hända skumma saker med min nuvarande installation av ORA? Måste fråga vår DBA som inte är här idag...
Och som sagt om jag sitter och testar med OLEDB så måste väl mina slutanvändare ha samma status på sina maskiner?
Kan det där alldeles för dåligt.
Nåja. Du ska ha så himla mycket tack. Dennis! Du har varit tålmodig.
Nu är det dags att gå hem och fira helg. Ska ta tag i det igen på måndag...Prolog...
TO_CHAR(t1.PRICE) så får jag in värdena på rätt sätt.
Tack för hjälpen!