AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Anzahl der Datensätze einer Tabelle ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl der Datensätze einer Tabelle ermitteln

Ein Thema von f4k3 · begonnen am 16. Jan 2008 · letzter Beitrag vom 21. Jan 2008
Antwort Antwort
Seite 2 von 2     12   
marabu

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

Re: Anzahl der Datensätze einer Tabelle ermitteln

  Alt 21. Jan 2008, 14:32
Hallo Fake,

du machst dir das vielleicht ein wenig zu schwer. Den letzten Teil deines Codes könntest du auch so schreiben:

Delphi-Quellcode:
// ...
// iCounter := 0;

while not tMandant.EOF do
begin
  cbMandant.Items.AddObject(Format('%d - %s', [
    tMandant.FieldByName('Mandantennummer').AsInteger,
    tMandant.FieldByName('Bezeichnung').AsString,
    Pointer(tMandant.FieldByName('Mandantennummer').AsInteger)
  ]));
  tMandant.Next;
end;
Du brauchst den iCounter doch eigentlich nirgends. Und den Schlüssel habe ich im Objects-Array der ComboBox-Strings abgelegt. Da kommst du dann leicht wieder dran:

Delphi-Quellcode:
with cbMandant do
  iMandant := Integer(Objects[ItemIndex]);
Viel Erfolg mit deinem Projekt.
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#12

Re: Anzahl der Datensätze einer Tabelle ermitteln

  Alt 21. Jan 2008, 14:45
Klingt zumindest sehr logisch ... und vor allem wesentlich kürzer

Zitat von marabu:

Delphi-Quellcode:
// ...
// iCounter := 0;

while not tMandant.EOF do
begin
  cbMandant.Items.AddObject(Format('%d - %s', [
    tMandant.FieldByName('Mandantennummer').AsInteger,
    tMandant.FieldByName('Bezeichnung').AsString,
    Pointer(tMandant.FieldByName('Mandantennummer').AsInteger)
  ]));
  tMandant.Next;
end;
allerdings hätt ich noch ein paar fragen ... Pointer (= zeiger nehm ich an) muss extra deklariert werden oder? zumal der Pointer doch bei jedem durchlauf
seinen Wert ändert ... ich versteh da grad den bezug nicht.
Ich hab ja ein globals Array deklariert, um bei jedem durchlauf meinen Schlüssel zu speichern, damit ich weiß aus welcher Zeile ich mir die Mandantennummer in der Datenbank holen muss. Soweit ich weiß, sind Pointer, Zeiger die auf bestimmte Adressen zeigen, die sich doch hier mit jedem durchlauf ändern?!

Sorry ... ich weiß ich hab nachholbedarf ... wär net wenn du mir dazu ne erklärung liefern könntest.

Weiter zu frage 2:
Zitat von marabu:
Delphi-Quellcode:
with cbMandant do
  iMandant := Integer(Objects[ItemIndex]);
also mit cbMandant tue ich den Schlüssel (so wie ich rausgelesen habe) in iMandant speichern.
Welchen Schlüssel? alle "gesammelten"?

Entschuldige, zwar ne sehr gute lösung, und vor allem noch schnell aber ich begreif nicht was dahinter geschiet ... und des wär zumindest sehr hilfreich für z.B. die Zukunft ... ich dank dir trotzdem sehr

f4k3
Sascha
  Mit Zitat antworten Zitat
marabu

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

Re: Anzahl der Datensätze einer Tabelle ermitteln

  Alt 21. Jan 2008, 15:46
Die von der ComboBox verwaltete StringList beherbergt intern zwei Felder: Strings[] und Objects[]. Objects[] darfst du frei verwenden und ich habe dir gezeigt, wie du durch den Typecast nach Pointer() die Mandantennummer dort ablegen kannst, obwohl Objects[] ja eigentlich ein Zeigerfeld ist.

Beim Zugriff auf das vom Benutzer ausgewählte Item in der ComboBox wird der ItemIndex entsprechend gesetzt und durch die Rückwandlunbg des Zeigers in eine Integer speichere ich die ausgewählte Mandantennummer in der Integer-Variablen iMandant - wieder unter Verwendung eines Typecasts, diesmal Integer().

Alles klar?

Edit: Eine durchaus interessante Alternative zu der ComboBox wäre übrigens ein DBGrid. Es würden allerdings mehrere Datensätze angezeigt. Die Optik lässt sich sehr weitgehend an den persönlichen Geschmack anpassen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:22 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