Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Abfrage auf ein Textfeld in Access-DB (https://www.delphipraxis.net/130959-sql-abfrage-auf-ein-textfeld-access-db.html)

User11 16. Mär 2009 17:42

Datenbank: Access • Zugriff über: SQL

SQL-Abfrage auf ein Textfeld in Access-DB
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

bishr habe ich schon allein durch Stöbern in diesem Forum vieles in meinen Programmen umsetzen können. Nun habe ich aber ein Problem, bei dem ich nicht weiter komme.

Für meinen Reha-Sportverein habe ich ein Programm geschrieben, dass unter anderem auch die Mitgliederverwaltung beinhaltet. Dazu greife ich mittels ADO auf eine Access-DB zu. Unter anderem gibt es dort ein Feld "Kostenübername-Bis". Zunächst hatte ich dieses Feld als Datum deklariert, konnte dies aber nicht aufrecht erhalten, da es auch Mitglieder gibt, bei denen die Kostenübernahme der Krankenkasse abgelaufen ist und die jetzt Selbstzahler sind. Dann steht da Space drin. Also umgewandelt in Textfeld.

Mein Problem ist, wenn ich per SQL prüfen möchte, bei welchen Mitgliedern die Kostenübernahme abgelaufen ist, prüft SQL scheinbar primär auf die beiden ersten Stellen des Datums ab. Das Jahr bzw. der Monat sind dann scheinbar egal. Ergebnis siehe Screen.

Dies funktioniert mit Date
[sqltext := ('Select mname, * From Tsv WHERE küztrm_bis <= now() ;'); //geht nur wenn Feld als Date deklariert ist]

Hiermit kommt das falsche Ergebnis:
[/Heute := datetostr(now);
sqltext := ('Select mname, * From Tsv WHERE küztrm_bis <= ''' + heute +''';');]

Hat jemand einen Lösungsvorschlag für mich?

Vielen Dank im voraus
Rainer

WoGe 16. Mär 2009 18:26

Re: SQL-Abfrage auf ein Textfeld in Access-DB
 
Zitat:

Zitat von User11
Zunächst hatte ich dieses Feld als Datum deklariert....

Das würde ich auch dringend wieder so machen. Alles andere ist eher fragwürdig.
Den Feldinhalt kannst Du auch mit Null befüllen um ihn aus der Auswahl herauszuhalten.
Oder auch mit einem Datum das lange vor jedem tatsächlich möglichen ist.

Generell ist es eine schlechte Idee in den Feldtyp eine Funktionalität zu verpacken.
Grüsse
wo

nahpets 17. Mär 2009 08:36

Re: SQL-Abfrage auf ein Textfeld in Access-DB
 
Hallo,

ändere das Feld wieder auf Datum, sonst wird das nichts (mit vertretbarem Aufwand).
Wenn es keinen Termin gibt, so lasse das Feld leer (Null). Dann solltest Du mit einer Abfrage in der Form zurecht kommen:
SQL-Code:
sqltext := ('Select mname, * From Tsv WHERE küztrm_bis <= now() and küztrm_bis is not null;');

User11 17. Mär 2009 13:48

Re: SQL-Abfrage auf ein Textfeld in Access-DB
 
Hallo,

vielen Dank für eure schnellen Antworten. Das mit dem Feld leer lassen, hatte ich zunächst auch versucht, aber nicht hinbekommen. Denn zunächst ist generell ein Datum drin, erst wenn die Kostenübernahme der Krankenkasse abgelaufen ist, soll da nichts mehr drin stehen. Das Datum habe ich zunächst immer durch Space überschrieben. Dann kam natürlich der Fehler, kein gültiges Datum. Wenn ich Space lösche, klappt.

Da bin ich erst durch euren Hinweis drauf gekommen.

Vielen Dank nochmals.

Gruß
Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 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