Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-02 23:25:16 - Torbjörn Karlberg, i forum visual basic - allmänt, Tråden har 15 Kommentarer och lästs av 507 personer

Hejsan

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!


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-03 00:25:24 - Andreas Hillqvist

Ersätter det enkla med dubbla:

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) & ")"


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-03 10:52:39 - Torbjörn Karlberg

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å.

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
Tobbe


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-03 14:51:36 - Andreas Hillqvist

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:
<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>


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-03 19:05:21 - Torbjörn Karlberg

Hej
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
Tobbe


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-04 00:02:41 - Andreas Hillqvist

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:

<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>


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-04 00:55:45 - Torbjörn Karlberg


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´nat


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-04 12:32:30 - Andreas Hillqvist

Tog du även med den senaste SQLText funktionen. Har ändrat från Replace till MyReplace. Vilket felmeddelande får du?


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-04 19:07:45 - Torbjörn Karlberg

Hej
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
Tobbe


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-04 20:44:02 - Andreas Hillqvist

Hur sätter du samman sqlfrågan?


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-04 21:31:49 - Torbjörn Karlberg

Hej
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

/Tobbe


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-04 22:49:46 - Andreas Hillqvist

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.


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-05 01:31:51 - Torbjörn Karlberg

Hej
Jag är skyldig dig ett stort tack ändrade och det funkar perfect.

:-) Tobbe :-)


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-05 10:39:10 - Andreas Hillqvist

Du kan ju skaffa mig en flickvän som tack. Har jag inte lyckas med.

;O)


Svara

Sv: Fel vid läsning textsträng som innehåller apostrof

Postades av 2002-05-05 10:48:05 - Torbjörn Karlberg

Hej

Skall ut och leta hör av mig om jag får napp.

Hälsningar
Tobbe


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 612
27 953
271 709
6 554
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies