AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Umstellung auf ADO -Probleme und Fragen
Thema durchsuchen
Ansicht
Themen-Optionen

Umstellung auf ADO -Probleme und Fragen

Ein Thema von dj-pitti · begonnen am 3. Sep 2010 · letzter Beitrag vom 5. Sep 2010
Antwort Antwort
Seite 1 von 2  1 2      
dj-pitti

Registriert seit: 1. Jul 2004
10 Beiträge
 
Delphi 2010 Professional
 
#1

Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 12:38
Datenbank: Access • Version: MDAC 2.8 • Zugriff über: ADO
Hallo miteinander,

nach langjähriger Nutzung der freien Datenbankkomponente EDB und einem Umstieg auf Delphi 2010 bin ich nun gezwungen meine Datenanbindung auf ADO umzustellen.

Soweit habe ich die Anbindung im Griff, nur bei der Umsetzung einiger Dinge benötige ich noch Hilfe:

Ich möchte einen neuen Datensatz einfügen (ohne DB-Navigator und Datenfelder). Ich nehme angenommen zwei Edits und füge den Inhalt mittels des Codes ein:

Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO test (ED_Nr,ED_DATUM) VALUES ("AB31","12.03.2019")');
ADOQuery1.ExecSQL;
Der neue Datensatz ist nun drin, alles wunderbar.

Jetzt meine Frage 1:

- Ein auf der Form befindliches DBGRid registriert die Änderung nicht. Auch ein Refresh auf dem Navigator bringt nichts. Nur ein Neustart zeigt die neu angelegten Datensätze!?

Wie kann ich den aktuellen Datensatz im Grid sofort anzeigen lassen!?

Frage 2:

Welche Komponenten sind grundsätzlich wichtig - wäre es auch möglich die SQL-Befehle per ADOCommand zu machen!?

Wozu ist die ADODataSet gut!?

So, ich hoffe die Fragen waren jetzt nicht so

Viele Grüße, Silvio
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 13:12
Hallo Silvio,

zu Deiner ersten Frage,
hol Dir die Daten, die Du brachst und wann Du sie brauchtst immer per Query!

Ich mißtraue diesen Komponenten auf das heftigste.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
dj-pitti

Registriert seit: 1. Jul 2004
10 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 13:25
Hallo K-H

auch wenn das garantiert nicht für die erste Frage ist nehme ich mir dies an ...

Also immer TADOQuery nehmen?

Wie ist denn bei ADO überhaupt die Behandlung von Recordssets geregelt? Sprich ich lasse mir per WHERE bestimmte Datensätze auslesen, wie komm ich dann an diese ran!?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 13:46
- Ein auf der Form befindliches DBGRid registriert die Änderung nicht. Auch ein Refresh auf dem Navigator bringt nichts. Nur ein Neustart zeigt die neu angelegten Datensätze!?

Wie kann ich den aktuellen Datensatz im Grid sofort anzeigen lassen!?
Hier dürfte das bescheuerte Caching-Verhalten der JET-Engine mitspielen. Wurde schon mal öfters gefragt und dürfte hier über die Suche zu finden sein.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 15:01

Also immer TADOQuery nehmen?
Ich meine Ja
Wie ist denn bei ADO überhaupt die Behandlung von Recordssets geregelt? Sprich ich lasse mir per WHERE bestimmte Datensätze auslesen, wie komm ich dann an diese ran!?
Da kann ich nur sagen wie ich es mache:
Delphi-Quellcode:
for i:=0 to .query.fields.count-1 do
          ..:=query.fields[i].value
oder
wert1:=query.fieldbyname('Feld1').asstring; asstring wird natürlich durch asfloat etc. ersetzt falls notwendig/sinnvoll.

Die Abfrage sieht dann im Prinzip so aus:
(ich mag repeat lieber als while!)
Delphi-Quellcode:
Query.sql.text:='blabla';
Query.parameters... // falls notwendig
Query.open;
repeat
  wert1:=query.fieldbyname('Feld1').asstring;
  .....
  query.next;
until query.eof;
query.close;
Die genaue Syntax ist allerdings von der verwendeten Komponente abhängig!
(und Fehlerbehandlung hab ich mir auch geschenkt!)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
shmia

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

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 16:09
Hier dürfte das bescheuerte Caching-Verhalten der JET-Engine mitspielen.
Ganau das ist die Ursache.
Wenn man sich an folgende Regeln hält, dann funktioniert es auch mit MS Access.
1.) es gibt genau eine einzige ADOConnection pro Datenbank
Also niemals ohne ADOConnection arbeiten (obwohl das möglich wäre)

2.) Alle anderen ADO Komponenten (TADOQuery, TADODataset, TADOCommand, TADOTable) werden mit dieser ADO Connection verknüpft

3.) Property CursorLocation auf clUseServer setzen.
Das gilt nur für MS Access (Jet Engine).
Bei allen anderen Datenbanken (MS SQL Server) ist clUseClient die bessere Einstellung.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 16:31
(ich mag repeat lieber als while!)
Und wenn kein Datensatz zurückgeleifert wird (also keiner existiert) ?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 17:04
Wir Arbeiet seit Jahren nur nocht mit Adodataset, TAdoQuery hat bei Bestimmten Anforderungen Probleme gemacht (ich weiß leider nicht mehr welche).
Bei den AdoDatasets ist Requery das Kommando für die Aktualisierung, besser Du kapselst es mit eine Requery4Bookmark.
"Befehle" setzt Du am einfachsten per Connection.Execute ab.

Sehr schö lassen sich hier auch Master/Detail Beziehungen abarbeiten.

z.B.
Master:
ADSMaster.Commandtext := 'Select * from Adressen where was auch immer order by ...


Detail:
ADSDetail.CommandText := 'Select * from Rechnungen where Adressen_ID=:ID oder by Datum'


Datail.Datasource := Master_SRC
Datail.Masterfields := ID
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 17:05
(ich mag repeat lieber als while!)
Und wenn kein Datensatz zurückgeleifert wird (also keiner existiert) ?
Das gehört für mich zur Fehlerbehandlung
Delphi-Quellcode:
if not query.eof then begin
  // Aufnahme der Daten vorbereiten
  repeat
    //Daten holen
  until Query.eof; // ggf. eine andere Abbruchbedingung z.B. 5 Datensätze gelesen (solls geben!)
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Umstellung auf ADO -Probleme und Fragen

  Alt 3. Sep 2010, 17:11
Hier dürfte das bescheuerte Caching-Verhalten der JET-Engine mitspielen.
Ganau das ist die Ursache.
Wenn man sich an folgende Regeln hält, dann funktioniert es auch mit MS Access.
1.) es gibt genau eine einzige ADOConnection pro Datenbank
Also niemals ohne ADOConnection arbeiten (obwohl das möglich wäre)
Es ist möglich!
Wo liegt das Problem? werden die Daten jeweils parallel durch die Connection geschoben wobei die eine nichts von der anderen weiß? (commit)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 22:43 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