AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird: Tabellen abfragen
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird: Tabellen abfragen

Ein Thema von pustekuchen · begonnen am 22. Okt 2010 · letzter Beitrag vom 22. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#1

Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 11:09
Datenbank: Firebird • Version: 2.1 • Zugriff über: Delphi
Guten Tag,

Seit gestern Arbeite ich mich in Firebird + Delphi ein.
Ich möchte jetzt alle Tabellen in einer Datenbank zu einer ComboBox hinzufügen.

Die Select Abfrage,müsste richtig sein, da sie per ISQL einwandfrei funktioniert.

Doch ich weiß nicht genau wo das Ergebnis der Select Abfrage drin steht.
Ich habe folgendes Probiert.

Delphi-Quellcode:
procedure TForm1.fillCBTables(cb: TComboBox);
var Tables: TStringList;
  i, count: integer;
begin
  if Assigned(db) and db.Connected then
  begin
    trans.Active := true;
    dataset.Active := false;
    dataset.SelectSQL.Clear;
    dataset.SelectSQL.Text := 'SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE '
                              +'(RDB$RELATION_NAME NOT STARTING ''RDB$'')'
                              +' AND (RDB$RELATION_NAME NOT STARTING ''TMP$'') '
                              +'AND (RDB$RELATION_NAME NOT STARTING ''MON$'') '
                              +'ORDER BY RDB$RELATION_NAME;';

    dataset.Open;
    cb.Clear;
    for i := 0 to dataset.DataSource.DataSet.FieldCount -1 do
      cb.AddItem(dataset.DataSource.DataSet.Fields.Fields[i].AsString,nil);
    trans.Commit;
  end;
end;
Beim Debuggen hab ich festgestellt das dataset.DataSource = nil ist. Doch wo ist denn sonst das Ergebnis?
Danke schonmal für die Hilfe
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 11:15
Wozu brauchst Du eine Datasource?
Delphi-Quellcode:
procedure TForm1.fillCBTables(cb: TComboBox);
var Tables: TStringList;
  i, count: integer;
begin
  if Assigned(db) and db.Connected then
  begin
    cb.Items.Clear;
    trans.Active := true;
    dataset.Active := false;
    dataset.SelectSQL.Text := 'SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE '
                              +'(RDB$RELATION_NAME NOT STARTING ''RDB$'')'
                              +' AND (RDB$RELATION_NAME NOT STARTING ''TMP$'') '
                              +'AND (RDB$RELATION_NAME NOT STARTING ''MON$'') '
                              +'ORDER BY RDB$RELATION_NAME';

    dataset.Open;
    while not dataset.EOF do
      begin
        cb.Items.Add(dataset.Fields[0].AsString);
        dataset.Next;
      end;
    trans.Commit;
  end;
end;
Ungetestet, sollte aber funktionieren, solange ich keinen groben Denkfehler gemacht habe.
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 pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 11:20
Danke, Funktioniert Wunderbar

Wie gesagt, habe erst gestern mit Firebird angefangen und weiß noch nicht genau Was man Wo, Wie macht
Delphi programming is awesome.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 11:53
Du solltest noch den Übergabeparameter ändern:
Delphi-Quellcode:
procedure TForm1.fillCBTables(items:TStrings{cb: TComboBox});
begin
  Assert(Assigned(items));
  .....
  dataset.Open;
  while not dataset.EOF do
  begin
    items.Add(dataset.Fields[0].AsString);
    dataset.Next;
  end;
  ....
end;
Dadurch, dass du TStrings verwendest, bist du völlig frei, ob du die Tabellennamen in einer Combobox, ListBox, Memo oder was auch immer sehen möchtest.
Der Aufruf muss natürlich leicht angepasst werden:
fillCBTables(ComboboxTabellen.Items);
Und die Transaction kannst du Dir auch schenken; schliesslich liest du ja nur.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 12:15
Danke shmia, genau so eine Art von Tipps kann ich gebrauchen
Habs übernommen.
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 12:25
Sorry 4 Push

Nur leider haben meine Tabellen in der Checkbox nun + ~20 Leerzeichen hinten dran?
Wodran kann das liegen?
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 12:26
Das weiß ich auch nicht, aber Du kannst die beim Einfügen ja einfach wegtrimmen.
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 pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 12:32
Ja ist schon komisch.
Habs jetzt erstmal mit Trim() gemacht. Falls jmd weiß wodran es liegen könnte, weißte bescheid
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 12:34
Ja, das ist mir eben auch aufgefallen. Das scheint irgendwie so zu sein. Hab auch Trim benutzt.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Firebird: Tabellen abfragen

  Alt 22. Okt 2010, 12:35
Möglicherweise ist das ein Feld fixer Länge, dann wird IIRC mit Leerzeichen aufgefüllt. Aber ich kann gerade nicht nachschauen, da ich in der Firma kein FB verfügbar habe.
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
Seite 1 von 2  1 2      


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 04:31 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