![]() |
Datenbank: DBase • Zugriff über: BDE
Datenbankinhalte sortiert ausgeben
Ich greife per BDE (sprich mit TTable und TDataSource) auf eine dbf-Datei zu. Dies funktioniert soweit auch perfekt.
Nur möchte ich nun noch die Ausgabe nach den Feldern
Code:
Wie das hier nun aber funktionieren soll, weiß ich nicht so ganz, da ich auch nicht weiß, wo der SQL-Befehl dann eingesetzt werden muss.
SELECT * FROM vt06_07 ORDER BY DATUM DESC,KLASSEN ASC,STUNDEN ASC;
Theoretisch müsste es einmal beim Öffnen und dann beim Updaten immer ausgeführt werden. Desweiteren sollten an Hand der Datumswerte (normales Format xx.xx.xxxx) nur bestimme Tage (am Besten der momentane und der nächste) ausgelesen werden. Kann mir da jemand helfen? |
Re: Datenbankinhalte sortiert ausgeben
Hallo Svenkan,
dazu musst du eine TQuery Komponente einsetzen. |
Re: Datenbankinhalte sortiert ausgeben
Einfach statt TTable TQuery nehmen und die Abfrage in Query.SQL.Text eintragen.
|
Re: Datenbankinhalte sortiert ausgeben
Code:
Leider möchte er bei mir auf ein völlig falsches Verzeichnis (E:\Programme\Gemeinsame Dateien - nicht einmal vorhanden) zugreifen, statt direkt auf die DB im Stammverzeichnis.
SELECT * FROM VT06_07.dbf ORDER BY DATUM DESC,KLASSEN ASC,STUNDEN ASC;
Und wenn ich per Direktlink drauf zugreifen möchte, kommt eine Fehlermeldung vonwegen Keywords, Token und sowas.. |
Re: Datenbankinhalte sortiert ausgeben
Trage den Pfad in .DataBasename ein
|
Re: Datenbankinhalte sortiert ausgeben
Wie kann ich denn nun die Query-Ergebnisse ins Grid überführen?
Das Abrufen funzt ja schonmal super. |
Re: Datenbankinhalte sortiert ausgeben
Hallo Svenkan,
genauso wie bei TTable, einfach die DataSource in diesem Fall auf die neue Query setzen und für das Grid genau diese Source auswählen. |
Re: Datenbankinhalte sortiert ausgeben
Das habe ich bereits versucht, allerdings zeigt er mir dann an, dass es ne ungültige Quelle ist.
|
Re: Datenbankinhalte sortiert ausgeben
Hallo Svenkan,
du musst eine DataSource Komponente nehmen und bei DataSet die eingefügte TQuery Komponente auswählen. Beim TDBGrid setzt du DataSource auf die DataSource Komponente. Um das Ergebnis zu sehen, musst du noch die Query ausführen: MyQuery.Open; |
Re: Datenbankinhalte sortiert ausgeben
Wie gesagt, funktioniert die Deklinierung über DataSet leider nicht.
Alles andere ist fertig eingefügt. Fehlermeldung: 'Circular datalinks are not allowed' |
Re: Datenbankinhalte sortiert ausgeben
Du mußt den Query in der dataSource auswahlen und nicht die dataSource im Query,
|
Re: Datenbankinhalte sortiert ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, hab ich doch gemacht.
|
Re: Datenbankinhalte sortiert ausgeben
Hallo Svenkan,
dann hast du die Werte falsch gesetzt. Grid > DataSource > Query. Wenn im Grid die DataSource ausgewählt ist, die auf die Query zeigt, dann funktioniert es. Stelle noch einmal sicher, dass in der Eigenschaft DataSource der Query Komponente KEIN Eintrag steht! |
Re: Datenbankinhalte sortiert ausgeben
Irgendwie funktioniert das Hinzufügen von Querys noch nicht so wirklich.
Delphi-Quellcode:
Der Code müsste so doch eigtl richtig, sein?
Query1.Open;
Query1.SQL.Clear; Query1.SQL.Add('SELECT * FROM "VT'+sj+'"'); Query1.SQL.Add('WHERE NOT S = M AND NOT s= E AND DATUM BETWEEN ('+today+' AND '+tomorrow+')'); Query1.SQL.Add('ORDER BY DATUM DESC, KLASSEN, S'); Er gibt mir nämlich aus, dass kein Query vorhanden sei..... |
Re: Datenbankinhalte sortiert ausgeben
Hallo Svenkan,
du kannst die Query erst ausführen (öffnen), wenn sie definiert ist.:
Delphi-Quellcode:
Query1.Close;
Query1.SQL.Clear; Query1.SQL.Add('SELECT * FROM "VT'+sj+'"'); Query1.SQL.Add('WHERE NOT S = M AND NOT s= E AND DATUM BETWEEN ('+today+' AND '+tomorrow+')'); Query1.SQL.Add('ORDER BY DATUM DESC, KLASSEN, S'); Query1.Open; |
Re: Datenbankinhalte sortiert ausgeben
Mhm..jetzt kommt der Fehler vom Anfang wieder:
Zitat:
|
Re: Datenbankinhalte sortiert ausgeben
Hallo Svenkan,
das liegt daran, dass die Query syntaktisch inkorrekt ist:
Delphi-Quellcode:
wie sehen denn today und tomorrow aus?
Query1.SQL.Add('SELECT * FROM "VT'+sj+'"');
Query1.SQL.Add('WHERE NOT S = M AND NOT s= E AND DATUM BETWEEN ('+today+' AND '+tomorrow+')'); |
Re: Datenbankinhalte sortiert ausgeben
datumswerte müssen gequoted werden oder besser man verwendet Parameter
Delphi-Quellcode:
Query1.Close;
Query1.SQL.Text := 'SELECT * FROM "VT'+sj+'"'; Query1.SQL.Add('WHERE NOT S = M AND NOT s= E AND DATUM BETWEEN :von AND :bis'); Query1.SQL.Add('ORDER BY DATUM DESC, KLASSEN, S'); Query1.ParamByName('von').Value := today; Query1.ParamByName('bis').Value := tommorrow; Query1.Open; |
Re: Datenbankinhalte sortiert ausgeben
@ MrSpock:
Delphi-Quellcode:
Es soll halt, falls der momentane Tag Nr. 5 (Freitag) oder 6 (Samstag) ist, jeweils 3 bzw. 2 Tage weitergerechnet werden.
var
Ini: TIniFile; sj,path,today,tomorrow: String; dnr: Integer; ... dnr:=DayOfWeek(Date); today:=DateToStr(Date); if dnr=5 then tomorrow:=DateToStr(Date+3) else if dnr=6 then tomorrow:=DateToStr(Date+2) else tomorrow:=DateToStr(Date+1); Da ich mir bei Delphi nicht sicher war, wie man das Datum korrekt weiterrechnet, hab ichs mal auf primitive Weise versucht, weiterzurechnen. Kann natürlich sehr gut sein, dass dort auch dann der Fehler liegt.. @ mkinzler: Danke. Nun bekomm ich aber noch einen Fehler bezüglich unpassender Feldtypen. |
Re: Datenbankinhalte sortiert ausgeben
das Casten nach String kannst du die Sparen:
Delphi-Quellcode:
Query1.ParamByName('von').Value := Date;
Query1.ParamByName('bis').Value := Date+1; |
Re: Datenbankinhalte sortiert ausgeben
Ja, aber ich brauch ja, je nach Tag, sowieso den nächsten Werktag.
Also müsste ichs wohl so regeln. Es bleibt aber das Problem der Typen, da anscheinend andere Typen erwartet werden irgendwo, als gegeben sind. |
Re: Datenbankinhalte sortiert ausgeben
Delphi-Quellcode:
Query1.ParamByName('von').asString := ...
|
Re: Datenbankinhalte sortiert ausgeben
Bringt leider auch nix. :( *seufz*
Ich such mich auch echt schon zu Tode hier.. |
Re: Datenbankinhalte sortiert ausgeben
Wo kommt den der Fehler genau? was für Typen haben die Datenbankfelder?
|
Re: Datenbankinhalte sortiert ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
Der Fehler tritt direkt beim Start des Programms auf.
Ich habe dir einen Screen mit den Werten angehängt, die benutzten Felder schwarz markiert. |
Re: Datenbankinhalte sortiert ausgeben
Der Fehler liegt wohl woanders, nämlich beim Feld s
|
Re: Datenbankinhalte sortiert ausgeben
Ne, ich habs mal ausm WHERE-Teil rausgenommen und es kommt immer noch der gleiche Fehler.
Bevor ich das so adden ließ hats ja auch funktioniert mit dem Feld. Anfangs hat ichs ja direkt im SQL-Teil drin über den Objekt-Inspektor halt. /edit: Wenn ich den Teil mit dem Datum aus dem WHERE-Teil entferne funktioniert der Code. |
Re: Datenbankinhalte sortiert ausgeben
Laß dir doch mal today und tomorrow anzeigen
|
Re: Datenbankinhalte sortiert ausgeben
Hallo Svenkan,
sind M und E auch Felder, die du aber nicht in deinem Anhang zeigst? Oder willst du S mit den Zeichenketten 'M' und 'E' vergleichen? |
Re: Datenbankinhalte sortiert ausgeben
Es funktioniert endlich!
Das Ganze hat wegen dem +2 irgendwie nicht funktioniert. Ich habe tomorrow nun als TDateTime deklariert und nun funktionierts super. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz