Domino 9 und frühere Versionen > ND6: Entwicklung

ODBC AS400 falsches Zahlenformat

<< < (3/5) > >>

koehlerbv:

--- Zitat von: robertpp am 08.03.06 - 16:48:46 ---...aber es steht auch im Feld nicht ,45 drinnen sondern nur 45 ...
--- Ende Zitat ---

Das ist jetzt aber eine gänzlich neue Situation ...

Bernhard

Ralf_M_Petter:
Hallo Robertpp!

Geh bitte kannst du das Problem nicht etwas genauer beschreiben. Du sagst, du lässt es auf dem Server laufen. Hallo was für ein Server. Normalerweise müsste man annehmen AS/400 aber dann schreibst du von Client Access? Ist der Server nicht die AS/400?

Weiters hast du meine ganzen anderen Fragen elegant übergangen. Als erste musst du mal schauen welcher Art das Feld auf der AS/400 ist. Feldtyp usw. Ist es auf der AS/400 überhaupt ein numerisches Feld?

Grüße

Ralf

robertpp:
Guten Abend,

So jetzt mal mit mehr Zeit etwas genauer!
Es ist so: Es ist ein normaler Windows2000 Server auf dem der LoNo Server läuft oder dort ist eben Client Access installiert mit einem ODBC Treiber.
Wenn ich auf der As400 ein Query direkt auf die Tabelle mache dann sehe ich dort zb. 0,45 oder 1,20 oder 0,6 stehen.

Das ganze läuft dann so: Teilenummer in Frontend-doc eingeben. Die wird dann in ein Hintergrund-doc geschrieben und gespeichert. Dann wird der Agent mit agent.RunOnServer(hdoc.NoteID) gestartet sodass er am Server läuft weil nur am Server die ODBC-Verbindung eingerichtet ist. Der Agent holt das "hdoc" und die Teilenummer und dann eben auf die Tabelle und hier mach ich dann folgendes:
Select auf Teilenummer in Tabelle;
Set ioPartTime = hdoc.GetFirstItem( "oPartTime" )   was zu Beginn ja leer ist.
voPartTime = Cdbl(Res.GetValue("AGSTZT")) dan holen des Wertes egal ob ich Cdbl oder Cstr mache es ist immer ,45
dann:
If ioPartTime Is Nothing Then
hdoc.oPartTime = voPartTime
Else
Call ioPartTime.AppendToTextList(  voPartTime )
end if

und am Ende steht im Feld immer 45. Es sollte egal ob es ein nummerisches Feld ist oder ein Text Feld ist aber trotzdem irgendwann mal das Komma erscheinen das tut es aber nicht. Es ist noch zu sagen dass das Feld ein Multivalue Feld ist. Bei mehreren gefunden Einträgen wird der weitere Wert angehängt.

Wenn ich das ganze Debugge dann läuft das ganze ja mit der lokal eingetragener ODBC-Verbindung und ich sehe, dass die Variable auch nur ,45 oder bei cstr ",45" steht. Also es macht keinen Unterschied zwischen Server und Clientseitiger Ausführung.

danke robert

koehlerbv:

--- Zitat von: robertpp am 08.03.06 - 22:40:15 ---Call ioPartTime.AppendToTextList(  voPartTime )

--- Ende Zitat ---

Ergo schiebst Du das Teil in ein Textfeld. Irgendwie hätten wir das jetzt einfacher haben können  ;).

Hole Dir den Wert, den Du via ODBC holst, vorab in eine Zwischenvariable (die hast Du ja schon).
Ich vermute, der Datentyp ist dann Text und beinhaltet ",45".
Wenn Du für ursprüngliche Zahlen trotzdem Text als Ziel im NotesDocument behalten willst, dann prüfe jetzt einfach, ob Deine Zwischenvariable mit "," beginnt. Wenn ja, setzte "0" davor.
Besser wäre sicherlich, das Datenformat beizubehalten und statt dessen den mit Cdbl gewandelten Wert mit ArrayAppend an das bestehende Item (so vorhanden) anzuhängen.

Dass Dein führendes Komma verloren geht, liegt an den Feldtrennzeichen im FrontEnd (Felddefinition) ...

Ich hoffe, ich konnte mich zu später Stunde noch verständlich ausdrücken  ;D

Bernhard

robertpp:
Hallo Bernhard,

Kann durchaus passieren zu dieser Zeit aber es war alles klar ausgedrückt, Aber:
Zwischenvariable --> stimmt das hab ich gemacht --> Wert stimmt auch ist dann ",45" Was ich jetzt(morgen) ausprobieren muss ist, wenn die Zahl zb 1,2 ist.
Mir ist in diesem Fall eigentlich egal in welchem Format das ganze dann vorliegt.

Bei Cdbl(Res.GetValue("AGSTZT"))  bekomm ich als Ergebnis in der Variable ,45
Wie kann ich dem Feld bei Set ioPartTime = hdoc.GetFirstItem( "oPartTime" ) sagen das es ein Number-Feld ist? Ich hab keine Maske dazu für computewithform?

Das Feldtrennzeichen ist aber nur dann definiert wenn das ganze ein Number Feld ist und derzeit ist es aber "leider" als Text-Feld hinterlegt, deshalb ist es so unerklärlich.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln