.dbf Datei in Dbgrid laden mit allen Tabellen u. Attributen
-
nee daran liegt es nicht... weiss denn keiner wie man eine dbf datei in einen DBGrid anzeigen lässt

-
Ein TQuery, ein TDataSource und ein TDBGrid. In DataSource unter DataSet die Query auswählen. Im DBGrid unter Datasource die DataSource auswählen.
Im Query unter SQL den SELECT eintragen:
SELECT * FROM "Kunden.dbf"Trag das bitte mal so zur Entwurfszeit ein. Anschließend machst Du einen Doppelklick auf die TQuery und in dem sich öffnenden Feldediter einen Rechtsklick und 'Alle Felder hinzufügen' auswählen.
Wenn das nicht funktioniert, wird die Tabelle nicht gefunden, ist beschädigt, oder es fehlen Dateien.
-
azad187 schrieb:
ich habe bisher noch nichts mit connection gemacht die liegt local mit im verzeichnis dache die findet er dann gleich :)...
Du meinst die Datenbankdatei oder? Falls ja, dann hast Du ein grundsätzliches Verständigungsproblem. Die Connection ist die Verbindung zu einer Datenbank. Das hat nur mittelbar mit der DB-Datei zu tun.
Dein Query kann niemals funktionieren. Du fragst immer Tabellen,Views etc. (logische Strukturen inner halb einer DB) ab!
Select * from <<Datei>> ist einen Verweis an Grundlagen Datenbanken als die Hilfe zu Objekt TQuery wert, und zwar in der Reihenfolge.
-
@caspar_louis: Das ist schon richtig, aber bei Paradox und dBase funktioniert das tatsächlich ohne eine Verbindung anzugeben, wenn die Dateien im Verzeichnis der EXE liegen (diese Vorgehensweise ist trotzdem nicht zu empfehlen, da stimme ich dir zu).
-
Vielen Dank Joe_M
es klappt soweit.. ich war auch blöde hatte nebenbei auch die Datenbank in MS Access offen zum rumbasteln.. deswegen hat er sie auch nie geöfnet

-
Jetzt müsste sie nur noch im DBgrid erscheinen

