AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Probleme mit TADOQuery wenn zuviele Spalten?
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TADOQuery wenn zuviele Spalten?

Ein Thema von Jumpy · begonnen am 27. Apr 2011 · letzter Beitrag vom 3. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#1

Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 27. Apr 2011, 16:24
Datenbank: Oracle • Version: 10g • Zugriff über: ADO
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ß).
Ralph

Geändert von Jumpy (27. Apr 2011 um 16:30 Uhr)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 27. Apr 2011, 18:01
Hast du mal geschaut, was in der Errors Collections drinsteht?
http://www.delphipraxis.net/24671-ad...-anzeigen.html
Andreas
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 27. Apr 2011, 18:38
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 .. ?
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 27. Apr 2011, 20:34
Welcher Oracle Treiber? Der von Oracle oder der von MS oder .. ?
Der von MS ist schrott und seit 1/2 endlich offziell von MS abgekündigt.

Für Oracle-Zugriff würde ich eh den direkten Zugriff verwenden wie ihn Devart bietet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 27. Apr 2011, 22:09
@shmia:
Werde ich morgen auf der Arbeit mal ausprobieren, wußte nicht das sowas geht. e.message war alles was ich bisher kannte

@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.

Für Oracle-Zugriff würde ich eh den direkten Zugriff verwenden wie ihn Devart bietet.
Was ist denn direkter Zugriff? Ich bin ja schon froh, dass ich ADO benutzen soll und nicht die BDE (was man so hört).

@all: Danke schon mal für die Anregungen. Werd morgen mal weiter dran rumtüffteln.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 27. Apr 2011, 22:39
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.
Das ist sehr wahrscheinlich der Grund. Deshalb ist es so problematisch sich auf soche Treiber zu verlassen. Bei MS kann man wenigstens davon ausgehen das die Windows-Updates dafür sorgen das fast alle Rechner ähnlich aktuellen Treiberstand haben.


Was ist denn direkter Zugriff? Ich bin ja schon froh, dass ich ADO benutzen soll und nicht die BDE (was man so hört).
Direkter Zugriff = Keine (evtl. Fehlerhafte) Zwischenschicht:

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?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 09:32
Hallo, mal ein Update zur Lage der Nation...

Aktueller Weg:
Anwendung -> ADOExpress -> ADO -> OLE DB Provider von Oracle -> NETx-Treiber -> DB
Ich benutze mit ODBC ja glaub ich noch eine Schicht mehr, oder zumindest einen anderen Provider. Hab mir nochmal den Connection-String angeschaut, da ist der Provider MSDASQL.1 (MS OLE DB Provider for ODBC Drivers). Dann noch der ODBC-Treiber als weitere Schicht?

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
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 09:36
..., da ist der Provider MSDASQL.1 (MS OLE DB Provider for ODBC Drivers).

Ü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).
Der obige Eintrag weist auf einen MS-Treiber hin. Und dieser wird nicht aktualisiert wenn man den Oracle-Client aktualisiert.
Da MS diesen abgekündigt hat wird diese über kurz oder lang gar nicht mehr ausgeliefert, sprich: Dein Programm startet gar nicht mehr.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 10:27
Zitat:
..LONG.. leider können wir daran nichts ändern..
Da hilft Dir vermutlich mittelfristi auch ein toller Third Party Treiber nicht unbedingt weiter. LONG soll nicht mehr verwendet werden, der Typ wird nur noch aus Kompatibilitätsgründen unterstützt.

LOB ist angesagt.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 10:59
..., da ist der Provider MSDASQL.1 (MS OLE DB Provider for ODBC Drivers).

Ü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).
Der obige Eintrag weist auf einen MS-Treiber hin. Und dieser wird nicht aktualisiert wenn man den Oracle-Client aktualisiert.
Da MS diesen abgekündigt hat wird diese über kurz oder lang gar nicht mehr ausgeliefert, sprich: Dein Programm startet gar nicht mehr.
"MS OLE DB Provider for ODBC Drivers", so hab ich das verstanden, ist das MS-Ding, um ODBC-Datenquellen ansusprechen. "Ding" weil ich nicht weiß, was es wirklich ist, beim Erstellen einer Connection hab ich es unter dem Punkt Provider ausgewählt.

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.
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz