Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankeintrag über Editfelder (https://www.delphipraxis.net/50980-datenbankeintrag-ueber-editfelder.html)

scuby 3. Aug 2005 17:31

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

Sharky 3. Aug 2005 17:56

Re: Datenbankeintrag über Editfelder
 
Hai scuby,

Es gibt da verschiedene wege.

Zum einen kannst Du dein TDataSet (Query) mit Delphi-Referenz durchsuchen.Edit in den Edit-Modus bzw. mit Delphi-Referenz durchsuchen.Insert in den Einfüge-Modus bringen.

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 Delphi-Referenz durchsuchen.Post notwendig um die Daten in der DB zu speichern.


Von diesem Weg bin ich persönlich abgekommen. Ich arbeite fast nur noch mit reinen SQL-Kommandes.
Zum Beispiel;
SQL-Code:
UPDATE tabelle SET feldname=wert WHERE bedingung
Wenn Du anstelle eines UpDates einen neuen Datensatz einfügen möchtest dann musst Du natürlich mit dem SQL-Kommando INSERT arbeiten.

Texas 3. Aug 2005 18:46

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:
Insertsql.parambyname(´Name´).AsString := Edit1.text;
Insertsql.parambyname(´Strasse´).AsString := Edit2.text;
Insertsql.parambyname(´Zahl´).AsInteger := strtoint(Edit1.text);
//(auf feldtypen achten)
.
.
.insertsql.ExecSQL;
Gruß texas

scuby 4. Aug 2005 08:06

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

Sharky 4. Aug 2005 08:43

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

scuby 4. Aug 2005 11:59

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;

marabu 4. Aug 2005 12:49

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:
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;
Grüße vom marabu

franktron 4. Aug 2005 12:54

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.

marabu 4. Aug 2005 12:59

Re: Datenbankeintrag über Editfelder
 
Hi Frank,

so geht das:

Delphi-Quellcode:
Query.RequestLive := true;
marabu

shmia 4. Aug 2005 14:01

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 23:15 Uhr.
Seite 1 von 3  1 23      

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