Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   ID aus Combobox auslesen (https://www.delphipraxis.net/161055-id-aus-combobox-auslesen.html)

Metallicwar 14. Jun 2011 15:35

ID aus Combobox auslesen
 
Hallo,
ich trage Tätigkeitsnamen + ID's aus einer Datenbank in eine Combobox:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Visible := False;
  with qTätigkeitgruppe do
  begin
    Active:=True;
    while not Eof do
    begin
      sname := FieldByName('Bezeichnung').AsString;
      ComboBox1.Items.AddObject(sName, TOBject(FieldByName('ID').AsInteger));
      Next;
    end;
  end;
end;
jedes mal wenn ich einen anderen Eintrag in der Combobox selektiere, soll er mir anhand der zugehörigen ID alle Tätigkeiten anzeigen die dieser Tätigkeitsgruppe angehören.
Code:
  qReportDaten.SQL.Text := 'SELECT * FROM TaetGruppen_Detail'+
                           ' LEFT OUTER JOIN Taetigkeiten ON TaetGruppen_Detail.ID_Taetigkeiten = Taetigkeiten.ID'+
                           ' LEFT OUTER JOIN TaetGruppen ON TaetGruppen_Detail.ID_TaetGruppen = TaetGruppen.ID'+
                           ' WHERE ID_TaetGruppen = Hier soll die ID aus der Combobox übergeben werden;';
Meine Frage: Wie kann ich aus einem selektierten Eintrag die dazugehörige "Datenbank" ID auslesen?

DeddyH 14. Jun 2011 15:38

AW: ID aus Combobox auslesen
 
Vielleicht so?
Delphi-Quellcode:
ID := Integer(ComboBox.Items.Objects[ComboBox.ItemIndex]);

haentschman 14. Jun 2011 20:03

AW: ID aus Combobox auslesen
 
... und bitte den Wert dem SQL als Parameter übergeben... :zwinker:

Und noch ein Tipp:
Dein + in jeder Zeile funktioniert bis die Stringlänge 255 überschreitet. (Ich meine mich zu erinnern) Diesem Problem kannst du aus dem Weg gehen wenn du jede neue Zeile (dient ja nur der Übersicht) mit Query.SQL.Add() hinzufügst.

Thom 14. Jun 2011 21:05

AW: ID aus Combobox auslesen
 
Beim kommenden 64-Bit-Compiler sind Pointer (64 Bit) keine Integer (32 Bit) mehr. Also Achtung bei Typecast, wenn er aufwärtskompatibel sein soll.

Metallicwar 15. Jun 2011 08:47

AW: ID aus Combobox auslesen
 
Vielen Dank für eure Info's und Tipps hat sowas alles funktioniert. Danke !

MfG David

DeddyH 15. Jun 2011 09:04

AW: ID aus Combobox auslesen
 
Zitat:

Zitat von haentschman (Beitrag 1106392)
Und noch ein Tipp:
Dein + in jeder Zeile funktioniert bis die Stringlänge 255 überschreitet. (Ich meine mich zu erinnern)

Du verwechselst da etwas: innerhalb der IDE ist die Stringlänge je Zeile begrenzt. Wenn man einen längeren String deklariert, muss man ihn konkatenieren.

CCRDude 15. Jun 2011 09:29

AW: ID aus Combobox auslesen
 
Zitat:

Zitat von DeddyH (Beitrag 1106456)
Du verwechselst da etwas: innerhalb der IDE ist die Stringlänge je Zeile begrenzt. Wenn man einen längeren String deklariert, muss man ihn konkatenieren.

Noch nichtmal per Zeile, sondern per String-Literal. Davon kann man auch in einer Zeile etliche hintereinander konkateniern.
Und was hat das mit der IDE zu tun?

DeddyH 15. Jun 2011 09:58

AW: ID aus Combobox auslesen
 
Meine Güte, dann nenn es halt Sprachfeature oder was weiß ich. Es ging mir nur darum, dass ein String nicht auf 255 Zeichen begrenzt ist, so dass man bei längeren Strings auf das Add() ausweichen müsste, wie weiter oben behauptet wurde.

himitsu 15. Jun 2011 12:43

AW: ID aus Combobox auslesen
 
Und zu der Integer>Pointer>Integerumwandlung
Solange der Ursprungsinteger auch nur ein Integer ist, ist die Rückumwandlung vollkommen problemlos.
Schließlich wächst nur der Zwischentyp, kann also mehr aufnehmen und es gehen nirgendwo Informationen verloren.

Thom 15. Jun 2011 13:43

AW: ID aus Combobox auslesen
 
Zitat:

Make sure that any place that relies on casting a pointer value to an integer or vice versa is using NativeInt or NativeUInt for the integer type.
How to also prepare for 64-bits when migrating to Delphi 2010 and Unicode

Ich hatte kein Wort darüber verloren, daß Informationen verloren gehen. Aber wo ist das Problem, bei einem Typecast statt Integer NativeInt zu schreiben und dafür einen sauberen Code zu bekommen? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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