Announcement

Collapse
No announcement yet.

ADO - to be or not to be ??? Grundsatzfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ADO - to be or not to be ??? Grundsatzfrage

    Also langsam verzweifel ich und denke ADO ist eigntlich zu nichts Gut.

    Ein einfaches Beispiel:

    access.mdb: Tabellen Knoten, Kanten, ....
    Knoten:
    ID;Name;Wert1;Wert2;Wert3;....

    Kanten:
    ID;vonKnotenID;nachKnotenID;Wert1;Wert2;Wert3;Wert 4

    Also ich hab die ADOKomponenten (Table) auf Table-Dirket umgestellt.
    Dadurch enstehen einige Probleme, die ich gerne verstehen möchte und auch vielleicht daraus lerne wie mans prinzipiell besser macht:

    ich möchte den Datensatzeiger der Knoten-Tabelle auf einen bestimmten Datensatz stellen und diesen Datensatz editieren.
    Bisher hab ich LOCATE dafür benutzt. Geht nun nicht mehr "Der Provider kann....."
    Nun bleibt mir nur über einen Filter zu setzen. (Dauert aber eindeutig länger als früher. Außerdem kann ich den Datensatz nicht auf Edit setzen. "Der Provider kann.....".

    Genauso schlimm ist es wenn ich vorher überpürfen muß ob der Datensatz schon da ist (bisher mit Locate) bevor ich entscheide Edit oder Append;

    Bei den letzten beiden Problemen löse ich das Problem indem ich für die Edit bzw. Append Funktion den Filter entferne, wobei ich aber dern aktuellen Datensatz verliere (weis auch nicht warum).

    Ganz schlimm sind Konstrukte wie:

    Kante.vonKnotenID --> suche Datensatz danach in Knoten
    schreibe einen neuen Datensatz in ein neue Tabelle auf Grund der Daten in Kante und gefunden vonKnoten

    Kante.nachKnotenID --> suche Datensatz danach in Knoten (Ohne Kanten satz zu verlassen)
    schreibe einen neuen ....

    Würde damit es funktioniert so Aussehen

    Nimm den Satz aus Kante
    erzeuge einen Filter auf Knoten aus Kante.vonKnotenID
    erzeuge einen neuen Datensatz in neuer Tabelle

    erzeuge eine Filter auf Knoten aus Kante.nach KnotenID

    und so weiter, ziemlich viel Arbeit.

    Vielleicht bin ich ja auch nur Betriebsblind aber es könnte ja auch eine vernünftige Methode geben ganz normale Datenbankoperationen wie mit der BDE oder Native Treibern zu benutzen

    Vielen Dank für das eventuelle öffnen meine leider im Moment etwas verschlossenen Augen

    Euer
    Peter

  • #2
    Hallo,

    >..Also ich hab die ADOKomponenten (Table) auf Table-Dirket umgestellt...

    Wenn TADOTable verwendet wird, würde ich dies sofort ändern. Hinter TADOTable und TADOQuery verbergen sich nur Kompatibilitätskomponenten zur BDE, die in einem "richtigen" Programm nichts zu suchen haben. Statt dessen ist <b>TADODataSet</b> die bessere Wahl - wobei im Fall des Zugriffs auf eine ACCESS-Datenbank die FreeWare-Komponente <b>TBetterADODataSet</b> (Download: <i>http://web.orbitel.bg/vassil/</i>) selbstverständlich noch besser ist :-)

    ADO ist eine eierlegende Wollmilchsau, die im Gegensatz zu DAO primär für SQL-Datenbanken ausgelegt ist. Es gibt viele Einstellungsmöglichkeiten (im Fall von ACCESS ca. 100!) - die allerdings entscheiden, <b>welche</b> Funktionalität zur Verfügung steht. Die Suche nach der Zeichenkette <b>Supports</b> liefert hier im FORUM einige Beispiele.

    Für ACCESS ist folgendes zu empfehlen: <br>
    - TADODataSet (TBetterADODataSet) <br>
    - CursorLocation <b>clUseServer</b><br>
    - CommandType <b>cmdTableDirect</b> <br>
    - Positionieren (Suchen) über <b>Seek</b><br>
    - Einschränken der Ergebnismenge über <b>Filter</b> <br>
    - Variable Sichtweisen über <b>Clone</b&gt

    Comment


    • #3
      danke für die Tipps werd mir mal die andere komponente auch noch anschauen

      Pete

      Comment

      Working...
      X