Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Filtern in einer Datenbank (https://www.delphipraxis.net/62715-filtern-einer-datenbank.html)

marabu 9. Feb 2006 08:42

Re: Filtern in einer Datenbank
 
Du solltest Parameter verwenden, wie ich es in meinem SQL-Code angedeutet habe, dann umgehst du die Probleme.

Wenn die direkte Verwendung von DateTime-Werten als Parameter-Wert nicht funktionieren sollte, dann verwende String-Literale:

SQL-Code:
'... WHERE datum = DATE ' + QuotedStr(DateToStr(DeinDatum));
marabu

Surrounder 9. Feb 2006 09:08

Re: Filtern in einer Datenbank
 
Zitat:

Zitat von marabu
Du solltest Parameter verwenden, wie ich es in meinem SQL-Code angedeutet habe, dann umgehst du die Probleme.

Wenn die direkte Verwendung von DateTime-Werten als Parameter-Wert nicht funktionieren sollte, dann verwende String-Literale:

SQL-Code:
'... WHERE datum = DATE ' + QuotedStr(DateToStr(DeinDatum));
marabu

das hatte ich auch versucht, aber das ändert nichts.

SQL-Code:

Add( 'SELECT * FROM WellenInformation WHERE gamdate = ' + QuotedStr(DateToStr( date ));
führt ebenfalls zu einer Exception mit "type mismatch", ich glaub ich hab schon alle Datumsformate durch getestet, nur keines funktioniert. Wenn ich in der Tabelle einen Filter setzte auf "gamdate=08.02.2006" das geht :wall:

marabu 9. Feb 2006 10:02

Re: Filtern in einer Datenbank
 
Ich habe keine Erfahrung im Umgang mit FlashFiler, aber der Dokumentation glaubte ich zu entnehmen, dass ein Datums-Literal im SQL-Statement aus der Literal-Konstante DATE und einem String-Literal zu bilden ist - wie in meinem Beispiel. Du lässt das Schlüsselwort DATE einfach weg ...

marabu

Surrounder 9. Feb 2006 10:32

Re: Filtern in einer Datenbank
 
Zitat:

Zitat von marabu
Ich habe keine Erfahrung im Umgang mit FlashFiler, aber der Dokumentation glaubte ich zu entnehmen, dass ein Datums-Literal im SQL-Statement aus der Literal-Konstante DATE und einem String-Literal zu bilden ist - wie in meinem Beispiel. Du lässt das Schlüsselwort DATE einfach weg ...

marabu

Das verstehe ich jetzt nicht ganz wie Du das gemeint hast. Meinst Du ich muss noch irgend einen Formatstring angeben in dem SQL Statment?

Wenn ich das von hand versucht hatte dann habe ich bisher das eingegeben:

SQL-Code:
Add( 'SELECT * FROM WellenInformation WHERE gamdate = ''08.02.2006''' )
oder hab ich dich falsch verstanden?

marabu 9. Feb 2006 11:11

Re: Filtern in einer Datenbank
 
Wenn es so funktioniert ist es gut so. Ich hatte in der Dokumentation gelesen:

Zitat:

<date literal> = DATE <string literal>
Daraus habe ich geschlossen, dass dein SQL-Statement so aussehen muss:

SQL-Code:
Add( 'SELECT * FROM WellenInformation WHERE gamdate = DATE ''08.02.2006''' )
marabu

Surrounder 9. Feb 2006 11:43

Re: Filtern in einer Datenbank
 
:duck: du hast recht, in meinem Handbuch ist das nicht beschrieben, aber ich hab mir gerade die aktuellste Doku im Internet gesucht und da steht das mit dem Literal Date drinnen.

Jetzt bekomme ich nur noch eine "Syntax Error in Date Literal" :gruebel:

Aber ich komme meinem Ziel näher ;-)

Edit:

SQL-Code:

Add( 'SELECT * FROM WellenInformation, Lagerstellen WHERE WellenInformation.Idx= Lagerstellen.WiIdx AND gamdate = DATE ' + QuotedStr(DateToStr( date ));;
Noch wer eine Idee?

So soll es laut Doku aussehen

<string literal< = ' [/ <noQuote> | '' } ... ]' :?:

Surrounder 9. Feb 2006 12:05

Re: Filtern in einer Datenbank
 
:bounce2: ich habs, die verwenden folgendes Datumsformat '2006-02-08'

Danke für deine Hilfe Marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.
Seite 2 von 2     12   

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