Avatar billede jvesterj Nybegynder
11. maj 2003 - 21:41 Der er 13 kommentarer

Fra Excel gemmes "firkanter" som linieskift

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?
12. maj 2003 - 18:03 #1
check for chr(9), 10, 13 - synes at huske, at det ligger i det område.
Avatar billede martin_moth Mester
13. maj 2003 - 08:36 #2
En forklaring, zappet fra et andet spørgsmål:



"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)
Avatar billede jvesterj Nybegynder
13. maj 2003 - 09:23 #3
Hej

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!
Avatar billede martin_moth Mester
13. maj 2003 - 09:38 #4
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)
Avatar billede jvesterj Nybegynder
13. maj 2003 - 09:43 #5
Hej

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å.
Avatar billede martin_moth Mester
13. maj 2003 - 09:51 #6
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.
Avatar billede bak Forsker
13. maj 2003 - 10:47 #7
Måske kan du bruge
DinTekst=Application.WorksheetFunction.Clean(DinTekst)

Clean fjerner alle "nonprintable" karakterer
Avatar billede rene_nissen Nybegynder
16. september 2003 - 11:16 #8
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 :)
Avatar billede jvesterj Nybegynder
16. september 2003 - 11:22 #9
Hej Rene

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
Avatar billede rene_nissen Nybegynder
16. september 2003 - 12:14 #10
Nå, da. Hvorfra?
Avatar billede jvesterj Nybegynder
16. september 2003 - 12:30 #11
ok. jeg tager vist fejl. jeg kender en rene nissen, som er indenfor it, men det er nok ikke dig, hvis du ike kender mit navn.
Avatar billede rene_nissen Nybegynder
16. september 2003 - 12:32 #12
He, he. Nej dit navn si'r mig ikke rigtigt noget, men det kunne jo være en gammel bekendt.
13. februar 2004 - 10:36 #13
Fik du det løst Jørgen ?
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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