Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ADODB Command

ADODB Command
19.12.2022 23:34:45
Alex
Guten Abend Leute
Bei einem ADODB Command bekomme ich beim INSERT INTO bei den Doublewerten immer die Fehlermelsung Precision is invalide
Es handelt sich bei der Datenbank um eine Microsoft MySql-DB
Die veruche die Double alsscheitern kläglich adDecimal, adDouble oder adNumeric zu übergeben,

Public Sub AddReportItem(item As ReportDTO, Optional isNew As Boolean = False)
If (isNew) Then
Set cmd = New ADODB.Command
With cmd
cmd.ActiveConnection = acc.ConnectionString
cmd.CommandText = "INSERT INTO Tkt.T_Report (ReportNR, CustomerID, CreationsDate, VAT, HourPrice, TravelExpences, IsScaned, " & _
"FilePath, FreeArticleRow) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"
.Parameters.Append .CreateParameter(, adInteger, adParamInput, value:=item.jsReportNr)
.Parameters.Append .CreateParameter(, adInteger, adParamInput, value:=item.jsCustomerID)
.Parameters.Append .CreateParameter(, adDate, adParamInput, value:=item.jsCreationDate)
' Dies sind die 3 Werte die im Code den Wert Double haben und den Fehler auslösen.
.Parameters.Append .CreateParameter(, adNumeric, adParamInput, 0, item.jsVAT)
.Parameters.Append .CreateParameter(, adNumeric, adParamInput, 0, item.jsHourePrice)
.Parameters.Append .CreateParameter(, adNumeric, adParamInput, 0, item.jsTravelExpence)
.Parameters.Append .CreateParameter(, adInteger, adParamInput, value:=IIf(item.jsIsScanned = False, 1, 0))
.Parameters.Append .CreateParameter(, adVarChar, adParamInput, 256, item.jsFilePath)
.Parameters.Append .CreateParameter(, adInteger, adParamInput, value:=item.jsArticleRow)
.Parameters.Append .CreateParameter(, adInteger, adParamInput, value:=item.jsFreeArticleRow)
acc.ExecuteCommand cmd
Set cmd = Nothing
Set rs = acc.GetRecordSet("SELECT Max(ID) FROM Tkt.T_Report", rsCount)
rs.MoveFirst
item.jsID = CLng(rs.Fields(0))
item.jsID = CLng(rs.Fields(0))
rs.Close
Set rs = Nothing
End With
End If
With stb_Rp
.ListRows.Add
rowIndex = .ListRows.count
.DataBodyRange.Cells(rowIndex, 1) = item.jsID
.DataBodyRange.Cells(rowIndex, 2) = item.jsReportNr
.DataBodyRange.Cells(rowIndex, 3) = item.jsCustomerID
.DataBodyRange.Cells(rowIndex, 4) = item.jsCreationDate
.DataBodyRange.Cells(rowIndex, 5) = item.jsVAT
.DataBodyRange.Cells(rowIndex, 6) = item.jsHourePrice
.DataBodyRange.Cells(rowIndex, 7) = item.jsTravelExpence
.DataBodyRange.Cells(rowIndex, 8) = item.jsFilePath
.DataBodyRange.Cells(rowIndex, 9) = item.jsIsScanned
.DataBodyRange.Cells(rowIndex, 10) = item.jsArticleRow
.DataBodyRange.Cells(rowIndex, 11) = item.jsFreeArticleRow
End With
End Sub
Wie muss ich die Double-Werte im Command übergeben?
Gruss Alex

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ADODB Command
20.12.2022 09:11:42
Alex
Moregen Allerseits:
Habe das den Commad Text abgeändert:

cmd.CommandText = "INSERT INTO Tkt.T_Report (ReportNR, CustomerID, CreationsDate, VAT, HourPrice, TravelExpences, IsScaned, " & _
"FilePath, ArticleRow, FreeArticleRow) VALUES (" _
& item.jsReportNr & ", " & _
item.jsCustomerID & ", '" & _
item.jsCreationDate & "', " & _
item.jsVAT & ", " & _
item.jsHourePrice & ", " & _
item.jsTravelExpence & ", " & _
IIf(item.jsIsScanned = False, 1, 0) & ", '" & _
item.jsFilePath & "', " & _
item.jsArticleRow & ", " & _
item.jsFreeArticleRow & ")"
Nun läuft die Prozedur fehlerlos!
Ich betrachte den Thread als geschlossen :-)
Gruss Alex
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige