![]() |
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:
Wenn jemand auch andere Proceduren benötigt bitte melden ich kann weitere Posten
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; bitte um Ratschläge und Hilfe... Mfg mc_flasche [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
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);
|
Re: Neuen Datensatz in Abfrage und LV hinzufügen
Du solltest das SQL parametrisieren.
[edit] Markus schon wieder :? [/edit] |
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 |
Re: Neuen Datensatz in Abfrage und LV hinzufügen
Wie trägst Du sie denn in der Listview ein?
|
Re: Neuen Datensatz in Abfrage und LV hinzufügen
mit der procedure Personeneintragen()
Delphi-Quellcode:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
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; |
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. |
Re: Neuen Datensatz in Abfrage und LV hinzufügen
ja ok danke aber was genau sind parametrisierte Abfragen bzw. wie programmiert man sie?
|
Re: Neuen Datensatz in Abfrage und LV hinzufügen
Die Abfrage fest vorgeben und statt der Werte Parameter verwenden:
Delphi-Quellcode:
Beim eigentlichen Insert muss man dann nur noch die Parameter belegen
qInsertSchueler.SQL.Text := 'Insert into Schüler (Familienname, Vorname, Geschlecht) VALUES ( :fn, :vn, :g)';
qInsertSchueler.Prepare; ...
Delphi-Quellcode:
qInsertSchueler.Params.ParamByName('fn') := fn;
... qInsertSchueler.ExecSQL; |
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 22:47 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