Avatar billede martens Guru
29. september 2018 - 23:15 Der er 2 kommentarer og
1 løsning

meget SQL-kode der køres fra ekstern txt-fil virker ikke med specialtegn

Hej I kloge hoveder..

Jeg har lige et spørgsmål vedr. noget jeg roder med p.t.

Jeg har denne kode, der indlæser en ekstern txt-fil for at køre en del SQL-kode på én gang.

Det har skam virket fint, når det har har været almindelig "plain" dansk tekst, men er jeg stødt ind i noget pudsigt.  Det er som om at den læser specialtegn ind på et andet sprog, end dansk (eksempelvis : " & "  " ; "  " # " " / "

kode :

  Dim vSql      As Variant
  Dim vSqls      As Variant
  Dim strSql    As String
  Dim intF      As Integer

  intF = FreeFile()
  Open "c:\sql.txt" For Input As #intF
  strSql = input(LOF(intF), #intF)
  Close intF
  vSql = Split(strSql, ";")

  On Error Resume Next
  For Each vSqls In vSql
      CurrentDb.Execute vSqls
  Next
------------------
eksempel på SQL, der ikke ikke bliver eksekveret korrekt :


UPDATE tbl_sent_items SET tbl_sent_items.[plaintext] = Replace([plaintext]," ","");
UPDATE tbl_sent_items SET tbl_sent_items.[plaintext] = Replace([plaintext],"<div><font size=5 color="#FFC20E" style="BACKGROUND-COLOR:#000000"><strong>&nbsp;&nbsp;B l o c k b o o k e t &nbsp;</strong></font></div>","");

- er der et kvikt hoved, der kan gennemskue, hvad pokker, der går galt ?

Køres det som almindelig SQL i en query virker det som det skal...
Men jeg synes det er langt mere overskueligt at have al SQL-koden til at ligge i den eksterne txt-fil.

på forhånd tak !

mvh martens
Avatar billede bvirk Guru
30. september 2018 - 08:28 #1
vba's split kan ikke ignorere gåseøjne omsluttede semikolon så "&nbsp;" ødelægger linie afslutningerne.
En løsning kunne være at splitte på et andet, i sammenhængen unikt, linieafslutningsmønster som f.eks &sql-end-of-line; - en anden at lave en mere avanceret split funktionalitet baseret på regular expression - en tredje at loope på reelle liner
Avatar billede bvirk Guru
30. september 2018 - 08:38 #2
split kan faktisk splitte på vbcrlf, så erstatning af
  vSql = Split(strSql, ";")
med
  vSql = Split(strSql, vbcrlf)
burde virke - forudsat at filen gemmes i windows linieskift format.
Avatar billede martens Guru
30. september 2018 - 23:07 #3
1000 tak bvirk
Nu spiller det som det skal.

Tak for hjælpen....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester