[Gelöst] ADO: Zeit in Navision einlesen

22. August 2008 12:55

Hallo,

für einen Import aus einer Access-DB versuche ich gerade krampfhaft, Felder mit Zeiten einzulesen, aber ich finde nicht raus wie das geht.

Bisher habe ich das sowohl so
Code:
FLD_time := RS.Fields.Item('Start').Value;


als auch mit
Code:
EVALUATE(FLD_time, RS.Fields.Item('Start').Value);


als auch mit einer Funktion über den Umweg ADOStream
Code:
CREATE(ADOStream);
ADOStream.Open;
ADOStream.WriteText(ADOField.Value);
ADOStream.Position := 0;
IF EVALUATE(TimeValue,ADOStream.ReadText) THEN
  EXIT(TimeValue);


probiert - das Ergebnis ist immer das gleiche:

"Diese Meldung ist für C/AL-Programmierer:

Dieser Datentyp wird von C/SIDE nicht unterstützt.
..."

Auch das Einlesen in eine Variable vom Typ VARIANT läuft exakt genauso ab. Was mach ich falsch bzw. wie bekomme ich den Zeitwert aus der Acces-Datenbank nach Navision? Dataport scheidet aus btw. - ich muss zuviel an den Daten modifizieren :-/

Weiss da jemand Rat?
Zuletzt geändert von CaddyM am 18. September 2008 16:31, insgesamt 1-mal geändert.

Re: ADO: Zeit in Navision einlesen

22. August 2008 13:02

[Beitrag aus dem Forum Dynamics NAV 4.xx nach Software-Integration verschoben.]

Gruß, Natalie
MSDynamics.de-Team

Re: ADO: Zeit in Navision einlesen

8. September 2008 22:09

Hallo CaddyM,

Access und der SQL Server 2005 haben kein reines Zeit Feld (bei SQL2008 ist es wieder anders)

Das heist in einer Zeit Spalte ist die Formatierung IMMER DATUM UHRZEIT --> wenn kein Datum dann ist es 01.01.1753 16:30:00

Wenn du nun ein Zeit Feld in Nav definiert hast kann es mit diesem Wert nix anfangen - also einfach mit Convert die letzten 10 Zeichen an dein Time Feld übergeben dann sollte es klappen

Hope that helps.

CaddyM hat geschrieben:Hallo,

für einen Import aus einer Access-DB versuche ich gerade krampfhaft, Felder mit Zeiten einzulesen, aber ich finde nicht raus wie das geht.

Bisher habe ich das sowohl so
Code:
FLD_time := RS.Fields.Item('Start').Value;


als auch mit
Code:
EVALUATE(FLD_time, RS.Fields.Item('Start').Value);


als auch mit einer Funktion über den Umweg ADOStream
Code:
CREATE(ADOStream);
ADOStream.Open;
ADOStream.WriteText(ADOField.Value);
ADOStream.Position := 0;
IF EVALUATE(TimeValue,ADOStream.ReadText) THEN
  EXIT(TimeValue);


probiert - das Ergebnis ist immer das gleiche:

"Diese Meldung ist für C/AL-Programmierer:

Dieser Datentyp wird von C/SIDE nicht unterstützt.
..."

Auch das Einlesen in eine Variable vom Typ VARIANT läuft exakt genauso ab. Was mach ich falsch bzw. wie bekomme ich den Zeitwert aus der Acces-Datenbank nach Navision? Dataport scheidet aus btw. - ich muss zuviel an den Daten modifizieren :-/

Weiss da jemand Rat?

Re: ADO: Zeit in Navision einlesen

18. September 2008 16:31

So, sorry für die etwas lange Zeit (Urlaub / andere wichtige Projekte).

Ich hab das jetzt folgendermaßen gelöst:

1. In der Access-Datenbank selbst eine Abfrage geschrieben, die Datum / Zeitwerte komplett mit "cstr(Feld)" in Texte verwandelt
2. Die Werte aus der Abfrage werden in Textvariablen gespeichert und per "COPYSTR" entsprechend beschnitten. Variant war nicht gut, weil Variant (zumindest habe ich die Fehlermeldung, die ich bekommen habe, so interpretiert ^^) NULL bzw. leere Felder nicht akzeptiert.

Etwas umständlich, andererseits kontrolliere ich so schon im Vorfeld, wie die Daten aussehen.

Somit: Gelöst!