![]() |
Datenbank: Oracle • Version: 10g • Zugriff über: ADO
Probleme mit TADOQuery wenn zuviele Spalten?
Hallo,
ich habe in Delphi6 eine Anwendung erstellt, mit der man auf unsere DB zugreifen kann. Jetzt hat sich gezeigt, dass es bei einer einzigen Tabelle Probleme gibt. Die aussagekräftige Fehlermeldung lautet: Unbekannter Fehler! Die Tabelle ist recht breit, ca. 170 Spalten. Vllt. liegt es daran? Habe zum Testen ein Mini-Projekt gebaut: DBGrid-TDataSource-TADOQuery (Rechner mit XP, 32bit) Ist das Select-Statement auf einige Spalten beschränkt, klappt es: Select Sp1, Sp2 From Tabellenname Will ich aber alle Spalten haben, kommt diese tolle Fehlermeldung. Select * From Tabellenname Habe dann das Mini-Projekt auf unserer VM (Win7, 64bit) in Delphi2010 nachgebaut, SQL-Statements funktionieren hier beide! Keine Fehlermeldung. Ich vermute, dass es irgendwie an der ADO-Komponente liegt. Ist die in D6 anderes als in D10? Was könnte es noch sein? Könnte es auch am Rechner liegen? Edit: Noch als ich obiges geschriben habe, ist mit eingefallen, dass ich die Frage, ob es am Rechner liegt selber klären kann. Habe beide exe, die von D6 und die von D10 erzeugte, auf meinem armen kleinen alten XP Rechner laufen lassen. Bei beiden kam die Fehlermeldung. Bei exe funktionieren aber in der Win7-VM problemlos und auch mein ursprüngliches Programm läuft da fehlerfrei. Fragt sich nur, was kann es genau sein? (Obwohl die VM 64 bit ist, wird doch mit 32 bit Treibern gearbeitet, soweit ich weiß). |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
Hast du mal geschaut, was in der Errors Collections drinsteht?
![]() |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
Schau Dir auch mal die Feldtypen an.
Nicht alles was mit irgendeinem anderen Treiber reingekommen ist, kommt mit ADO wieder raus. Übliche Verdächtige sind z.B. Datumsfelder mit sehr großen/kleinen Werten. Ich würd zur groben Prüfung mal ein Select bauen mit allen Spalten außer Date Spalten. Welcher Oracle Treiber? Der von Oracle oder der von MS oder .. ? |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
Zitat:
Für Oracle-Zugriff würde ich eh den direkten Zugriff verwenden wie ihn Devart bietet. |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
@shmia:
Werde ich morgen auf der Arbeit mal ausprobieren, wußte nicht das sowas geht. e.message war alles was ich bisher kannte :oops: @jobo: Feldtypen kann ich auch mal gucken. Ist bei 170 Feldern aber ein Angang. Komisch aber das es bei einer Maschine funzt, bei der anderen aber nicht. Treiber natürlich von Oracle, wobei auf dem Rechner, wo es funzt ist 11g drauf, auf dem wo es nicht geht irgendwas mit Ora92 (ist das dann 9i oder so). Könnte natürlich ein Grund sein, warum es mal geht, mal nicht. Zitat:
@all: Danke schon mal für die Anregungen. Werd morgen mal weiter dran rumtüffteln. |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
Zitat:
Zitat:
Aktueller Weg: Anwendung -> ADOExpress -> ADO -> OLE DB Provider von Oracle -> NETx-Treiber -> DB Direkter Weg Anwendung -> DevArt-Kompos -> DB bzw. falls man auf den Net-Provider aufsetzen will Anwendung -> DevArt-Kompos -> NETx-Treiber -> DB Wo weren sich wohl vermutlich wenige Fehler verstecken? |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
Hallo, mal ein Update zur Lage der Nation...
Zitat:
Hab nun testweise mal auf ODBC verzichtet und benutze nun direkt den Oracle Provider for OLE DB und gehe damit direkt an die Datenbank und siehe da, es geht. D.h. es scheint wirklich am ODBC-Treiber zu liegen, dass es mal geht (neuer Treiber) und mal nicht (alter Treiber). Desweiteren habe ich auch durch mühevolles rumraten herausgefunden, dass nicht, wie zunächst vermutet, die "Breite" der Tabelle schuld ist, sondern ein Datenfeld vom Typ Long. Habe daraufhin weitere Tabellen mit Long-Datentypen gefunden, die auch Ärger machen. Leider können wir daran nichts ändern. Ach ja, die Einstellung "Force Long retrival" oder so ähnl., die man dem ODBC-Treiber mitgeben kann, hat auch nicht geholfen. Über kurz oder lang werden wir also wohl auf neue ODBC_Treiber wechseln müssen (da wir sowieso bald neuere Oracle Clients brauchen, kommt das sowieso irgendwann). Nochbesser wäre wie du gesagt hast, sicher der native Zugriff, aber dazu muss noch viel Überzeugungsarbeit geleistet werden. Danke, aber auf jeden Fall für die Tips |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
Zitat:
Da MS diesen abgekündigt hat wird diese über kurz oder lang gar nicht mehr ausgeliefert, sprich: Dein Programm startet gar nicht mehr. |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
Zitat:
LOB ist angesagt. |
AW: Probleme mit TADOQuery wenn zuviele Spalten?
Zitat:
Es ist aber nicht der ODBC-Treiber, sondern wie gesagt der Provider für den Treiber, oder so? In unserer modernen Maschiene wird (zumindest dem Namen nach) der selber Provider benutzt und da funktioniert es ja. Das einzige was da anders ist, ist halt der ODBC-Treiber, der dann von diesem Provider angesprochen/benutzt wird. Ich gehe daher schon davon aus, das ein Oracle-Client-Wechsel zusammen mit einem ODBC-Treiber-Wechsel das Problem zumindest kurzfristig löst. In allen anderen Punkten habt ihr natürlich recht, das das alles nicht das Wahre ist, aber diese Entscheidungen liegen über meiner Gehaltsstufe (wie eigentlich alles, da ich ja nur der Azubi bin ;-) ). @jobo: s.o. Hinzukommt noch, dass die DB eigentlich zu einer Fremdsoftware gehört, die halt aus welchen Gründen auch immer noch Long-Datentypen benutzt. Das ist öfters schon bemängelt worden, aber ich glaube die Hersteller trauen sich da nicht so ran. Wahrsch. weil keiner weiß, wo es lles knallt, wenn man da mal was ändert. Stichwort Software-Evolution. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz