Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO - Allgemeine Frage zum Recordset (https://www.delphipraxis.net/136967-ado-allgemeine-frage-zum-recordset.html)

Real-TTX 11. Jul 2009 11:00

Datenbank: Access • Zugriff über: ADO

ADO - Allgemeine Frage zum Recordset
 
Hallo,

Ich habe zwei Fragen bezgl. ADO und dessen Recordset...

1. Gibt es eine Möglichkeit eine Ergebnismenge (die mit Select abgefragt worden ist) zu ändern ? Ich bekomme eine Menge und diese ändere ich und schicke sie anschließend wieder an die Datenbank zurück?

2. Wenn ich eine aktive Verbindung habe, wie füge ich Datensätze hinzu OHNE SQL wie "INSERT INTO xy..." ?

Gruß, Real-TTX

cherry 11. Jul 2009 11:53

Re: ADO - Allgemeine Frage zum Recordset
 
Zitat:

Zitat von Real-TTX
1. Gibt es eine Möglichkeit eine Ergebnismenge (die mit Select abgefragt worden ist) zu ändern ? Ich bekomme eine Menge und diese ändere ich und schicke sie anschließend wieder an die Datenbank zurück?

Mit der Ergebnismenge kannst du ja eigentlich machen was du willst. Ich verstehe leider nicht genau was du damit erreichen willst.

Zitat:

Zitat von Real-TTX
2. Wenn ich eine aktive Verbindung habe, wie füge ich Datensätze hinzu OHNE SQL wie "INSERT INTO xy..." ?

Wo willst du die Datensätze hinzufügen? in die Datenbank? in ein DBGrid?
Wenn du eine SQL Datenbank hast, dann kannst du dort (in die Datenbank) nur einzelne Datensätze hinzufügen mit INSERT...

Real-TTX 11. Jul 2009 12:02

Re: ADO - Allgemeine Frage zum Recordset
 
Zitat:

Zitat von cherry
Mit der Ergebnismenge kannst du ja eigentlich machen was du willst. Ich verstehe leider nicht genau was du damit erreichen willst.

Naja.. Ich meine: Wenn ich dann die Daten innerhalb des Ergebnisses änder. Kann ich die einfach mit .Update wieder hochschicken?

Zitat:

Zitat von cherry
Wo willst du die Datensätze hinzufügen? in die Datenbank? in ein DBGrid?
Wenn du eine SQL Datenbank hast, dann kannst du dort (in die Datenbank) nur einzelne Datensätze hinzufügen mit INSERT...

Gibt es keine Möglichkeiten um einfach mit .AddNew Daten hinzufügen kann? Also ein AddNew auf meinem QueryObject zb.....

Gruß, Real-TTX

sx2008 11. Jul 2009 12:32

Re: ADO - Allgemeine Frage zum Recordset
 
Zitat:

Zitat von Real-TTX
1. Gibt es eine Möglichkeit eine Ergebnismenge (die mit Select abgefragt worden ist) zu ändern ? Ich bekomme eine Menge und diese ändere ich und schicke sie anschließend wieder an die Datenbank zurück?

Delphi-Quellcode:
AdoQuery1.SQL.Text := 'SELECT * FROM Tabelle';
AdoQuery1.Open;
// bestimmten Datensatz suchen (Locate ist langsam, aber ich will nur zeigen, dass man bel. Datensätze ändern kann)
if not AdoQuery1.Locate('Artikel', 'Windows Vista', []) then raise Exception.Create('Artikel nicht gef.');
AdoQuery1.Edit; // Änderungsmodus
// Feldinhalte ändern
AdoQuery1['Preis'] := AdoQuery1['Preis'] * 1.25;
AdoQuery1['LastChange'] := Now;
AdoQuery1.Post; // abspeichern
Zitat:

Zitat von Real-TTX
2. Wenn ich eine aktive Verbindung habe, wie füge ich Datensätze hinzu OHNE SQL wie "INSERT INTO xy..." ?

Genau gleich wie oben, nur statt .Edit verwendest du .Append und musst natürlich alle Felder (die NOT NULL sind) bestücken.
Datensätze über das Dataset einzufügen ist etwas langsamer als direkt über INSERT INTO aber oftmals
spielt das keine Rolle und ist deutlich angenehmer, als die INSERTS selbst zu erzeugen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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