Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Neuen Datensatz in Abfrage und LV hinzufügen (https://www.delphipraxis.net/141717-neuen-datensatz-abfrage-und-lv-hinzufuegen.html)

mc_flasche 14. Okt 2009 18:56

Datenbank: ACCESS • Version: 2007 • Zugriff über: SQL

Neuen Datensatz in Abfrage und LV hinzufügen
 
Hallo!

Ich möchte gerne einen neuen Datensatz mit Vorname Nachname und Geschlecht meiner Datenbank hinzufügen und dieser Datensatz soll gleichzeitig auch gleich meinen Listview hinzugefügt werden!

meine procedure des Buttons Speichern sieht bis jetzt so aus und müsste eigentlich gehen jedoch kommt immer folgende Fehlermeldung:

Variante des Typs (Null) konnte nicht im Typ (String) konvertiert werden.

procedure:

Delphi-Quellcode:
var
FN, VN, G: string;
begin
 bt_Panel.visible:=true;

 FN := ed_Familienname.text;
 VN := ed_Vorname.text;
 G := cb_Geschlecht.text;

if (ed_Vorname.text = '') or
    (ed_Familienname.text = '') or
    (cb_Geschlecht.text = '') then begin
    showmessage('Bitte alle Felder ausfüllen!');
 end else begin
    Panel1.visible := false;

    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.add('Insert into Schüler (Familienname, Vorname, Geschlecht) VALUES ("' + FN + '", "' + VN + '", "' + G + '")');
 
    adoquery1.ExecSQL;

    Personeneintragen('');
    Klasseneintragen();


end;
Wenn jemand auch andere Proceduren benötigt bitte melden ich kann weitere Posten

bitte um Ratschläge und Hilfe...

Mfg
mc_flasche

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

mkinzler 14. Okt 2009 19:03

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
Hat die Tabelle noch weitere Felder (PK)?
Btw. ich würde eine parametrisierte Abfrage verwenden
SQL-Code:
Insert into Schüler (Familienname, Vorname, Geschlecht) VALUES ( :fn, :vn, :g);

DeddyH 14. Okt 2009 19:04

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
Du solltest das SQL parametrisieren.

[edit] Markus schon wieder :? [/edit]

mc_flasche 14. Okt 2009 19:10

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
Ja in der Datenbank Tabelle gibt es schon noch weitere Felder aber in meinem LV lade ich nur die Felder Vorname NN und Geschlecht und ich möchte auch nur diese 3 Felder hinzufügen können!!!

In die Datenbank werden meine neuen Datensätze e schon geschrieben jedoch im LV werden sie nicht ausgegeben???

Mfg

DeddyH 14. Okt 2009 19:12

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
Wie trägst Du sie denn in der Listview ein?

mc_flasche 14. Okt 2009 19:15

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
mit der procedure Personeneintragen()

Delphi-Quellcode:
procedure TForm1.PersonenEintragen(Kl: string);
var
LI: Tlistitem;
begin
lv_personen.items.clear;
//Zugriff auf die Tabelle über eine Abfrage;

//Sicherheitshalber wird die Abfrage geschlossen ..
adoquery1.Close;
// und der SQL-Code gelöscht
adoquery1.SQL.Clear;
//.. und der neue SQL-Code eingefügt

if Kl = '' then begin
  adoquery1.SQL.ADD('Select * from Schüler');
 end else begin
  adoquery1.SQL.ADD('Select * from Schüler where Klasse = "' + Kl + '"');
end;


// .. und die Abfrage geöffnet;
adoquery1.Open;

//Daten der Abfrage werden ausgegeben..
 while not adoquery1.eof do begin
     LI := lv_personen.Items.Add;
     LI.caption := adoquery1.FieldValues['Familienname'] + ' ' + adoquery1.FieldValues['Vorname'];
     LI.subItems.add(adoquery1.FieldValues['Geschlecht']);
     adoquery1.Next; // nächsteeees sonst bleibt immer beim ersten ..
 end;
 adoquery1.Close;

end;
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

mkinzler 14. Okt 2009 19:20

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
Die Daten des neuen Datensatzes sind doch bekannt, warum liest du diese dann neu aus der datenbank und fügst diese nicht direkt an?
Ich würde der Tabelle noch einen Primärschlüssel verpassen und parametrisierte Abfragen verwenden.

mc_flasche 14. Okt 2009 19:47

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
ja ok danke aber was genau sind parametrisierte Abfragen bzw. wie programmiert man sie?

mkinzler 14. Okt 2009 19:56

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
Die Abfrage fest vorgeben und statt der Werte Parameter verwenden:

Delphi-Quellcode:
    qInsertSchueler.SQL.Text := 'Insert into Schüler (Familienname, Vorname, Geschlecht) VALUES ( :fn, :vn, :g)';
    qInsertSchueler.Prepare;
...
Beim eigentlichen Insert muss man dann nur noch die Parameter belegen
Delphi-Quellcode:
    qInsertSchueler.Params.ParamByName('fn') := fn;
    ...
    qInsertSchueler.ExecSQL;

mc_flasche 14. Okt 2009 20:53

Re: Neuen Datensatz in Abfrage und LV hinzufügen
 
Ok danke und wo bzw. als was muss ich qInsertSchueler definieren?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.
Seite 1 von 2  1 2      

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