Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeit/Datumswert mit einer Tabelle vergleichen (https://www.delphipraxis.net/82045-zeit-datumswert-mit-einer-tabelle-vergleichen.html)

raiguen 7. Dez 2006 14:28

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von SilverMoonGirl
...
Ich habe eine Tabelle mit einer Spalte _BackUpTime vom Typ DateTime, deren Inhalt so aussieht
"15:11:45, 17:11:2006"
...

Sehe jetzt gerade (*sollte mal meine Brille putzen*gg*) dass 1. Datum und Zeit vertauscht sind und 2. der Datumstrenner gleich dem Zeittrenner ist...
Davon mal abgesehen stellt sich mir immer noch die Frage, wie kommt es zu dieser doch merkwürdigen Anzeige? Das Tabellenfeld scheint ja doch vom Typ DateTime zu sein...
Wie hast du den FeldInhalt angezeigt? Mal direkt über die DatenbankOberfläche bzw den DatenbankExplorer oder kommt der gleich aus einer SQL-Abfrage? Ist irgendwo speziell für dieses Feld im FeldEditor (ObjektInspektor!) ein DisplayFormat in der o.a. Form eingegeben??
Mir will es einfach nicht in den Kopf, dass eine 'schnöde' ParadoxTabelle (sorry für den Ausdruck) ein DateTime-Feld so 'verkorkst' darstellt :gruebel: Da muss irgendwo anders noch was gedreht worden sein...

marabu 7. Dez 2006 20:47

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hallo Simone,

vielleicht besser so:

Delphi-Quellcode:
const
  SELECT_STMT
    = 'SELECT * FROM Aufdate A WHERE AuftragNr = :auftrag AND A."_BackupTime" = :datzeit'
    ;
var
  datZeit: TDateTime;
begin
  datZeit := DBGZeit.SelectedField.AsDateTime;
  with DBmodul.QcopyTable do
  begin
    SQL.Text := SELECT_STMT;
    // ParamCheck := True; // Im OI reicht ...
    Params.ParamByName('auftrag').AsInteger := DBGrid1.SelectedField.AsInteger;
    Params.ParamByName('datzeit').AsDateTime:= datZeit;
    Open;
  end;
Gute Nacht

SilverMoonGirl 7. Dez 2006 20:51

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von raiguen
Da muss irgendwo anders noch was gedreht worden sein...

Viel schlimmer, ich bin zu blöd zum abschreiben und habe ein paar Doppelpunkte zuviel gemacht :wall: Und was noch viel schlimmer ist, es ist mir nichmal aufgefallen :|
Richtig wäre eigentlich "15:11:45, 17.11.2006" gewesen.

Sorry, das war echt keine Absicht :wall:

raiguen 7. Dez 2006 21:38

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von SilverMoonGirl
...
Richtig wäre eigentlich "15:11:45, 17.11.2006" gewesen.

Sorry, das war echt keine Absicht :wall:

Passiert jedem irgendwann einmal, grad dann, wenn man eh ein bissl unter Stress steht... also, take it easy...

Trotz alledem muss ich nochmal auf das hier zurückkommen:
Zitat:

Zitat von SilverMoonGirl
...
Ich habe eine Tabelle mit einer Spalte _BackUpTime vom Typ DateTime, deren Inhalt so aussieht
"15:11:45, 17:11:2006"

Dies habe ich jeweils in Zeit und Datum getrennt und zur weiteren Bearbeitung als String umgewandelt.
...

Was mir immer noch nicht in den Kopf will ist diese Art der 'Anzeige' des DateTime-Feldes (mal abgesehen davon, dass der Datumstrenner da nicht korrekt ist) -> hat Paradox 9 neuerdings erst die Zeit und dann das Datum und dann auch noch mit Komma und Leerzeichen getrennt? Dann wäre der Name Paradox im wahrsten Sinne des Wortes zu Recht :P
Und wie hast du diesen merkwürdigen Feldinhalt in einen String reinbekommen, um diesen dann nach Datum und Zeit zu trennen?
Nochmal: hast du dir die Tabelle und speziell das Feld mit der DB-Oberfläche oder ähnlichem Delphi-eigenem Dateibetrachter angeschaut? Steht das da wirklich so drin??? :gruebel:

Sorry, alle bisher gemachten Vorschläge zwecks DatumZeit-'Umwandlung' für die Query können m.E. zu nichts führen (ausser zu Fehlern), weil IMHO irgendetwas mit dem FeldInahlt nicht stimmt :gruebel: :gruebel:

SilverMoonGirl 8. Dez 2006 08:35

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von raiguen
Und wie hast du diesen merkwürdigen Feldinhalt in einen String reinbekommen, um diesen dann nach Datum und Zeit zu trennen?

So:
Delphi-Quellcode:
with DBmodul.Qbackuptime do  
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT Aufdate."_BackUpTime" AS Datum FROM Aufdate WHERE '+ Spaltename+ ' = :zelleNr');
    ParamCheck:= true;
    ParamByName('zelleNr').AsInteger:= StrToInt(Nr);
    Open;
  end;

datumzeit:= dbmodul.Qbackuptime.FieldByName('Datum').AsDateTime;

 with dbmodul.Qdatum do
    begin
      [...]
      FieldByName('Datum').AsString:= DateToStr(datumzeit); //Datum
      FieldByName('Zeit').AsString:= TimeToStr(datumzeit);  //Zeit
      [...]
    end;
Zitat:

Zitat von raiguen
Nochmal: hast du dir die Tabelle und speziell das Feld mit der DB-Oberfläche oder ähnlichem Delphi-eigenem Dateibetrachter angeschaut? Steht das da wirklich so drin??? :gruebel:

Ja habe ich, zu sehen im Anhang

raiguen 8. Dez 2006 09:21

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Besten Dank Simone!
Allerdings komme ich einfach nicht mit dem 'Format' des DateTime-Feldes klar; scheint mir echt ne 'Neuerung' in Paradox 9 zu sein :gruebel:
Wo bzw wie wird überhaupt die BackupTime bzw dieses Tabellenfeld gefüllt??...
Sorry, wenn ich dumme Fragen stelle, aber wie bereit gesagt; ich blick da nicht mehr durch *schulterzuck* :roll:

marabu 8. Dez 2006 09:43

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hi,

wenn das Feld vom Type ftDateTime (@) ist, dann ist mir doch die Darstellung in Paradox 9 egal. Ich bleibe vorerst bei meinem Lösungsansatz aus Beitrag #12.

Freundliche Grüße

raiguen 8. Dez 2006 10:19

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von marabu
Hi,

wenn das Feld vom Type ftDateTime (@) ist, dann ist mir doch die Darstellung in Paradox 9 egal. Ich bleibe vorerst bei meinem Lösungsansatz aus Beitrag #12.

Freundliche Grüße

:wall: na klar! Da hast du völlig Recht! Ich habe mich da durch die merkwürdige Darstellungsart (Anzeige) völlig irritieren lassen und somit auch entsprechend falsche Gedankengänge gehabt! Sorry!

@Simone: ähnliche Irritation ist dir insofern ja auch unterlaufen ;) siehe #1
Code:
datumzeit:= DBGZeit.SelectedField.AsString + ', '+ DBGdatum.SelectedField.AsString ;
So dürfte es dann funktionieren:
Code:
datumzeit:= DBGDatum.SelectedField.AsString + ' ' + DBGZeit.SelectedField.AsString ;
und natürlich das was marabu gesagt hat...

