AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Neuen Datensatz in Abfrage und LV hinzufügen

Neuen Datensatz in Abfrage und LV hinzufügen

Ein Thema von mc_flasche · begonnen am 14. Okt 2009 · letzter Beitrag vom 15. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2   
mc_flasche

Registriert seit: 28. Sep 2009
11 Beiträge
 
Turbo Delphi für Win32
 
#1

Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 19:56
Datenbank: ACCESS • Version: 2007 • Zugriff über: SQL
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]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 20:03
Hat die Tabelle noch weitere Felder (PK)?
Btw. ich würde eine parametrisierte Abfrage verwenden
Insert into Schüler (Familienname, Vorname, Geschlecht) VALUES ( :fn, :vn, :g);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 20:04
Du solltest das SQL parametrisieren.

[edit] Markus schon wieder [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mc_flasche

Registriert seit: 28. Sep 2009
11 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 20:10
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 20:12
Wie trägst Du sie denn in der Listview ein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mc_flasche

Registriert seit: 28. Sep 2009
11 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 20:15
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]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 20:20
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.
Markus Kinzler
  Mit Zitat antworten Zitat
mc_flasche

Registriert seit: 28. Sep 2009
11 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 20:47
ja ok danke aber was genau sind parametrisierte Abfragen bzw. wie programmiert man sie?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 20:56
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;
Markus Kinzler
  Mit Zitat antworten Zitat
mc_flasche

Registriert seit: 28. Sep 2009
11 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Neuen Datensatz in Abfrage und LV hinzufügen

  Alt 14. Okt 2009, 21:53
Ok danke und wo bzw. als was muss ich qInsertSchueler definieren?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 06:16 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