Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Grosses Problem mit Datum/Zeit in Access (https://www.delphipraxis.net/36378-grosses-problem-mit-datum-zeit-access.html)

dragi 19. Dez 2004 12:17


Grosses Problem mit Datum/Zeit in Access
 
Hallo zusammen,

ich hab ein riesen Problem und komme einfach nicht weiter! Also von vorne:

Ich habe eine Access 2003 mdb Datenbank in der ich eine Spalte habe die sich "Datum" nennt und vom Typ Datum/Zeit ist. In Delphi benutze ich ADOConnection, ADODataset und die JetEngine 4.0 um darauf zu zu greifen. Bis jetzt war es auch nir ein Problem aber ich hatte bis Dato immer Text Felder in Access. Jetzt muss es aber ein Datum/Zeit Feld sein. In diesem Datum/Zeit Feld in Access steht jetzt z.B. :

28.12.2004 12:30

Wie kann ich jetzt ein select auf dieses Feld mit dem Datum und der Uhrzeit machen?

Code:
SELECT * From Tabelle where Datum = #28.12.2004#
funktioniert aber da hab ich ja die Uhrzeit noch nicht drin. Wenn ich jetzt

Code:
SELECT * From Tabelle where Datum = #28.12.2004 12:30#
mache dann sagt er mir das ADODataset dieses Punkten Schrägstriche eingefügt das Datum Amerikanisch geschrieben...alles geht solange ich nicht die Uhrzeit dahinter schreibe. Aber ich muss diese mit abfragen.

Kann mir jemand dabei helfen? Wäre echt Klasse...muss das bis Dienstag gelöst haben...

Vielen Dank

dragi

Duffy 19. Dez 2004 12:24

Re: Grosses Problem mit Datum/Zeit in Access
 
Hallo dragi,
indem Du auf >= und <= abfragst
Code:
SELECT * From Tabelle where Datum >= #28.12.2004# and Datum <= #28.12.2004#
Versuch es mal so.

Bye
Claus

dragi 19. Dez 2004 12:27

Re: Grosses Problem mit Datum/Zeit in Access
 
Das funktioniert ja, aber so hab ich die Zeit in dem Feld nicht abgefragt. Es gibt mehrere Datensätze am 28.12.2204 aber mit einer anderen Uhrzeit dahinter. Deshalb muss ich die Uhrzeit ja mit abfragen. ALso irgendwie #28.12.2004 12:30# was aber so geschrieben nicht funktioniert :(

Ich hab das SELECT Statement nur etwas kürzer geschrieben, ich frage es so ab wie du. Wollte es für den Thread nur auf das wesentliche begrenzen, also wie man Datum Uhrzeit aus einem Feld abfragt...hätte ich vielleicht dazu schreiben sollen, sorry

Dragi

fkerber 19. Dez 2004 12:30

Re: Grosses Problem mit Datum/Zeit in Access
 
Hi!

Weiß nicht, ob das so geht, aber wie wäre es mit einem TimeStamp?


Ciao Frederic

Duffy 19. Dez 2004 12:32

Re: Grosses Problem mit Datum/Zeit in Access
 
Hallo dragi,
und wenn Du anstatt von "#28.12.2004 12:30#" "#28.12.2004 12:30:00#" angibst.

bye
Claus

dragi 19. Dez 2004 12:44

Re: Grosses Problem mit Datum/Zeit in Access
 
Dann kommt die gleiche Meldung mit der gechlossenen Datenmenge. Ich hab das Gefühl er stört dich an dem leerzeichen zwischen den beiden...ich verzweifel gerade. Sitz schon seit 2 Tagen an dem Teil...Puhhh

Duffy 19. Dez 2004 12:49

Re: Grosses Problem mit Datum/Zeit in Access
 
Hallo dragi,
so eine Abfrage generiert Access selber
SELECT * FROM Test
WHERE (((Test.Datum)=#12/28/2004 12:20:0#));



bye
Claus

dragi 19. Dez 2004 13:18

Re: Grosses Problem mit Datum/Zeit in Access
 
Das werd ich jetzt mal probieren. Danle und ich meld mich dann gleich nochmal und berichte ob es klappt!

Danke

Dragi

dragi 19. Dez 2004 13:42

Re: Grosses Problem mit Datum/Zeit in Access
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, da bin ich wieder. Es klappt trotzdem nicht. Ich habe nun folgenden testaufbau:

eine db1.mdb in der sich eine Tabelle1 befindet mit den Feldern ID (AutoWert), Datum(FDatum/Zeit) und Text (Text). Ein Datensatz ist angelegt : 1, 17.12.2004 08:30, Hallo

Auf meinem Formular ist ein Button, ein Edit1 , eine ADOConnection und ein ADODataset1.

folgenden Code dazu:

Code:
unit frm_STMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ADODB, Db, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source= D:\Ausbildung\Projekte\Delphi\SQLTest\db1.mdb';
  ADOConnection1.Connected := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 with Form1.ADODataset1 do
  begin
    Close;
    CommandText:= 'SELECT * FROM Tabelle1 WHERE (((Tabelle1.Datum) = #12/17/2004 08:30:0#))';
    Open;
  end;
  Edit1.Text := ADODataSet1.FieldByName('Text').AsString;
end;

end.
und bei Button1Click kommt folgende Exception (siehe Anhang)

Ich hab auch schon die Klammern weggelassen und auch nur das Tabelle1.Datum in Klammern gesetzt. Trotzdem kein Erfolg. Kann es mit dem Jet4.0 zusammen hängen?

Gruss

Dragi

Duffy 19. Dez 2004 15:40

Re: Grosses Problem mit Datum/Zeit in Access
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo dragi
Also die Lösung steht hier, natürlich in der Delphi Praxis :thumb:

Der Grund, warum es nicht funktioniert ist, daß man bei Verwendung von ADO das Datumsfeld als Double und im amerikanischen Dezimalformat als String übergeben muß.

Ich habe mir zur Demonstration aus dem obigen Beitrag 2 Funktionen mal ausgeliehen und daraus eine kleine Demo gemacht. Dann wird es für Dich einfacher es zu verstehen.

bye
Claus


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 Uhr.
Seite 1 von 2  1 2      

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