Viel Erfolg!

SilverMoonGirl 11. Dez 2006 14:45

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Also ich hab das jetzt nochmal probiert, aber irgendwas mach ich immer noch falsch :roll:

Jetzt bekomme ich den Fehler zurück, dass die Typen im Ausdruck nicht übereinstimmen. :gruebel:

Delphi-Quellcode:
const
  SELECT_STMT
    = 'SELECT * FROM "[...]\Aufdate" WHERE AuftragNr = :auftrag AND "_BackupTime" = :datzei';

datumzeit:= DBGzeit.SelectedField.AsDateTime + DBGdatum.SelectedField.AsDateTime;

 with DBmodul.QcopyTable do
  begin
    Close;
    SQL.Clear;
    SQL.Text:= SELECT_STMT;
    ParamCheck:=true;
    ParamByName('auftrag').AsInteger := DBGrid1.SelectedField.AsInteger;
    ParamByName('datzei').AsDateTime:= datumzeit;
    Open;
  end;

marabu 11. Dez 2006 14:55

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hallo Simone,

du hast vergessen die Zeile zu markieren, in welcher der Compiler meckert.

Die Zuweisung an SQL.Text macht ein vorheriges SQL.Clear überflüssig. Die Eigenschaft ParamCheck setzt man in der Regel nur einmal und dann im OI.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 Uhr.
Seite 2 von 5     12 34     Letzte »    

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