Hej! Bästa lösningen är att använda parametrar till frågorna. Då slipper du alla problem med citations enkal decimal separator osv.enkelt citattecken
Går det att lägga in enkelt citattecken, ' , som en del av en sträng som sparas i en databas?
Kör SQL Server 2005 Express.
Försöker köra en SQL-fråga som lägger till produkter i en databas, men en del produktnamn innehåller enkelt citattecken, samma tecken som anges för att avgränsa den sträng man vill stoppa in i databasen.
Går detta att lösa?
mvh Per LjungSv: enkelt citattecken
Sub InsertValue(VarCharValue As String, IntegerValue As Integer, DoubleValue As Double)
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Set con = New ADODB.Connection
con.Open GlobalConnectionString
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = con
cmd.CommandText = "INSERT INTO TableName (VarCharColumn, IntegerColumn, DoubleColumn)" + vbCrLf + _
"VALUES (?, ?, ?)"
cmd.Parameters.Append cmd.CreateParameter("@VarChar", adVarChar, adParamInput, 50, VarCharValue)
cmd.Parameters.Append cmd.CreateParameter("@Integer", adInteger, adParamInput, , IntegerValue)
cmd.Parameters.Append cmd.CreateParameter("@Double", adDouble, adParamInput, , DoubleValue)
cmd.Execute , , adExecuteNoRecords
End Sub
Call InsertValue("It's Alive!", 123, 123.456)
Om du vill lägga till null värden så måste du deklarerar parametrar som datatypen variant.
Du ersätter alla enkla '-tecken med två '-tecken, alltså:
Dim Value As String
Dim SQL
Value = "It's ALIVE!"
SQL = "INSERT INTO TabellNamn (FältNamn)" + _
"VALUES ('" & Replace(Value, "'", "''") & "')
Eller om man vill använda den trevliga SQLText funktion jag skapat:
Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Dim Value As String
Dim SQL
Value = "It's ALIVE!"
SQL = "INSERT INTO TabellNamn (FältNamn)" + _
"VALUES (" & SQLText(Value) & ")