Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: markus_mgd am 18.01.11 - 13:30:08

Titel: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
Beitrag von: markus_mgd am 18.01.11 - 13:30:08
Liebe Gemeinde,

beim Ausführen des nachfolgeden Code-/LotusScript-Auszugs stoße ich auf ein scheinbar unlösbares Problem. Werden im Feld 'KPreis' Beträge mit Nachkommastellen eingegeben, so scheitert das Schreiben auf den MS-SQL-Server mit der Fehlermeldung 'In der INSERT-Anweisung sind weniger Spalten angegeben als Werte in der'. Der Rest der Meldung fehlt leider, jedoch liegt das Problem am Datentyp Währung des Feldes 'Preis' auf dem MS-SQL-Server. Da ich selbst keinen Einfluss auf das Design der MS-SQL-DB nehmen kann, muss ich das erst mal so hinnehmen. Der Währungsbetrag CurPreis darf ähnlich wie Zahlenfelder nicht in einfache Hochkommas eingeschlossen werden. Taucht nun ein Betrag mit Nachkommastellen auf, wird innerhalb des SQL-Anweisung das Komma als Feldtrennzeichen interpretiert. Beim Versuch statt eines Kommas einen Punkt als Dezimaltrennzeichen zu benutzen, wird aus 33,50 Euro ein Betrag von 33500,00 Euro und stellt somit auch keine Lösung dar.

Wer kann helfen/hatte auch schon mal eine solche Aufgabenstellung?

Beste Grüße
markus

Sub Click(Source As Button)
Dim connect As New LCConnection ("oledb")
Dim SQLStatement As String
Dim CurPreis As Currency
Dim FLDLst As New LCFieldList
Dim workspace As New notesuiworkspace
Dim uidoc As notesuidocument

connect.provider = "SQLOLEDB"
connect.server = "192.168.1.1"
connect.database = "Testdb"
connect.Userid = "username"
connect.Password = "userpwd"
connect.Metadata = "Auftrag"
connect.Connect

Set uidoc=workspace.currentdocument
Call uidoc.refresh()
CurPreis = Ccur(uidoc.FieldGetText("KPreis"))
KundID = uidoc.FieldGetText("KundenID")
   
' Schreiben in Tabelle Auftrag
SQLStatement="Insert into Auftrag (KundenID,Preis) values ('" & KundID & "'," & CurPreis & ")"
If (connect.Execute (SQLStatement, FLDLst) = 0) Then
  Print "Keine Verbindung zur Datenbank möglich !!!"
else
  ...
end if

...
connect.disconnect
End Sub
Titel: Re: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
Beitrag von: ascabg am 18.01.11 - 15:10:45
Hallo und Willkommen im Forum,

Wie stehen denn die Werte in der Variablen CurPreis?

Eventuell wird hier ja als Dezimaltrennzeichen das Komma verwendet und dieses wird
in dem INSERT ja als Trennzeichen fuer die verschiedenen Werte verwendet.
(Zumindest deutet die Fehlermeldung sehr auf diesen Sachverhalt hin)


Andreas
Titel: Re: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
Beitrag von: m3 am 18.01.11 - 15:21:55
Schon mal händisch mit einem "SQL-Client" probiert? Was erwartet der MS-SQL denn als Komma? Den Beistrich oder den Punkt?
Titel: Re: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
Beitrag von: markus_mgd am 18.01.11 - 15:31:11
Hi m³,

der MS-SQL will ein Komma (=Beistrich), den Punkt interprtiert er als Tausendertrennzeichen.
Mit einer Access-Anwendung als Frontend klappt es übrigens ohne Probleme.

markus
Titel: Re: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
Beitrag von: markus_mgd am 19.01.11 - 11:41:49
Liebe Leute,
vielen Dank für eure Mühen, aber ich habe das Problem mittlerweile selbst gelöst.

aus CurPreis = Ccur(uidoc.FieldGetText("KPreis"))
wurde TxtPreis = uidoc.FieldGetText("KPreis")
   
und aus SQLStatement="Insert into Auftrag (KundenID,Preis) values ('" & KundID & "'," & CurPreis & ")"
wurde  SQLStatement="Insert into Auftrag (KundenID,Preis) values ('" & KundID & "',convert(money," & TxtPreis & "))"

Es war also mehr ein Problem mit der SQL-Syntax als ein Fehler im LotusScript.

markus