Jeg gemmer tekst fra et Excelark i en SQL Server-DB. Når der er linieskift i teksten, kommer der enten firkanter el. andre mærkelige koder frem i feltet i databasen. afhængigt af codepage på databasen. Fra Access er der ikke tilsvarende problemer. Ved check af Asciiværdier/Unicodeværdier kan jeg ikke se forskel til almindeligt linieskift. Måske bruger Excel intern kode til at håndtere linieskift. Måske er det dataoverførselen, der er forskellig fra Access'. Er der nogen, der har et bud?
"chr(10) hedder også 'line feed', det er også den du får når du skriver '\n' i en C-streng. på en skrivemaskine svarer det til #skub papiret een linie op.
chr(13) hedder også 'carriage return' den skrives i strenge med '\r' og svarer til skrivemaskinens "begynd at skrive fra papirets venstremargin igen"
så på en skrivemaskine markeres afslutningen af en linie med '\n\r'
Men i gamle dage var lagerplads på computeren hundedyr. og en måde at spare var at nøjes med eet tegn der. nogen computermagere valgte så 'line feed' og andre valgte 'carriage return' til det formål. andre igen brugte begge to. Det gav et roderi med filer der skulle omformatteres når man flyttede dem fra een computer til en anden, og det slås vi stadig med. Du har sikkert selv oplevet at din fil fik dobbelt linieafstand efter en flytning eller også fik alle liniskift udskiftet med SMÅ FIRKANTER i een lang klump tekst når du prøvede at kikke på filen i notepad."
Så der er blot at søge og erstatte chr(10) og chr(13) :o)
Jeg ved godt, at det drejer sig om chr(10) og chr(13). Har løst problemet med en rigtig "høkerløsning". Sagen er, at når teksten læses fra et tekstfelt i Excel, vil resultatet fra VB til databasen blive "firkanter" el. andre symboler. Hvilket selvfølgelig har noget at gøre med den bagvedliggende maskinkode. Jeg har en form, hvorfra koden aktiveres, og har i denne form lagt et usynligt tekstfelt. Hvis jeg sender teksten rundt om dette tekstfelt, er problemet løst, og teksten kommer rigtigt ind i databasen med linieskift. I praksis læser jeg teksten fra Excelcellen ind i en VB-variabel, læser værdien af variablen ind i formfeltet, læser teksten fra formfeltet ind i en ny VB-variabel og gemmer værdien herfra i databasen. A little strange but it works!
he he, ja somme tider kræver det lidt opfindsomhed. Jeg tror nu sagtens du kan "kode dig ud af problemet", men hvis din løsning virker, er det jo bon-bon :o)
Jeg ville gerne kunne kode mig ud af problemet med en slags replace, men det virker ikke på Ascii-niveau med chr(10) og chr(13). Det eneste jeg kan gøre her er at fjerne linieskift. Jeg skal noget dybere ned, og det har jeg ikke nok styr på.
Hmm - jeg vil nu mene du sagtens kan bruge en replace. Først finder du ANSI-koden på din firkant, og derefter søger du på den karakter og skifter med et tegn som din database kan opfatte som linieskift.
Jeg har haft et ligende problem. Det er når man bruger carriage return Linie feed (vbCrLf), at der bliver lave en firkant, hvis du bare bruger linie feed (vbLf) får du ikke samme problemer. Nedenstående eksempel kan måske bruges: Sub x() Dim s As String s = "Her er" & vbCrLf & "linjeskift" MsgBox s s = Replace(s, vbCrLf, vbLf) MsgBox s End Sub
Som du kan se er det nøjagtig det samme der kan ses, men der er alligevel en forskel, menlig den forbandede firkant :)
Tak for dit svar. Jeg vil ved lejlighed prøve, men det er en møj gammel opgave, og jeg fandt en løsning, som du kan se foroven. Din er selvfølgelig pænere. Iøvrigt kender vi hinanden, tror jeg :-) Jørgen Vester
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.