Entwickler-Ecke

Datenbanken - DB's den Items einer ComboBox zuordnen?


peppi - Do 12.09.02 15:16
Titel: DB's den Items einer ComboBox zuordnen?
Hi,

hab folgendes Prob...möchte meiner ComboBox verschiedene Datenbanken zur Laufzeit zuordnen. Die Datenbanken stehen alle im selben Verzeichnis. Gibt's da ne Möglichkeit zu sagen das alle DB's aus dem entsprechendem Verzeichnis die "Items" der ComboBox werden?

Dank euch schonmal!

LG Jana!


LCS - Do 12.09.02 15:45

Hi,
meinst du mit verschiedene DBs, verschiedene Tabellen die alle im selben Verzeichnis stehen?
Wenn du über die BDE zugreifst, dann schau die mal das Beispiel zu Session.GetTableNames in der OnlineHilfe an.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
MyStringList := TStringList.Create;
try
  Session.GetTableNames('DBDEMOS', '*.db',False, False, MyStringList);
  { Tabellennamen in Liste einfügen }
  ListBox1.Items = MyStringList;
finally
  MyStringList.Free;
end;


Gruss Lothar


peppi - Fr 13.09.02 08:38

Hi Lothar,

ja die tabellen (*.dbf) stehen alle im selben verzeichnis bei uns im Netz. Aber ich greife eigentlich nicht mit der BDE darauf zu. Das hätte ich vielleicht noch hin bekommen :D . Ich dachte mehr an so eine Anweisung wie:

"zeige alle *.dbf von 'G:\..... in der ComboBox an"

War das verständlich? Hast du eine Ahnung wie das funktionieren könnte?

LG

Jana!


LCS - Fr 13.09.02 09:00

Hi
dann nimm doch einfach FindFirst...FindNext (Dateien suchen). Schau dir mal das Beispiel dazu in der Onlinehilfe an. Anstelle des Grids brauchst du nur noch deine Combobox füllen

Gruss Lothar


peppi - Fr 13.09.02 09:06

Hi Lothar,

dank dir! Werd's denn jetzt mal ausprobieren...vielleicht meld ich mich dann wenn ich's net hinbekommen hab nochmal :lol:

Bis dann!

Jana!


peppi - Fr 13.09.02 11:08

So...nochmal ich :evil:

in der Online-Hilfe hab ich zwar was dazu gefunden (allerdings nichts mit einem Grid :?: ) aber bei dem Beispiel muss man einen Button verwenden der dann jeweils das nächste File anzeigt (findnext). Ich hab versucht das jetzt gleich mit anzuhängen..also so ungefähr


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
begin
   FindFirst('G:\...\*.dbf', faAnyFile, SearchRec);
  ComboBox1.Items.Text := SearchRec.Name;
    if FindNext(SearchRec) = 0
    then ComboBox1.Items.Text := SearchRec.Name
  else
    FindClose(SearchRec);
 end;


Da is wohl 'n Denkfehler drin?? Die ComboBox soll ALLE *.dbf zur Auswahl enthalten. Mit der obigen Anweisung allerding wird nur die erste angezeigt. Wo liegt mein Fehler??


LCS - Fr 13.09.02 11:27

Na ja, sagen wir mal knapp daneben :D
Wenn du alle Dateien willst, wirst du wohl um ne Schleife nicht herumkommen.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin 
  ComboBox1.Items.Clear;
  if FindFirst('G:\...\*.dbf', faAnyFile, SearchRec) = 0 then begin
    ComboBox1.Items.Add(SearchRec.Name); 
    while FindNext(SearchRec) = 0 
      ComboBox1.Items.Text(SearchRec.Name); 
    FindClose(SearchRec);
  end; 
end;


Gruss Lothar


peppi - Fr 13.09.02 12:41

AAAHHH,

danke dir!! Jetzt hauts hin...aber da haben sich bei dir wohl Flüchtigkeitsfehler eingeschlichn :twisted:

hab die While-Schleife jetzt so geschrieben:


Quelltext
1:
2:
3:
....while FindNext(SearchRec) = 0
    do ComboBox1.Items.Add(SearchRec.Name);
...


wollts hier lieber noch mit reinsetzen falls sich das noch jemand zu Eigen machen will! Also...danke nochmal! Schönes Wochenende! Bis dann!
Jana!