![]() |
Datenbank: Access • Version: MDAC 2.8 • Zugriff über: ADO
Umstellung auf ADO -Probleme und Fragen
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:
Der neue Datensatz ist nun drin, alles wunderbar.
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO test (ED_Nr,ED_DATUM) VALUES ("AB31","12.03.2019")'); ADOQuery1.ExecSQL; 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 :stupid: Viele Grüße, Silvio |
AW: Umstellung auf ADO -Probleme und Fragen
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 |
AW: Umstellung auf ADO -Probleme und Fragen
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!? |
AW: Umstellung auf ADO -Probleme und Fragen
Zitat:
|
AW: Umstellung auf ADO -Probleme und Fragen
Zitat:
Zitat:
Delphi-Quellcode:
oder
for i:=0 to .query.fields.count-1 do
..:=query.fields[i].value
Delphi-Quellcode:
asstring wird natürlich durch asfloat etc. ersetzt falls notwendig/sinnvoll.
wert1:=query.fieldbyname('Feld1').asstring;
Die Abfrage sieht dann im Prinzip so aus: (ich mag repeat lieber als while!)
Delphi-Quellcode:
Die genaue Syntax ist allerdings von der verwendeten Komponente abhängig!
Query.sql.text:='blabla';
Query.parameters... // falls notwendig Query.open; repeat wert1:=query.fieldbyname('Feld1').asstring; ..... query.next; until query.eof; query.close; (und Fehlerbehandlung hab ich mir auch geschenkt!) Gruß K-H |
AW: Umstellung auf ADO -Probleme und Fragen
Zitat:
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. |
AW: Umstellung auf ADO -Probleme und Fragen
Zitat:
|
AW: Umstellung auf ADO -Probleme und Fragen
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 |
AW: Umstellung auf ADO -Probleme und Fragen
Zitat:
Delphi-Quellcode:
Gruß
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!) K-H |
AW: Umstellung auf ADO -Probleme und Fragen
Zitat:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 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-2025 by Thomas Breitkreuz