wir haben noch ein problem mit dem format date. und zwar wollen wir aus
einem labelcaption, wo wir ein datum als String vorliegen haben ein date
machen. Allerdings kriegen wir mit dem strtodate-befehl die Meldung
"Label ist kein gültiges datum"
wenn wir schreiben
s:=strtodate(label.captiion);
datamodul.ibquery.sql.add('select * from termin where datum = '''+ s+''');
dankos
HF
Das Datum im SQL-statement muss im folgendem Format sein:
MM/DD/YYYY (Monat/Tag/Jahr)
Mit StrToDate wird das datumformat vom Computer ubernommen.
Gruesse,
Erwin.
Wir haben schon versucht das Datum über formatdate zu ändern bzw.
anzupassen aber das war auch kein Erfolg.
Kannst Du deinen Tip konkretisieren (Vielleicht Delphi-Befehl)? Wir
verstehen nicht wie wir das umsetzten sollen?
"Erwin Krijnen" <ne...@nospawm.cifera.nl> schrieb im Newsbeitrag
news:Zd7h7.91051$z7.9...@dbsch1.home.nl...
>
> > Das Datum im SQL-statement muss im folgendem Format sein:
>
> Er kam doch gar nicht bis zum SQL-Statement.
>
>
> > MM/DD/YYYY (Monat/Tag/Jahr)
>
> Und woher weißt du das? Sie haben nicht geschrieben, welche Datenbank
> sie nutzen. Meine DB kann es in dem Format nicht verarbeiten.
>
> Gruß, Kathinka
Doch, haben sie. Allerdings einen Thread vorher...
;-)
Benni
--
Open minds. Open source. Open limits.
Inwiefern war das kein Erfolg?
- Fiel das Datum nicht im Format MM/DD/YYYY aus der formatdate-Methode
heraus? In diesem Fall probiert mal 'm"/"d"/"yyyy' für den Format-String.
- Oder konnte Interbase mit diesem Format nichts anfangen? Dann schaut
in der Interbase-Doku nach, wie Interbase ein Datum formatiert haben möchte.
- Oder war es was noch anderes? Ihr solltet versuchen, eure Fragen
konkreter zu stellen, dann bekommt ihr auch konkretere Antworten.
Gruß
So long,
Thomas G. Liesner
--
Suche aus persönlichen Gründen neue Arbeitsstelle, mögliche Schwerpunkte
Softwareentwicklung / Administration - Nähe Münster/Greven oder Telearbeit
bevorzugt - <mailto:Job-O...@tgl.westfalen.de>
Danke für die Antwort. Vielleicht sollte ich unser Problem etwas
ausführlicher erläutern. Also, wir haben eine Routine geschrieben, die unser
immer die Datum"s" der aktuellen Woche erzeugt, d.h. wir sagen 14.9.2002 und
wir bekommen das Datum des Montags, dienstags ... der zugehörigen Woche
zurück. Dieses Datum schrieben wir in ein label. Problem ist jetzt, das wir
nicht nur die daten in labelform auf dem rechner sehen wollen, sondern in
DBGrids auch noch die zu den einzelnen Tagen gehörenden Termine, Aufträge,
Aktionen, d.h. wir müssen im grid immer die zum Datum gehörenden Dinge
anzeigen. Dazu wollten wir das Datum konvertieren um es in einer SQL-select
Anweisung eintragen zu könne. Klappt aber nicht, wir bekommen
"Label ist kein gültiges datum"
Wir haben jetzt auch schon probiert das datum von der conversion in ein
string abzugreifen, um es dann nicht mehr zurückkonvertieren zu müssen, was
dann zu der Fehlermeldung, mit folgenden Programmiercode, wobei so ein datum
im datumsformat ist:
ibquery.sql.add('select * from TERMIN where DATUM = ''+SO+''')
Dabei gab es dann den Fehler
'coversion error from string ''+So+'''
Wer weiß Rat, wie bekommen wir nur das Datum.
Grüße und Danke
Florian
"Benjamin Lippelt" <fus...@fussel.de> schrieb im Newsbeitrag
news:3B8516B...@fussel.de...
> Allerdings kriegen wir mit dem strtodate-befehl die Meldung
>
> "Label ist kein gültiges datum"
>
> wenn wir schreiben
>
> s:=strtodate(label.captiion);
Das glaube ich nicht. Außer natürlich, ihr habt den Text "Label" in das
Label geschrieben, was ganz sicher kein gültiges Datum wäre.
Die Meldung, die ich vor meinem dritten Auge habe, lautet etwas wie
"30.2.2001 ist kein gültiges Datum"
Und sagt Euch einfach, daß der String, den Ihr in ein TDateTime wandeln
wolltet nicht passt. Entweder er erfüllt nicht die Anforderungen von
StrToDate (die ich nicht genau kenne, mit einem Datum im ShortDateFormat
oder LongDateFormat sollte es aber gehen), oder bildet wie in meinem
Beispiel einen Tag, den es gar nicht gibt.
Ciao, MM
--
Marian Aldenhövel, Hainstraße 8, 53121 Bonn
http://www.marian-aldenhoevel.de
"Dann schaut er nach der Moulinette. Hat die eine Prüfplakette?
Ham' im Schrank die Kleiderbügel alle auch das Gütesiegel?"
> Wir haben jetzt auch schon probiert das datum von der conversion in ein
> string abzugreifen, um es dann nicht mehr zurückkonvertieren zu müssen,
Viieeel besser.
> ibquery.sql.add('select * from TERMIN where DATUM = ''+SO+''')
Da sind verschiedene Dinge falsch.
Zunächst mal ist das, was da steht nicht ein String, der den String
enthält, der in S0 steht (wenn S0 ein string wäre, dazu kommen wir gleich).
Es ist stattdessen der String
"..DATUM='+S0+'"
Also mit dem konstanten string "+S0+" da drin. Richtig wäre (wenn S0 ein
String wäre):
ibquery.sql.add('select * from TERMIN where DATUM = '''+SO+'''')
Zählt die Hochkommata und beachtet, was das Syntax-Highlighting im Editor
tut.
Der zweite Fehler besteht darin, daß S0 kein String ist, das könnt ihr
nicht einfach in einen String hineinbasteln. Ich könntet DateToStr
verwenden, wärt dann aber nicht weiter als vorher.
Die schönste Lösung, die langfristig am wenigsten Ärger verursacht, sieht
so aus:
ibquery.sql.Text:='select * from TERMIN where DATUM = :Datum;';
":Datum" ist ein Parameter. Den setzt ihr als nächstes:
ibQuery.ParamByName('Datum').AsDateTime:=S0;
Fertig. Die Formatierung wo nötig und das Handling des richtigen Typs
übernimmt jetzt die Bibliothek für Euch.
HF
Nochmals vielen Dank!!!
HF
Vielen Dank für Deine Hilfe, sie hat uns sehr weitergeholfen. Ein Problem
haben wir allerding noch. Den Select-Befehl haben wir so umgesetzt und es
funktioniert auch soweit ABER: Wir lesen unser Datum mit einer Prozedur aus
einem Kalender aus (das funktioniert). In der nächsten Prozedur kommen die
Select-Befehle, die die Termine den richtigen Tagen zuordnen. Das Problem
ist nun allerdings, daß in dieser Prozedur als Datum immer das
Delphi-Urdatum 1899 verwendet wird, obwohl die Variablen für die einzelnen
Wochentage (So, Sa, Fr...) das richtige Datum haben.
Kannst Du uns hier weiterhelfen?
HF
> Das Problem ist nun allerdings, daß in dieser Prozedur als Datum immer das
> Delphi-Urdatum 1899 verwendet wird
Das liegt daran, daß eine Uhrzeit eben auch im TDateTime-Typ ausgedrückt
wird, aber dort nur einen Nachkommaanteil hat. Der "Tag 0" ist aber der
besagte 31.12.1899.
Den übrigens nicht Borland sondern Microsoft ausgesucht hat.