[Zeos / SQLite] NonVisuell + ComboBox füllen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

[Zeos / SQLite] NonVisuell + ComboBox füllen

Beitrag von bembulak »

Schönen guten Morgen euch allen!

Ich komme da bei einer Sache nicht weiter, die mir ganz schön Kopfzerbrechen bereitet:

Ich habe eine SQLite3-Datenbank die ich, wie im Tutorial im Lazarus-Wiki beschrieben, wunderbar in einem TBGrid anzeigen kann (Tutor: Zeos Tutorial/de)

Toll mit den visuellen Komponenten zu arbeiten.

Nun aber meine Frage: ich verbinde im Beispiel oben die Komponenten mit ein paar Mauseklicks und alles wunderbar.
Was aber, wenn ich z.B. eine Combobox mit Werten füllen möchte? Mein SQL-Statement würde z.B. so aussehen:

Code: Alles auswählen

SELECT DISTINCT kategorie FROM tabelle
Aber wie führe ich diese Query aus und wie bekomme ich die Werte zurück und füge sie der Combobox hinzu?

Wäre nett, wenn mir jemand einen Tipp geben könnte. Danke.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: [Zeos / SQLite] NonVisuell + ComboBox füllen

Beitrag von monta »

Ich würde auch das empfehlen:
http://wiki.lazarus.freepascal.org/Laza ... e_Tutorial" onclick="window.open(this.href);return false;

ob da nun SQLDb und MySQL oder Zeos und SQLite dran steht ist eigentlich egal, die Grundlagen und Befehle sind letztlich gleich.

Die Query kannst du mit Query.open öffnen.

Auf die Felder der Query kannst du entweder manuell mit Query.FieldByName('kategorie').AsString zugreifen und sie in einer Schleife der ComboBox zuweisen.
Oder du benutzt eine TDBComboBox, die du über eine TDataSource direkt mit der Query Verbinden kannst, sodass die Werte automatisch eingetragen werden.
Johannes

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: [Zeos / SQLite] NonVisuell + ComboBox füllen

Beitrag von KOBOLD Messring GmbH »

Hier ein kleines Kompakt-Beispiel, so mache ich das gerne, eine kleine Proc die eine Liste füllt:

Code: Alles auswählen

Procedure FuelleListe (lst : TStrings);
Begin
  lst.Clear;
  SQLQuery1.SQL.Clear;
  SQLQuery1.SQL.Add ('SELECT Bez FROM reagenzklassen ORDER BY ID');
  SQLQuery1.Active := TRUE;
  WHILE NOT SQLQuery1.EOF DO
   Begin
     lst.Add (ConvertEncoding (SQLQuery1.FieldByName('Bez').AsString, 'iso88591', 'utf8'));
     SQLQuery1.Next;
   End; { While }
  SQLQuery1.Active := FALSE;
End; { FuelleListe }
Aufruf z.B. mit FuelleListe (Combo1.Lines); in FormCreate (oder wo man will).
Die SQLQuery1.Komponente wurde bereits im Objekt-Inspector zur Design-Zeit mit der Datenbank (z.B. ODBCConnection1 oder MySQL50Connection1) verbunden (kann man natürlich auch im Programm zur Lauf-Zeit machen).
Was gern in die Hose geht: Der interne Zeichensatz der Lazarus/FPC-Komponenten ist UTF8, viele Datenbanken benutzen intern aber den Westeuropäischen ISO8859-1, deshalb die Konvertierung in meinem Beispiel.

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Re: [Zeos / SQLite] NonVisuell + ComboBox füllen

Beitrag von bembulak »

Danke für die Hinweise.
Ich muss gestehen, dass mir hier viele, viele Sachen noch ordentlich schwer fallen.

Auch wenn Komponenten und Objekte sehr nützlich sein können, so sind deren gekapselte Funktionen und Eigenschaften oftmals "black magick" für den Neuling.
Gerade in Pascal möchte man meinen, dass es einfacher ist, aber hier fällt es mir am schwersten, Sachen aus der DB zu ziehen.

@Kobold:
gerade jetzt wo ich hier tippe, sehe ich in der Vorschau, dass du einen Beitrag geschrieben hast:
Vielen Dank - sowas in der Richtung habe ich gemeint.
Hier wird nicht durch einen Eintrag im Objektinspektor die Abfrage eingeleitet, sondern eben per Code. Das hilft mir schon sehr!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [Zeos / SQLite] NonVisuell + ComboBox füllen

Beitrag von af0815 »

bembulak hat geschrieben:... Wäre nett, wenn mir jemand einen Tipp geben könnte. Danke.
LazInfos ? Vielleich das Beispiel mit der Namensdatenbank nehmen, da hat man dann eine DB/Tabelle mit Daten zum Spielen :-) Läuft eigentlich mit (fast) jedem DB System.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Re: [Zeos / SQLite] NonVisuell + ComboBox füllen

Beitrag von bembulak »

LazInfos ?
@|

Wie und warum ich darauf nur immer wieder vergessen kann.
Manchmal sieht man den "Code vor lauter Units" nicht.
Danke für den Hinweis. Ich werde mir das jetzt mal ausdrucken und als "Gute-Nacht-Lektüre" zu Gemüte führen!

Antworten