Hejsan Ersätter det enkla med dubbla: Man får tacka för svaren men jag har nu suttit ett tag och försökt att få det här att funka men inte då. Om det är många poster i filen som du skall läsa in är det bättre att öppna databasen utanför loopen och istälet för att skicka SQL satser använda ditt recordset: Hej Jag är nästan 100% säker på att du kör vb 5. Replace() funktionen saknas i vb 5. Lass till i vb 6. Om så är fallet får du då använd: Tog du även med den senaste SQLText funktionen. Har ändrat från Replace till MyReplace. Vilket felmeddelande får du? Hej Hej Om du tittat i funktionen SQL Text ser du att den omger värdet med ' så du behöver inga ' i dina sql satser. Du ska heller inte omge tal med SQLText om du har några numeriska värden. Hej Du kan ju skaffa mig en flickvän som tack. Har jag inte lyckas med. Hej Fel vid läsning textsträng som innehåller apostrof
Jag la in den senaste MyReplace i formen.
Jag får fel medelande 3075 Syntax error (missing operator) in query expression när jag kör insert into eller update databasen om textsträngen innehåller apostrofer eller enkel fnuttar.
Hur kommer man förbi detta!
Hälsningar
Tobbe
Ps! Sv: Fel vid läsning textsträng som innehåller apostrof
Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End if
End function
Dim strSQL as String
Dim strText as String
strText = "Denna sträng innehåller '-tecknet"
strSQL = "INSERT INTO TabellNamn (FältNamn) VALUES (" & SQLText(strText) & ")"Sv: Fel vid läsning textsträng som innehåller apostrof
Här är koden som jag försöker att få till med era koder.
Dim iFil As Long
Dim tmpStr As String
Set cGlobal = New Collection
'öppnar filen
iFil = FreeFile
Open Label1.Caption For Input As iFil
Do Until EOF(iFil)
'läser rad för rad
Line Input #iFil, tmpStr 'läser in värdt i var tmpStr
'kontrollerar att raden inte är kommenterad, att det inte är en radbrytning eller tom
If Not (Left(Trim(tmpStr), 1) = "'" Or tmpStr = vbCrLf Or Trim(tmpStr) = "") Then
'gör det du ska
Text1(0).Text = Mid(tmpStr, 6, 6)
Text1(1).Text = Mid(tmpStr, 34, 36)
Text1(2).Text = Mid(tmpStr, 176, 24)
Text1(3).Text = Mid(tmpStr, 70, 27)
Dim dbs As Database
Dim SQL As String
Dim rs As Recordset
Set dbs = OpenDatabase(Label2.Caption, False)
Set rs = dbs.OpenRecordset("select ID from Grund where MedID ='" & Text1(0).Text & "'", dbOpenSnapshot)
Do While Not rs.EOF
txtID.Text = rs!Id & vbNullString
rs.MoveNext
Loop
If rs.RecordCount = 0 Then
SQL = "INSERT INTO GRUND (MedID, Namn, Adress, Telefon)" & _
" values ('" & Text1(0).Text & "','" & Text1(1).Text & "','" & Text1(2).Text & "', '" & Text1(3).Text & "')"
dbs.Execute SQL
End If
If rs.RecordCount = 1 Then
SQL = "UPDATE Grund SET MedId = '" & Text1(0).Text & "'," & _
" Namn = '" & Text1(1).Text & "'," & _
" Adress = '" & Text1(2).Text & "'," & _
" Telefon = '" & Text1(3).Text & "'" & _
" where ID =" & txtID.Text
dbs.Execute SQL
End If
rs.Close
dbs.Close
Set rs = Nothing
Set dbs = Nothing
End If
Loop
Close #iFil
Jag verkar inte fatta var koden skall ligga!!!!
Hälsningar
TobbeSv: Fel vid läsning textsträng som innehåller apostrof
<code>
Dim db As Database
Dim rs As Recordset
Dim QDef As QueryDef
Dim parMedID As Parameter
Dim FileNo As Long
Dim strLine As String
Dim strTemp As String
Dim strMedID As String
Dim strNamn As String
Dim strAdress As String
Dim strTelefon As String
Set db = OpenDatabase(Label2.Caption, False)
Set QDef = db.CreateQueryDef("", "PARAMETERS MedID Long; SELECT * FROM Grund WHERE Grund.MedID = MedID;")
Set parMedID = QDef.Parameters("MedID")
parMedID = Null
Set rs = QDef.OpenRecordset(dbOpenDynaset)
'öppnar filen
FileNo = FreeFile
Open Label1.Caption For Input As FileNo
Do Until EOF(FileNo)
'läser rad för rad i variabel strLine
Line Input #FileNo, strLine
strTemp = Trim(strLine)
If Left(strTemp, 1) = "'" Then 'kontrollerar att raden inte är kommenterad
ElseIf Len(strTemp) > 0 Then 'kontrollerar att raden inte är tom
Else
'Hämtar värden från rad
strMedID = Mid(strLine, 6, 6)
strNamn = Mid(strLine, 34, 36)
strAdress = Mid(strLine, 176, 24)
strTelefon = Mid(strLine, 70, 27)
parMedID.Value = strMedID
rs.Requery QDef
If rs.EOF Then
'Om saknas lägg till
rs.AddNew
rs("MedID") = strMedID
rs("Namn") = strNamn
rs("Adress") = strAdress
rs("Telefon") = strTelefon
rs.Update
Else
'Uppdatera befintliga
Do Until rs.EOF
rs.Edit
rs("Namn") = strNamn
rs("Adress") = strAdress
rs("Telefon") = strTelefon
rs.Update
rs.MoveNext
Loop
End If
End If
Loop
Close #FileNo
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
</code>Sv: Fel vid läsning textsträng som innehåller apostrof
Nu har jag testat men får Run-time error '13'
på detta.
Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Kan detta bero på att apostrofer inte finns i alla textsträngar?
Mvh
TobbeSv: Fel vid läsning textsträng som innehåller apostrof
<code>
Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & MyReplace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Function MyReplace(ByVal Expression As String, ByVal Find As String, ByVal Replace As String, Optional ByVal Start As Long = 1, Optional ByVal Count As Long = -1, Optional ByVal Compare As VbCompareMethod = vbBinaryCompare) As String
Dim lPos As Long
Dim lCount As Long
Dim lLastPos As Long
Dim lFindLength As Long
Dim sResult As String
lPos = InStr(Start, Expression, Find, Compare)
If lPos Then
lLastPos = Start
lFindLength = Len(Find)
Do While lPos And (Count = -1 Or lCount < Count)
If lPos > lLastPos Then
sResult = sResult & Mid$(Expression, lLastPos, lPos - lLastPos) & Replace
Else
sResult = sResult & Replace
End If
lCount = lCount + 1
lLastPos = lPos + lFindLength
lPos = InStr(lLastPos, Expression, Find, Compare)
Loop
If lLastPos <= Len(Expression) Then
sResult = sResult & Mid$(Expression, lLastPos)
End If
MyReplace = sResult
Else
MyReplace = Expression
End If
End Function
</code>Sv: Fel vid läsning textsträng som innehåller apostrof
Japp jag använder vb5 skulle det gå bättre i vb6, för jag testade med senaste inlägget men det blir fel ialla fall.
Jag gör säkert ett generalknas någonstans som vanligt!!!!.
Men måste ialla fall tacka för visat intresse.
Mvh
Tobbe och go´natSv: Fel vid läsning textsträng som innehåller apostrof
Sv: Fel vid läsning textsträng som innehåller apostrof
Jag får syntax error 3075 (missing operator)in query expression'MedId = "Tor513"'.
I sökning MedID.
Men i medlems nummret finns inga apostofer men i namn kan det förekomma apostofer i namnet som läses från textfilen.
Hälsningar
TobbeSv: Fel vid läsning textsträng som innehåller apostrof
Här är hela koden utöver din kod om MyReplace som vi skrev.
dom har jag lagt i form samma som den här koden.
Dim iFil As Long
Dim tmpStr As String
Set cGlobal = New Collection
'öppnar filen
iFil = FreeFile
Open Label1.Caption For Input As iFil
Do Until EOF(iFil)
'läser rad för rad
Line Input #iFil, tmpStr 'läser in värdt i var tmpStr
'kontrollerar att raden inte är kommenterad, att det inte är en radbrytning eller tom
If Not (Left(Trim(tmpStr), 1) = "'" Or tmpStr = vbCrLf Or Trim(tmpStr) = "") Then
'gör det du ska
Text1(0).Text = Mid(tmpStr, 6, 6)
Text1(1).Text = Mid(tmpStr, 34, 36)
Text1(2).Text = Mid(tmpStr, 176, 24)
Text1(3).Text = Mid(tmpStr, 70, 27)
Dim dbs As Database
Dim SQL As String
Dim rs As Recordset
Set dbs = OpenDatabase(Label2.Caption, False)
Set rs = dbs.OpenRecordset("select ID from Grund where MedID ='" & SQLText
(Text1(0).Text) & "'", dbOpenSnapshot)
Do While Not rs.EOF
txtID.Text = rs!Id & vbNullString
rs.MoveNext
Loop
If rs.RecordCount = 0 Then
SQL = "INSERT INTO GRUND (MedID, Namn, Adress, Telefon)" & _
" values ('" & SQLText (Text1(0).Text) & "','" & SQLText (Text1(1).Text) & "','" & SQLText (Text1(2).Text) & "', '" & SQLText (Text1(3).Text) & "')"
dbs.Execute SQL
End If
If rs.RecordCount = 1 Then
SQL = "UPDATE Grund SET MedId = '" & SQLText (Text1(0).Text) & "'," & _
" Namn = '" & SQLText (Text1(1).Text) & "'," & _
" Adress = '" & SQLText (Text1(2).Text) & "'," & _
" Telefon = '" & SQLText (Text1(3).Text) & "'" & _
" where ID =" & txtID.Text
dbs.Execute SQL
End If
rs.Close
dbs.Close
Set rs = Nothing
Set dbs = Nothing
End If
Loop
Close #iFil
/TobbeSv: Fel vid läsning textsträng som innehåller apostrof
Sv: Fel vid läsning textsträng som innehåller apostrof
Jag är skyldig dig ett stort tack ändrade och det funkar perfect.
:-) Tobbe :-)Sv: Fel vid läsning textsträng som innehåller apostrof
;O)Sv: Fel vid läsning textsträng som innehåller apostrof
Skall ut och leta hör av mig om jag får napp.
Hälsningar
Tobbe