AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankeintrag über Editfelder

Datenbankeintrag über Editfelder

Offene Frage von "thomas29h2000"
Ein Thema von scuby · begonnen am 3. Aug 2005 · letzter Beitrag vom 10. Aug 2005
Antwort Antwort
Seite 1 von 3  1 23   
scuby

Registriert seit: 31. Jul 2005
122 Beiträge
 
#1

Datenbankeintrag über Editfelder

  Alt 3. Aug 2005, 17:31
Datenbank: Delphi-Datenbank • Zugriff über: SQL.Query
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Datenbankeintrag über Editfelder

  Alt 3. Aug 2005, 17:56
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;
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Texas

Registriert seit: 15. Jul 2005
Ort: Laatzen
56 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: Datenbankeintrag über Editfelder

  Alt 3. Aug 2005, 18:46
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
Michael
  Mit Zitat antworten Zitat
scuby

Registriert seit: 31. Jul 2005
122 Beiträge
 
#4

Re: Datenbankeintrag über Editfelder

  Alt 4. Aug 2005, 08:06
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datenbankeintrag über Editfelder

  Alt 4. Aug 2005, 08:43
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
Angehängte Dateien
Dateityp: zip access_160.zip (17,3 KB, 17x aufgerufen)
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
scuby

Registriert seit: 31. Jul 2005
122 Beiträge
 
#6

Re: Datenbankeintrag über Editfelder

  Alt 4. Aug 2005, 11:59
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;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Datenbankeintrag über Editfelder

  Alt 4. Aug 2005, 12:49
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
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

Re: Datenbankeintrag über Editfelder

  Alt 4. Aug 2005, 12:54
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.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Datenbankeintrag über Editfelder

  Alt 4. Aug 2005, 12:59
Hi Frank,

so geht das:

Query.RequestLive := true; marabu
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Datenbankeintrag über Editfelder

  Alt 4. Aug 2005, 14:01
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;
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 Uhr.
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