AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

procedure mit Sender

Offene Frage von "mc_flasche"
Ein Thema von mc_flasche · begonnen am 28. Sep 2009 · letzter Beitrag vom 28. Sep 2009
Antwort Antwort
mc_flasche

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

procedure mit Sender

  Alt 28. Sep 2009, 18:49
Hallo!

Ich hab 2 Proceduren und möchte gern alles in einer Procedure machen ich denke mit Sender würde es am besten gehen,
aber ich kenne mich mit Sendern nicht so gut aus darum bräuchte ich bitte Hilfe!!!!

In dem Programm geht es um das Ausgeben der Daten einer Datenbank in einem Listview jedoch möchte ich eine verkürzte Version haben.

Hier sind die beiden Proceduren falls es jemandem zu unübersichtilich ist habe ich auch noch meine gesamte Datei als Attachment angefügt!

Delphi-Quellcode:
procedure TForm1.Datenausgeben();
var
LI: TListitem;
weiblich, maennlich, Gesamt, i : integer;
begin
 //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
 adoquery1.SQL.add('Select * from Schueler');
 //... und die Abfrage geöffnet:
 adoquery1.Open;


 //Schleife bis zum Ende der Abfrage
 while not adoquery1.Eof do begin

 // Leere Zeile wird ausgegeben
 LI := lv_personen.Items.add;
 //Daten der Abfrage werden ausgegeben:
 LI.Caption := adoquery1.FieldValues['Nachname'] + ' ' + adoquery1.FieldValues['Vorname'];
 LI.subItems.add(adoquery1.FieldValues['Geschlecht']);
 LI.subItems.add(adoquery1.FieldValues['PLZ']);
 LI.subItems.add(adoquery1.FieldValues['Ort']);
 LI.subItems.add(adoquery1.FieldValues['Adresse']);

 //Spring immer einen Datensatz weiter
 adoquery1.Next;
 end;
 adoquery1.close;

 adoquery1.SQL.Clear;


 //distict = Keine Duplikate
 //order by = Sortierung aufsteigend
 adoquery1.SQL.add('Select distinct Ort from Schueler order by Ort');

 adoquery1.Open;

 while not adoquery1.Eof do begin

 lbox_Wohnort.items.add(adoquery1.FieldValues['Ort']);
 //Spring immer einen Datensatz weiter
 adoquery1.Next;
 end;
 adoquery1.close;

 Maennlich := 0;

 Weiblich := 0;

 gesamt:= lv_Personen.Items.count;


 for i := 0 to lv_Personen.Items.Count - 1 do begin

 if lv_Personen.Items[i].subitems[0] = 'Mthen
      Inc(Maennlich);
    if lv_Personen.Items[i].subitems[0] = 'Wthen
      Inc(Weiblich);

  end;


 StatusBar1.Panels[0].Text := 'Gesamt ' + inttostr(gesamt);
 StatusBar1.Panels[1].Text := 'Männlich ' + inttostr(maennlich);
 StatusBar1.Panels[2].Text := 'Weiblich ' + inttostr(weiblich);

end;


