Autor Thema: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben  (Gelesen 3669 mal)

Offline markus_mgd

  • Frischling
  • *
  • Beiträge: 8
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

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
« Antwort #1 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

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
« Antwort #2 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?
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline markus_mgd

  • Frischling
  • *
  • Beiträge: 8
Re: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
« Antwort #3 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

Offline markus_mgd

  • Frischling
  • *
  • Beiträge: 8
Re: Währungsbetrag mit Cent-Betrag an MS-SQL-Server übergeben
« Antwort #4 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
 

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz