Seite 1 von 1

SQL DATETIME

Verfasst: Do, 25. Sep 2014 8:02
von AUGE_OHR
bei SQL man bekommt ja einen "YYYY-MM-DD HH:MM:SS" String beim Type DATETIME zurück.
nun könnte man den String zerlegen in dDate und cTime ... z.b. für Datums Berechnungen.

es gibt ja nun die Windows API Structur FILETIME welche mit ot4xb so funktioniert

Code: Alles auswählen

#include "ot4xb.ch"

proc main
local oft := FileTime64():New()
oft:now(.T. )   // use .T. to get local time instead of GTM
? oft:cTimeStamp
? oft:GetTimeStamp19()
? oft:_GetTimeStamp_("%04.4hu%02.2hu%02.2hu%02.2hu%02.2hu%02.2hu.%03.3hu")
? oft:_GetTimeStamp_("Year:%04.4hu Month:%02.2hu Day:%02.2hu Hour: %02.2hu Minute: %02.2hu Secconds: %02.2hu Milliseconds: %03.3hu")

inkey(0)
return
damit kann ich also auch direkt Datum / Time Berechungen (+/-) anstellen.

Re: SQL DATETIME

Verfasst: Fr, 26. Sep 2014 7:15
von satmax
Danke, kann ich gut gebrauchen.

Re: SQL DATETIME

Verfasst: Sa, 04. Okt 2014 21:12
von satmax
Hallo Jimmy,

eben wollte ich Deinen Hinweis mit dem Datum verwenden. Bei mir geht das aber nicht (Win8.1 Xbase++ V2.0):

Ich komme genau bis zur Zeile 4:

Code: Alles auswählen

------------------------------------------------------------------------------
ERROR LOG of "C:\dev\DevSrc\Test2\sample.exe" Date: 10/04/2014 21:07:35

Xbase++ version     : Xbase++ (R) Version 2.00.554
Operating system    : Windows 8.1 06.03 Build 09600
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: U VALUE: NIL
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: Y
oError:cargo        : NIL
oError:description  : Receiver of message is not an object.
oError:filename     : 
oError:genCode      :         38
oError:operation    : New
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       2266
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from MAIN(4)

Re: SQL DATETIME

Verfasst: Sa, 04. Okt 2014 21:50
von georg
Hallo, Markus -


#PRAGMA Library("OT4XB.LIB")

mal ausprobiert? Wobei es mich wundert, dass Du keine Compiler-Warnung für FileTime64 bekommen hast ...

Re: SQL DATETIME

Verfasst: Sa, 04. Okt 2014 21:53
von satmax
Hab ich, steht aber schon im OT4XB.CH:

#ifndef _OT4XB_CH_
#define _OT4XB_CH_
#pragma library ("ot4xb.lib")

Re: SQL DATETIME

Verfasst: Sa, 04. Okt 2014 23:26
von AUGE_OHR
satmax hat geschrieben:Hab ich, steht aber schon im OT4XB.CH
hm ... welche Version von ot4xb hast du ?

Re: SQL DATETIME

Verfasst: Sa, 04. Okt 2014 23:30
von satmax
Build 001.005.003.176

Re: SQL DATETIME

Verfasst: Sa, 04. Okt 2014 23:34
von satmax
War ein Fehler, ich habe V1.6.0.167

Re: SQL DATETIME

Verfasst: So, 05. Okt 2014 2:06
von AUGE_OHR
[quote"satmax"]Build 001.005.003.176[/quote]könnte sein das es damals nur FILETIME() hiess
satmax hat geschrieben:War ein Fehler, ich habe V1.6.0.167
damit sollte es funktionieren, oder ?

Re: SQL DATETIME

Verfasst: Mo, 06. Okt 2014 7:27
von satmax
Nein, geht leider nicht, auch nicht auf meinem PC (beide Win 8.1/64).

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 7:44
von satmax
Jimmy, kannst Du mir bitte eine EXE mit Deinem obigen Code geben? Ich möchte nur mal sehen ob es damit geht. Zur Fehlereingrenzung, ich habe nämlich überhaupt keine Idee was da los ist...

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 10:48
von brandelh
bei solchen Sachen immer auf die FEHLERMELDUNG sehen:

Code: Alles auswählen

oError:args         :
          -> VALTYPE: U VALUE: NIL
...
Es handelt sich nur um EINE Variable, sonst wären hier mehr Zeilen !

Code: Alles auswählen

