Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem beim schreiben in DB (https://www.delphipraxis.net/78722-problem-beim-schreiben-db.html)

Pepsen 10. Okt 2006 10:23

Datenbank: Paradox • Version: 7 • Zugriff über: Query

Problem beim schreiben in DB
 
VORSICHT ANFÄNGER!

hallo erstmal...

...ich hab eine kleine Adressdatenbank (Paradox 7) erstellt und greife mit einem Query auf sie zu! Nun will ich mit einem ButtonClick aus 3 Edit-Feldern (editName, editVorname, editOrt) in die Datenbank schreiben. Es kommt aber leider die Fehlermeldung:

Query1: Eine Datenmenge, die nur zum Lesen ist, kann nicht geändert werden!

der zugehörige Quellcode sieht so aus:
Delphi-Quellcode:
query1.Open;
    query1.Append;
    query1.FieldByName('name').asstring := editname.Text;
    query1.FieldByName('vorname').asstring := editvorname.Text;
    query1.FieldByName('ort').asstring := editort.Text;
    query1.post;
ist dies so überhaupt möglich oder muss ich hier mit SQL Anweisungen arbeiten? Da hab ich noch nicht so die Ahnung von!
Die Query-Eigenschaften sehn so aus:

Code:
object Query1: TQuery
    DatabaseName = '.\'
    DataSource = DataSource1
    RequestLive = True
    SQL.Strings = (
      'SELECT Vorname, Ort, Name'
      'FROM addyDB'
      'ORDER BY Name, Vorname, Ort')
muss ich da etwa was ändern?

mkinzler 10. Okt 2006 10:33

Re: Problem beim schreiben in DB
 
-Erzeuge ein UpdateObject (TUpdateSQL)
-Füge die entsprechenden Abfragen ein ( z.B. über Editor)

Maja Jessica 10. Okt 2006 10:49

Re: Problem beim schreiben in DB
 
Hi,

mit Requestlive kam ich nie so recht klar. Hatte es dann mit einer Table gemacht.
Zitat:

Table.Active := true;
Table.Append;
Table.FieldByName('name').asstring := editname.Text;
Table.FieldByName('vorname').asstring := editvorname.Text;
Table.FieldByName('ort').asstring := editort.Text;
Table.post;
Table.Active := false;
Schätze mal, das du mit Query.Open eine Abfragemenge bekommst, in die du dann nicht schreiben kannst.

Ansonsten ist die Sache mit SQL-Strings garnicht mal soo schwer.

Pseudocode:
Zitat:

Query.SQL.Clear;
Query.SQL.Add('Insert into Tabelle (Name,Vorname,Ort) Values ("Sprudel","Klara","Bonn")');
Query.ExecSQL;

Pepsen 10. Okt 2006 10:59

Re: Problem beim schreiben in DB
 
danke für eure Antworten! Hab es jetzt ein wenig anders gelöst! Da war jmd schneller!
und zwar hab ich das "ORDER BY Name, Vorname, Ort" rausgenommen, weil es mir das "RequestLive = True" kaputt gemacht hat!
nun ist zwar die sortierung dahin aber das werd ich dann halt anders lösen!

Zitat:

Zitat von Maja Jessica
Hi,

mit Requestlive kam ich nie so recht klar. Hatte es dann mit einer Table gemacht.
Zitat:

Table.Active := true;
Table.Append;
Table.FieldByName('name').asstring := editname.Text;
Table.FieldByName('vorname').asstring := editvorname.Text;
Table.FieldByName('ort').asstring := editort.Text;
Table.post;
Table.Active := false;

jo, mit TTable wäre das kein Prob gewesen! Hab nur halt leider die Auflage es mit nem Query machen zu müssen!

Zitat:

Zitat von Maja Jessica
Schätze mal, das du mit Query.Open eine Abfragemenge bekommst, in die du dann nicht schreiben kannst.

Ansonsten ist die Sache mit SQL-Strings garnicht mal soo schwer.

Pseudocode:
Zitat:

Query.SQL.Clear;
Query.SQL.Add('Insert into Tabelle (Name,Vorname,Ort) Values ("Sprudel","Klara","Bonn")');
Query.ExecSQL;

das werd ich doch galtt mal ausprobieren! Kann ich denn bei VALUES auch einfach anstatt feste Werte editname.text eingeben?

Maja Jessica 10. Okt 2006 14:25

Re: Problem beim schreiben in DB
 
Hi,

klar mit
Delphi-Quellcode:
Query.SQL.Clear;
Query.SQL.Add('Insert into Tabelle (Name,Vorname,Ort) Values ('+QuotedStr(EditName.Text)+',"Klara","Bonn")');
Query.ExecSQL;
MJ


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