procedure TForm1.Wohnortfilter();
var
AktuellerOrt: string;
LI: TListItem;
weiblich, maennlich, Gesamt, i : integer;
begin

 AktuellerOrt:= lbox_Wohnort.Items[lbox_Wohnort.itemindex];

 adoquery1.Close;

 adoquery1.SQL.Clear;

 adoquery1.SQL.add('Select * from Schueler where Ort = "' + AktuellerOrt + '"');

 adoquery1.Open;

 lv_personen.Items.Clear;


 while not adoquery1.Eof do begin

 // Leere Zeile wird ausgegeben
 LI := lv_personen.Items.add;
 //Daten der Abfrage werden ausgegeben:
 LI.Caption := adoquery1.FieldValues['Nachname'] + ' ' + adoquery1.FieldValues['Vorname'];
 LI.subItems.add(adoquery1.FieldValues['Geschlecht']);
 LI.subItems.add(adoquery1.FieldValues['PLZ']);
 LI.subItems.add(adoquery1.FieldValues['Ort']);
 LI.subItems.add(adoquery1.FieldValues['Adresse']);



 //Spring immer einen Datensatz weiter
 adoquery1.Next;
 end;


 adoquery1.close;

 Maennlich := 0;

 Weiblich := 0;

 gesamt:= lv_Personen.Items.count;


 for i := 0 to lv_Personen.Items.Count - 1 do begin

 if lv_Personen.Items[i].subitems[0] = 'Mthen
      Inc(Maennlich);
    if lv_Personen.Items[i].subitems[0] = 'Wthen
      Inc(Weiblich);

  end;


 StatusBar1.Panels[0].Text := 'Gesamt ' + inttostr(gesamt);
 StatusBar1.Panels[1].Text := 'Männlich ' + inttostr(maennlich);
 StatusBar1.Panels[2].Text := 'Weiblich ' + inttostr(weiblich);

end;
[edit=Matze][delphi]-Tag eingefügt. MfG, Matze[/edit]
Angehängte Dateien
Dateityp: dpr project1_237.dpr (188 Bytes, 0x aufgerufen)
  Mit Zitat antworten Zitat
28. Sep 2009, 19:09
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Delphi-Frage
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#3

Re: procedure mit Sender

  Alt 28. Sep 2009, 19:21
Das hat aber mit Sender gar nichts zu tun. Erweitere Deine Prozedur einfach um ein Argument, das Du dann innerhalb der Prozedur auswertest.
Delphi-Quellcode:
procedure TForm1.DatenAusgeben(const Ort: string = '');
const DefSQL = 'SELECT * FROM Schueler';
begin
  ...
  ADOQuery1.SQL := DefSQL;
  //wenn ein Ort übergeben wurde, SQL erweitern
  if Ort <> 'then
    begin
      ADOQuery1.SQL := ADOQuery1.SQL + ' WHERE Ort = :ort');
      ADOQuery1.Parameters.ParamByName('ort').Value := Ort;
    end;
  ...
end;
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: procedure mit Sender

  Alt 28. Sep 2009, 19:48
Danke für die Antwort, aber das Programm funktioniert leider immer noch nicht, da ich noch nicht ganz verstanden habe wie ich es erweitern muss!!!
Im Anhang befindet sich der gezippte Ordner meines Programms, wenn möglich bitte ich um fertigstellung meines Programms und Rücksendung!!!!!!!!!

Mfg
Angehängte Dateien
Dateityp: zip datenbank_150.zip (528,8 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#5

Re: procedure mit Sender

  Alt 28. Sep 2009, 19:55
Siehe meine PN.
Zitat:
Das ist ja wohl nicht Dein Ernst. Ich helfe Dir gerne weiter, aber programmieren musst Du schon selbst.
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
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: procedure mit Sender

  Alt 28. Sep 2009, 21:12
Delphi-Quellcode:
// Leere Zeile wird ausgegeben
LI := lv_personen.Items.add;
//Daten der Abfrage werden ausgegeben:
LI.Caption := adoquery1.FieldValues['Nachname'] + ' ' + adoquery1.FieldValues['Vorname'];
LI.subItems.add(adoquery1.FieldValues['Geschlecht']);
LI.subItems.add(adoquery1.FieldValues['PLZ']);
LI.subItems.add(adoquery1.FieldValues['Ort']);
LI.subItems.add(adoquery1.FieldValues['Adresse']);
Ist dir aufgefallen, dass du obigen Code zweimal hingeschrieben hast?
Du darfst diesen Code ruhig in eine private Procedure des Formulars packen und schon wird die Sache etwas klarer und aufgeräumter.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#7

Re: procedure mit Sender

  Alt 28. Sep 2009, 21:14
Das ist aber nicht das Einzige, was doppelt da oben steht , beispielsweise auch die Geschlechterauswertung.
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
Antwort Antwort


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 07:49 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