oError:description  : Receiver of message is not an object.
Es wurde versucht eine Methode auf ein Objekt anzuwenden (normalerweise reden wir von einem Objekt, das eine Methode ausführt,
aber intern sieht es genau anders herum aus.
Um welche Zeile handelt es sich genau ?
Ich zähle oben die 4. Zeile (Leerzeilen zählen mit) und sehe das:

Code: Alles auswählen

local oft := FileTime64():New()
hier sollte NEW auf ein Klassen-OBJECT der Klasse FileTime64() angewendet werden, das Ergebnis sollte dann an oft übergeben werden !
Die Verkettung von all dem in eine LOCAL Zeile ist zwar nett anzusehen, stört aber beim debuggen.
Ich würde den Quellcode in so einem Fall aufteilen und im Debugger ansehen (oder mit ? ausgeben):

Code: Alles auswählen

local oft, oK
oK := FileTime64() // Klassenobjekt erzeugen
if oK = NIL 
   ? "Fehler oK=NIL"
endif
oft := oK:New() // Eine Instanz (Objekt erzeugen)
if oft = NIL 
   ? "Fehler oft = NIL"
endif
Ich tippe auf "Fehler oK=NIL" was bedeuten würde, dass die Funktion zwar vorhanden ist ...
sonst würde eine Fehlermeldung auf interne ot4xb Funktionen erscheinen (die kenne ich von HBPrintPDF) ...
entweder fehlen Rechte oder die Parameter haben sich geändert, Win 8.1 scheint sich auf jeden Fall anders zu verhalten.
Das sollte man Pablo fragen, wenn man alle anderen Fehler ausgeschlossen hat ;-)

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 11:30
von satmax
Ja Hubert, du tippst richtig, "Fehler oK=NIL". Also via Newsgroup Pablo fragen?


Nachtrag: auch unter Windows 8 und Server 2008/R2 und Server 2012 gleiches Problem. Aber alle 64 Bit.

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 12:43
von brandelh
Ich kann aktuell nur unter Windows 7 testen und da geht es auch unter 64 bit.
Notfalls kann man aber auch unter der MSDN nach FileTime64 suchen ;-)

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 12:45
von brandelh
es heißt nur FileTime ... und da steht nichts von Problemen ...

:arrow: http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 12:52
von satmax
Ich würde mal gerne eine EXE von Dir testen, eventuell habe ich ja ein Problem mit der LIB, DLL,... Habe zwar alles schon doppelt und dreifach gecheckt, aber...

Außerdem überlege ich gerade mir eine eigene Klasse zu schreiben.

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 13:13
von brandelh
es liegt nicht an Windows 8, sondern an Xbase 2.00 !
Wenn ich das Programm mit SL1 kompiliere funktioniert es, mit 2.00 kommt deine Fehlermeldung auch unter Win 7

Code: Alles auswählen

------------------------------------------------------------------------------
ERROR LOG of "D:\HB_XBASE\Test\FileTime64\TEST.EXE" Date: 10/07/2014 13:10:32

Xbase++ version     : Xbase++ (R) Version 2.00.547
Operating system    : Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: U VALUE: NIL
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: Y
oError:cargo        : NIL
oError:description  : Receiver of message is not an object.
oError:filename     : 
oError:genCode      :         38
oError:operation    : New
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       2266
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from MAIN(8)

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 13:15
von satmax
Danke, meldest Du das an Alaska oder soll es ich tun?

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 13:17
von brandelh
Ich habe es in Pablos Forum gepostet, Alaska hat ja keinen Quellcode ;-)

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 17:57
von AUGE_OHR
brandelh hat geschrieben:es liegt nicht an Windows 8, sondern an Xbase 2.00 !
hm ... mit der v2.0.519 (beta5) läuft es unter Win7 32bit.
Es wäre ja ein Witz wenn es mit der Xbase++ Release v2.x Version nicht mehr läuft :badgrin:

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 19:49
von satmax
Auch SQLExpress ging bis v2.0.519, danach benötigte man ein Update.

Re: SQL DATETIME

Verfasst: Di, 07. Okt 2014 23:18
von AUGE_OHR
satmax hat geschrieben:Auch SQLExpress ging bis v2.0.519, danach benötigte man ein Update.
na ja bei SQLexpress wird ja auch noch Xbase++ benutzt dir in der erzeugten DLL / LIB steht "This_DLL_needs_version_1_90_0" welche nicht mit der v2.x läuft.
bei ot4xb handelt es sich ja um reine API Function die mit jeder Windows Version laufen sollte, also ist Xbase++ v2.x das Problem
wie schon gesagt läuft es bei der beta5 Version noch unter Win7 32bit und Win8.1 64bit.

Re: SQL DATETIME

Verfasst: Mi, 08. Okt 2014 13:01
von satmax
Hallo Jimmy,

Du hast es sicher schon gelesen, aber der Vollständigkeit halber auch hier im Forum, Alaska hat geantwortet:

==============================
Bitte nehmen Sie mit Pablo Botella Verbindung auf. Ich denke das ein
Rebuild der Bibliothek erforderlich ist.

Mit Xbase++ 2.0 haben wir das interne Typen Management überarbeitet,
das bedingt ein neues Bauen aller Bibliotheken die unter Verwendung
der C-API in C/C++ gebaut wurden.

Es ist dann auch die geänderte Dokumentation der C-API zu beachten, die
beschreibt, wie auf Xbase++ Typen hin zu prüfen. ist.

==============================

Re: SQL DATETIME

Verfasst: Do, 09. Okt 2014 1:01
von AUGE_OHR
satmax hat geschrieben:Du hast es sicher schon gelesen, aber der Vollständigkeit halber auch hier im Forum, Alaska hat geantwortet:
mit der Beta5 hat es funktioniert und bei RC1 war Schluss ... glaubst du wirklich das Alaska in der Phase was geändert hat ( ausser die "Aktivierung" ) ?