Avatar billede raune Nybegynder
21. december 2002 - 18:46 Der er 13 kommentarer og
1 løsning

Max tegn pr. linje

vis Jeg har denne kode og gerne vil have den skal skifte linje efter et bestem antal tegn når den udskrive fra data base feltet comments hvad gør jeg så


<%       
dim adogon
dim rsguestbook
dim strSQL
set adoCon=Server.CreateObject("ADODB.Connection")
adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &

Server.MapPath("guestbook.mdb")
Set rsGuestbook=Server.CreateObject("ADODB.Recordset")
strSQL="SELECT tblComments.Name,tblcomments.Comments FROM tblComments;"
rsGuestbook.open strSQL,adoCon
Do While not rsGuestbook.EOF


Response.Write ("<Center>")
Response.Write ("Navn:")
Response.Write (rsGuestbook("Name"))
Response.Write ("<BR>")
Response.Write ("<BR>")
Response.Write ("Besked:")
Response.Write (rsGuestbook("Comments"))
Response.Write ("<HR>")
rsGuestbook.MoveNext
Loop
rsGuestbook.Close
set rsGuestbook=Nothing
set adoCon=Nothing
%>
Avatar billede eagleeye Praktikant
21. december 2002 - 19:11 #1
Det findes ikke direkte en function til det men du kan lave en selv i stil med dette:

Du kan rette max antal karakter i denne linie MaxLength = 30


inputStr = rsGuestbook("Comments")
reDim  arr(0)
str = replace(inputStr,"<br>",vbCrLf)
MaxLength = 30
while (LEN(str)>0)
  splitIndex = InStrRev(str, vbCrLf, MaxLength)
  if splitIndex = 0 then
    splitIndex = InStrRev(str, " ", MaxLength)
    if splitIndex = 0 then splitIndex = LEN(str)
  end if 
  ReDim Preserve arr(UBOUND(arr) + 1)
  arr(UBOUND(arr)) = LEFT(str, splitIndex)
  str = MID(str, splitIndex + 1)
wend
outStr = ""
for i = LBound(arr) to UBound(arr)
  outStr = outStr & arr(i) & vbCrLf
next
outStr = replace (outStr, vbCrLf, "<br>")

'Og her udskrives teksten så:
Response.Write outStr
Avatar billede raune Nybegynder
21. december 2002 - 20:08 #2
hmm kan sgu ikke få det til at virke den skrive stadigt lige mange tegn uden at skifte linje
Avatar billede raune Nybegynder
21. december 2002 - 20:18 #3
min kode ser nu sådan ud

<%

       
dim adogon
dim rsguestbook
dim strSQL
set adoCon=Server.CreateObject("ADODB.Connection")
adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &

Server.MapPath("guestbook.mdb")
Set rsGuestbook=Server.CreateObject("ADODB.Recordset")
strSQL="SELECT tblComments.Name,tblcomments.Comments FROM tblComments;"
rsGuestbook.open strSQL,adoCon
Do While not rsGuestbook.EOF
inputStr = rsGuestbook("Comments")
reDim  arr(0)
str = replace(inputStr,"<br>",vbCrLf)
MaxLength = 1
while (LEN(str)>0)
  splitIndex = InStrRev(str, vbCrLf, MaxLength)
  if splitIndex = 0 then
    splitIndex = InStrRev(str, " ", MaxLength)
    if splitIndex = 0 then splitIndex = LEN(str)
  end if 
  ReDim Preserve arr(UBOUND(arr) + 1)
  arr(UBOUND(arr)) = LEFT(str, splitIndex)
  str = MID(str, splitIndex + 1)
wend
outStr = ""
for i = LBound(arr) to UBound(arr)
  outStr = outStr & arr(i) & vbCrLf
next
outStr = replace (outStr, vbCrLf, "<br>")

