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

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