![]() |
Datenbank: Delphi-Datenbank • Zugriff über: SQL.Query
Datenbankeintrag über Editfelder
Hallo habe ein kleines Problem was ich irgendwie nicht beseitigt bekomme.
Ich will einen Datenbankeintrag (über Query) hinzufügen, doch wie mache ich das am bestens, wenn ich nicht das Grid nutzen will, sondern Edit-Felder. Villeicht kann mir jemand einen Tipp oder den entsprechenden Code geben. THX Scuby |
Re: Datenbankeintrag über Editfelder
Hai scuby,
Es gibt da verschiedene wege. Zum einen kannst Du dein TDataSet (Query) mit ![]() ![]() Dann kannst Du mit query.FieldByName('blubb').AsString := Edit1.Text den Inhalt von Edit1 in die Spalte blubb keiner Tabelle schreibe. In beiden Fällen ist ein abschliessendes ![]() Von diesem Weg bin ich persönlich abgekommen. Ich arbeite fast nur noch mit reinen SQL-Kommandes. Zum Beispiel;
SQL-Code:
Wenn Du anstelle eines UpDates einen neuen Datensatz einfügen möchtest dann musst Du natürlich mit dem SQL-Kommando INSERT arbeiten.
UPDATE tabelle SET feldname=wert WHERE bedingung
|
Re: Datenbankeintrag über Editfelder
Hallo scuby
Wenn Du über die UpdateSQL Komponente verfügst kannst Du diese mit der Query verbinden. 1 Query UpdateObject 2 mit der rechten Maustaste auf die UpdateSQL UpdateSQL Editor 3 Schlüsselfeld festlegen und Updatefelder 4 SQL erzeugen (kann man auch gut nutzen wenn man zu faul ist SQL-Code zu tippen) 5 Die Queryeigenschaften AutoRefresh = True und RequestLive = True dann kannst du DBEditfelder einsetzen insert edit post.... oder die erzeugten SQLs kopieren und in drei extra SQLs einfügen. Insert Update Delete Dann kannst Du die parameter mit Deinen Edit-werten beschreiben
Delphi-Quellcode:
Gruß texas
Insertsql.parambyname(´Name´).AsString := Edit1.text;
Insertsql.parambyname(´Strasse´).AsString := Edit2.text; Insertsql.parambyname(´Zahl´).AsInteger := strtoint(Edit1.text); //(auf feldtypen achten) . . .insertsql.ExecSQL; |
Re: Datenbankeintrag über Editfelder
Hm.... Irgendwie hilft mir das alles nicht weiter ich habe momentan die volle Blokade in diesem Bereich. Könnte mir jemand ein kleines beispielprogramm mal geben, amit ich mir das mal in der Praxis anschauen könnte.
THX Scuby |
Re: Datenbankeintrag über Editfelder
Liste der Anhänge anzeigen (Anzahl: 1)
Hai scuby,
im Anhang ist ein 08/15 Beispiel. Da fehlen natürlich alle möglichen Abfragen usw. Wie schon erwähnt würde ich normalerweise mit reinen SQL-Befehlen arbeiten. Aber dafür fehlt mir auf die schnelle die Zeit ;-) P.S.: Das Programm arbeitet mit einer ACCESS-DB |
Re: Datenbankeintrag über Editfelder
Danke für das Programm, doch ich wollte es etwas anders machen, villeicht könnt ihr mal gucken, wo hier der Fehler liegt, das er das nicht einträgt,wiefesagt volle blokade!! *wein*
Delphi-Quellcode:
procedure TForm4.Button2Click(Sender: TObject);
var s : String; begin s := 'select Name,Vorname,Gebdat,Straße,hnr,plz,ort,tel,fahrschule from teilnehmer'; query1.close; Query1.Sql.Clear; Query1.Sql.Add(s); Query1.ExecSQL; Query1.Active:=true; if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') or (Edit4.Text = '') or (Edit5.Text = '') or (Edit6.Text = '') then showmessage('Bitte füllen Sie alle Felder mit einem " * " aus!') else begin Query1.FieldByName('Name').AsString := edit1.text; Query1.FieldByName('Vorname').AsString := edit2.text; Query1.FieldByName('Gebdat').AsString := edit3.text; Query1.FieldByName('Straße').AsString := edit4.text; Query1.FieldByName('Hnr').AsString := edit5.text; Query1.FieldByName('PLZ').AsString := edit6.text; Query1.FieldByName('Ort').AsString := edit7.text; Query1.FieldByName('tel').AsString := edit8.text; Query1.FieldByName('Fahrschule').AsString := edit9.text; Query1.FieldbyName('Kurs').ASString := Label2.Caption; Query1.Insert; end; end; |
Re: Datenbankeintrag über Editfelder
Hi Scuby,
in Feldnamen (Straße) solltest du besser keine Sonderzeichen verwenden. Außerdem solltest du deinen Komponenten und der Form einen aussagefähigen Namen geben. Dann solltest du deinen Code besser organisieren, damit er leichter zu lesen ist. Was ist der Primärschlüssel deiner Tabelle? Wenn du die Tabellen-Struktur für ein Insert benötigst, warum holst du dann alle Datensätze aus der Tabelle? Wenn du im Feld Kurs etwas eingeben willst, warum fehlt dann dieses Feld in deiner Abfrage? Bist du sicher, dass deine Prüfbedingung und die Meldung in Ordnung sind? Beachte bitte meine Änderungen am Quellcode:
Delphi-Quellcode:
Grüße vom marabu
function TTeilnehmerDialog.EingabeOK: boolean;
begin Result := not ( (NameEdit.Text = '') or ... or (VornameEdit.Text = '') ); end; procedure TTeilnehmerDialog.SaveButtonClick(Sender: TObject); const SQL_SELECT = 'SELECT name, vorname, gebdat, strasse, hausnr, plz, ort, tel, fahrschule, kurs ' + 'FROM teilnehmer WHERE 1 = 0'; begin if not EingabeOK then begin ShowMessage('Bitte füllen Sie alle Felder mit einem " * " aus!'); Exit; end; with Query1 do begin Sql.Text := SQL_SELECT; Open; Insert; FieldByName('Name').AsString := NameEdit.Text; ... FieldByName('Vorname').AsString := VornameEdit.text; Post; end; end; |
Re: Datenbankeintrag über Editfelder
Sagt mal geht das überhaupt so???
Soweit ich weis muss man da min. ein UPDSQL haben oder per Insert oder UPDATE die Daten in die DB Speichern. |
Re: Datenbankeintrag über Editfelder
Hi Frank,
so geht das:
Delphi-Quellcode:
marabu
Query.RequestLive := true;
|
Re: Datenbankeintrag über Editfelder
Delphi-Quellcode:
procedure TForm4.Button2Click(Sender: TObject);
var s : String; begin s := 'select Name,Vorname,Gebdat,Straße,hnr,plz,ort,tel,fahrschule from teilnehmer'; query1.close; Query1.Sql.Text := s; // Query1.ExecSQL; // falsch Query1.Active:=true; if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') or (Edit4.Text = '') or (Edit5.Text = '') or (Edit6.Text = '') then raise Exception.Create('Bitte füllen Sie alle Felder mit einem " * " aus!'); Query1.Insert; // zuerst Insert (oder eher Append) Query1.FieldByName('Name').AsString := edit1.text; Query1.FieldByName('Vorname').AsString := edit2.text; Query1.FieldByName('Gebdat').AsString := edit3.text; Query1.FieldByName('Straße').AsString := edit4.text; Query1.FieldByName('Hnr').AsString := edit5.text; Query1.FieldByName('PLZ').AsString := edit6.text; Query1.FieldByName('Ort').AsString := edit7.text; Query1.FieldByName('tel').AsString := edit8.text; Query1.FieldByName('Fahrschule').AsString := edit9.text; Query1.FieldbyName('Kurs').ASString := Label2.Caption; Query1.Post; // und dann post end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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 by Thomas Breitkreuz