Response.Write ( "<table style=""border:1px solid #0099FF width=""20"" height=""20""

border=""0"" bgcolor=""336699"" >" )
Response.Write ("<tr>")
Response.Write ( "<td height=""20"" width=""5"">")
Response.Write ("Navn:")
Response.Write (rsGuestbook("Name"))
Response.Write ("<HR>")
Response.Write ("</td>")
Response.Write ("</tr>")
Response.Write ("<tr>")
Response.Write ( "<td height=""23"" width=""5"">")
Response.Write ("Besked:")
Response.Write outStr
Response.Write ( "</td>")
Response.Write ("</tr>")
Response.Write ("</tabel>")
Response.Write ("<BR>")
Response.Write ("<BR>")


rsGuestbook.MoveNext
Loop
rsGuestbook.Close
set rsGuestbook=Nothing
set adoCon=Nothing
%>
Avatar billede eagleeye Praktikant
21. december 2002 - 20:25 #4
Du har også sta antal tegn pr linie til 1:

MaxLength = 1

Er det meningen eller ??
Avatar billede raune Nybegynder
21. december 2002 - 22:24 #5
nej men det virkede ikke med 30 så prøvede lige med 1 så er det nemmer at overskue
Avatar billede eagleeye Praktikant
21. december 2002 - 22:28 #6
Det virker ikke med en længde på 1.
Avatar billede eagleeye Praktikant
21. december 2002 - 22:32 #7
Eller så prøv denne den kan kan klkare det også hvis længden er lig med 1:


inputStr = rsGuestbook("Comments")
ConstmaxCharPrLine = 20
charPrLine = 0 'Counter
i = 1 'Counter
outStr = ""
inputStr = replace (inputStr,"<br>", vbCrLf)
do while len(inputStr) > 0
  if len(inputStr)>maxCharPrLine then
    maxCharPrLine = ConstmaxCharPrLine
  else
    maxCharPrLine = len(inputStr)
  end if
  indexBR = inStr(1,inputStr, Chr(10)) 'Tjek for return
  if indexBR = 0 then 'ingen return
      indexMM = inStrRev(inputStr," ",maxCharPrLine)
      if indexMM = 0 then 'Tjek om der ingen mellemrum er i ordet
        indexMM = maxCharPrLine
        outStr = outStr & Left(inputStr,maxCharPrLine)
        if (len(inputStr) > maxCharPrLine) then
          outStr = outStr & "-" & vbCrLf
        end if
      else
        outStr = outStr & Left(inputStr,indexMM) & vbCrLf       
      end if
      indexBR = indexMM
  else
    if indexBR > maxCharPrLine then 'tjek om der er flere tegn end tilladt
      indexMM = inStrRev(inputStr," ",maxCharPrLine)
      if indexMM = 0 then 'Tjek om der ingen mellemrum er i ordet
        indexMM = maxCharPrLine
        outStr = outStr & Left(inputStr,maxCharPrLine) & "-" & vbCrLf
      else
        outStr = outStr & Left(inputStr,indexMM) & vbCrLf
      end if
      indexBR = indexMM
    else
      outStr = outStr & left(inputStr,indexBR)
    end if
  end if
  inputStr = mid(inputStr,indexBR+1)
loop
outStr = replace (outStr, vbCrLf, "<br>")


Response.Write outStr
Avatar billede raune Nybegynder
21. december 2002 - 23:18 #8
jo den virker men der kommer jo et grimt - istedet for et rent linje skift . og det var ikke fordi jeg ville have linje skift efter et bogstave den anden kode virkede bare ikke så jeg tænkte jeg prøver lige med 1
Avatar billede raune Nybegynder
21. december 2002 - 23:24 #9
altså det jeg skal bruge er en kode der laver mellem rum når den skifter klnije i et form felt
Avatar billede eagleeye Praktikant
21. december 2002 - 23:38 #10
- kommer hvis et ord er længere end max antal karakter pr linie. Så deler den ordet og sætter - ind.

Hvis du ikke vil havde det - så skal du rette denne linie:
          outStr = outStr & "-" & vbCrLf

til:
          outStr = outStr & "" & vbCrLf

Samt denne linie
        outStr = outStr & Left(inputStr,maxCharPrLine) & "-" & vbCrLf

til:
        outStr = outStr & Left(inputStr,maxCharPrLine) & "" & vbCrLf


Begge koder viker til dette "Jeg har denne kode og gerne vil have den skal skifte linje efter et bestem antal tegn"
Den føste virker ikke hvis du vil havde 1 karakter pr linie...

Jeg forstår ikke det sidste du skriver du kan sætte et mellemrum ind enten hvor - var eller ved hver vbCrLf som bliver til et linie skift.

HVis det skal være i et form textarea så skal man bruge vbCrLf som linie skift og ikke <br> Så dennne linie skal ikke med.
outStr = replace (outStr, vbCrLf, "<br>")
Avatar billede raune Nybegynder
22. december 2002 - 11:35 #11
hmm den første virker slet ikke det er det jeg prøver at sige (lige meget om jeg bruge 1 karakter eller 40 eller 1000) og den næste ser jo grim ud eks
det er mig
-
der er her
-
eller er det

det er hvad den skriver på min
Avatar billede raune Nybegynder
22. december 2002 - 11:38 #12
men ok det virker når jeg ikke lade den sætter - ind med kode 2 så tak for det
Avatar billede raune Nybegynder
22. december 2002 - 11:39 #13
håbede bare der var en nemmere måde
Avatar billede eagleeye Praktikant
22. december 2002 - 13:16 #14
Ok, jeg må kigge mere på den første så :)

Nej det er vist dessvære ikke en lettere måde at gøre det på.
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
Kurser inden for grundlæggende programmering

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