wie geht denn das nun `?
-
Ich habe jetzt anhand von Columns schonmal jedes Feld eingefügt allerdings seh ich nur die überschriften die Datensätze selber hat er noch nicht drinne wieso ???
-
ich kann auch leider nicht im Tquery die Attribute holen da das grau untermalt ist
-
Ich weiß nicht, was Du mir sagen willst...

Wenn Du so vorgegangen bist, wie ich es beschrieben habe, brauchst Du nur noch, an einer geeigneten Stelle, die Query zu öffnen.
Dafür schreibst Du z.B. im Konstruktor:
Query1->Open();Und im Destruktor:
if (Query1->Active) Query1->Close();
-
Joe_M. schrieb:
@caspar_louis: Das ist schon richtig, aber bei Paradox und dBase funktioniert das tatsächlich ohne eine Verbindung anzugeben, wenn die Dateien im Verzeichnis der EXE liegen ...
Wieder was gelernt.
dBase habe ich das letzte mal 1993 programmiert, noch für DOS'e.
Paradox habe ich mir nie angetan.
-
Also ganz langsam

im TDataSource steht : DataSet = Query1
im TQuery : DataBaseName = dBASE-Dateien
DataSource = DataSource1im DBGrigd : DataSource = DataSource1
Unter der TQuery->Query1 (sprich wo ich doppelklick gemacht habe konnte ich alle Tabellen einfügen, das at geklappt nun wollte ich rechtsklick machen und die Attribute für die Tabellen holen, das ist grau unterlegt und geht nicht...
Weiter biem DBGrid da habe ich nun unter Columns alle Tabellen eingefügt, somit erhielt ich schonmal alle Spaltenüberschriften.. aber die Attribute fehler weiterhin..
Im DBGrid wird so nix angezeigt... spriche nur Tabellenüberschriften und Attribute..
Ich möchte natürlich aber auch die Attribute HELP ! :p
-
ich meinte natürlich nur Tabellenüberschriften OHNE Attribute
-
azad187 schrieb:
Unter der TQuery->Query1 (sprich wo ich doppelklick gemacht habe konnte ich alle Tabellen einfügen, das at geklappt nun wollte ich rechtsklick machen und die Attribute für die Tabellen holen, das ist grau unterlegt und geht nicht...
Was erwartest Du an dieser Stelle? Hast Du ein Data-Dictionary erzeugt? Ohne geht es nicht. Was stellst Du dir unter diesen Attributen vor?
azad187 schrieb:
Weiter biem DBGrid da habe ich nun unter Columns alle Tabellen eingefügt, somit erhielt ich schonmal alle Spaltenüberschriften.. aber die Attribute fehler weiterhin..
Welche Tabellen? Eigentlich kannst Du an dieser Stelle nur Felder aus der/den Tabelle(n) aus dem Select einfügen. Wenn nur die Feldnamen angezeigt werden und sonst nichts, wird die Datenmenge wohl leer sein?!?
azad187 schrieb:
Im DBGrid wird so nix angezeigt... spriche nur Tabellenüberschriften ohne Attribute..
Ich möchte natürlich aber auch die Attribute.siehe oben
-
Was erwartest Du an dieser Stelle? Hast Du ein Data-Dictionary erzeugt? Ohne geht es nicht. Was stellst Du dir unter diesen Attributen vor?
Nein ich habe kein Data Dictionary, aber wenn man rechtsklick auf die Tabelle macht kann man Attribute holen dies ist aber grau unterlgt... Was stellt man sich wohl unter Attribute vor.... Alle Daten die z.b Kundenname angehören...
azad187 schrieb:
Weiter biem DBGrid da habe ich nun unter Columns alle Tabellen eingefügt, somit erhielt ich schonmal alle Spaltenüberschriften.. aber die Attribute fehler weiterhin..Welche Tabellen? Eigentlich kannst Du an dieser Stelle nur Felder aus der/den Tabelle(n) aus dem Select einfügen. Wenn nur die Feldnamen angezeigt werden und sonst nichts, wird die Datenmenge wohl leer sein?!?
Er soll doch einfach nur im Dbgrid die ganzen Daten ausspucken das wird doch nicht zuviel verlang sein Access macht das doch auch und jede andere Datenbank wenn ich alles Select habe was in der Kunden.dbf enthalten ist soll er mich auch alles anzeigen :D.. Die Datenmengen sind ganz sicher nicht leer!
-
Schau doch bitte mal in der BCB Hilfe unter Feldattribute.
Du meinst wohl die Werte. Die sind im Feldeditor nicht einsehbar. Im DBGrid brauchst Du nichts einzutragen. Die Feldnamen werden direkt aus der Tabelle gelesen.
azad187 schrieb:
Er soll doch einfach nur im Dbgrid die ganzen Daten ausspucken das wird doch nicht zuviel verlang sein Access macht das doch auch und jede andere Datenbank wenn ich alles Select habe was in der Kunden.dbf enthalten ist soll er mich auch alles anzeigen :D.. Die Datenmengen sind ganz sicher nicht leer!
Genau das passiert, wenn Du das machst, was ich gepostet habe. Du mußt nichts anderes machen! Keine Spalterüberschriften im DBGrid eingeben - nichts weiter. Nur die drei Komponenten auf das Form legen, den Select unter SQL eintragen, die Query öffnen und natürlich auch das Programm starten...
-
Also ich weiss ja schonmal das er auf Die Datenbank zugriff hat aber wie gesagt wenn ich das exakt so mache wie du es sagst und dann einfach nen button reinklatsche der sagt Query1->Open(); kommt wieder der Speriauslastungsfehler
-
Speriauslastungsfehler = Speicherauslastungsfehler

-
Tja, dann weiß ich auch nicht weiter. Es kann natürlich auch einfach eines der üblichen Probleme sein, die dBase und die BDE heutzutage haben. Schließlich wird beides seit Jahren nicht mehr weiterentwickelt und ist laut Borland End-Of-Life.
Du kannst natürlich mal mit den Parametern in der BDE rumexperimentieren (unter Konfiguration | System->Init). Aber ich kenne nur die Probleme, die Paradox verursacht. Bei dBase kann ich dir nicht sagen, welche Parameter Du verändern mußt. Grundsätzlich kannst Du die Speicherverwendung anheben. Mach dir aber ein Backup der alten Config, bevor Du anfängst zu testen.
-
Also mal zum Mitmeißeln
if (Query1->Active) Query1->Close(); // mach ich immer zur Sicherheit auch vor erster Belegung Query1->SQL->Clear(); // SQL leermachen! Da könnte was aus der Entwurfszeit drin stehen Query1->SQL->Add("select <<Column1>>,<<Column2>> ... from <<Table1>> where <<Bedingung>> order by <<Sortierung>>"); // Damit hast Du Deine gewünschte Datenmenge beschrieben Query1->Open(); //Damit hast Du Deine Datenmenge "connected"=die Abfrage ausgeführtDamit hast Du Dein DataSet (Abfragemenge) der Datenquelle (Datasource). Diese Datenquelle wir durch DBGrid lediglich angezeigt. Wenn Du die Spalten( Column) nicht anders benennen willst, mußt Du hier keine Spalten angeben.
Die Einschränkung der Spalten kannst Du direkt im Select vornehmen.
Auch in der Query mußt Du den Feldeditor nicht zwangslaäfig verwenden.ABER:
Deine SQL-Abfrage muß SQL-kompatibel zum SQL Deines DBMS sein. Kann es sein, daß Deine Abfrage nicht funktioniert?
-
mit der Varainte von casper kommt Indexfehler