Avatar billede vagn16 Nybegynder
14. januar 2003 - 11:50 Der er 21 kommentarer og
2 løsninger

Split ved komma og smid i et nyt felt

Hej!

Jeg har et felt der indeholder:

Centrum, 1000m.
Bus, 250m.
Indkøb, 500m.

(det behøver ikke at være komma der benyttes som seperator!)

Jeg vil gerne have følgende output:

<table border="0" width="100%" cellspacing="0" cellpadding="0">
  <tr>
    <td width="50%">Centrum</td>
    <td width="50%" align="right">1000m.</td>
  </tr>
  <tr>
    <td width="50%">Bus</td>
    <td width="50%" align="right"> 250m.</td>
  </tr>
  <tr>
    <td width="50%">Indkøb</td>
    <td width="50%" align="right"> 500m.</td>
  </tr>
</table>

Der er ikke nødvendigvis tre udsagn - der kan være flere eller færre?!

vagn / 16
Avatar billede dgivoni Nybegynder
14. januar 2003 - 12:05 #1
flg. skulle fungere hvis du har ", " som separator:

rs.open ...

Response.write("<table border=""0"" width=""100%"" cellspacing=""0"" cellpadding=""0"">")
while not rs.eof or rs.bof
  afstande = split(rs("FELTNAVNET"), ", ")
  Response.write("<tr>")
  Response.write("<td width=""50%"">" & afstande(0) & "</td>")
  Response.write("<td width=""50%"" align=""right"">" & afstande(1) & "</td>")
  Response.write("</tr>")
  rs.movenext
wend
Response.write("</table>")
Avatar billede vagn16 Nybegynder
14. januar 2003 - 13:03 #2
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 1]'

/afdelinger.asp, line 195

Centrum,1.000 m. Bus,50 m. Indkøb,500 m. Skole,300 m.
Avatar billede dgivoni Nybegynder
14. januar 2003 - 13:09 #3
naa, ok, du skal erstatte ", " med ","
i dit foerste eksempel var der mellemrum med efter kommaet, senere hen ikke...
Avatar billede vagn16 Nybegynder
14. januar 2003 - 13:16 #4
Ok... dum fejl.

Men nu skiver den:

Centrum 1.000 m. Bus

Altså til næste komma og så ikke mere - ikke noget på næste linje!?

Der skulle stå:

Centrum 1.000 m.
Bus 250m.
Indkøb 500m.

Skal jeg smide nogle flere kommaer ind??!

vagn / 16
Avatar billede dgivoni Nybegynder
14. januar 2003 - 13:20 #5
nej, det har ikke noget med kommaerne at goere.
Det er tabellen, der formaterer udseendet. Hvordan ser html-koden ud bliver skabt? Evt. kan du give mig en url til siden...
Avatar billede vagn16 Nybegynder
14. januar 2003 - 13:22 #6
Avatar billede dgivoni Nybegynder
14. januar 2003 - 13:29 #7
naa, maaske er det alligevel kommaerne der er et problem
staar alle informationerne i samme felt, eller er der et felt pr. afstand?
Avatar billede vagn16 Nybegynder
14. januar 2003 - 13:32 #8
Alle informationerne står i samme felt!

Centrum,1.000 m.
Bus,50 m.
Indkøb,500 m.
Skole,300 m.

Vh

Pelle!
Avatar billede dgivoni Nybegynder
14. januar 2003 - 13:36 #9
ok, og de har linjeskift ogsaa, gaar jeg ud fra...
jeg proever lige at tilpasse scriptet
Avatar billede vagn16 Nybegynder
14. januar 2003 - 13:39 #10
Ja... der er også linjeskift!
Avatar billede dgivoni Nybegynder
14. januar 2003 - 13:40 #11
afstande = split(rs("FELTNAVNET"), vbCrLf) //splitter ved linjeskift

Response.write("<table border=""0"" width=""100%"" cellspacing=""0"" cellpadding=""0"">")
for i = 0 to ubound(afstande) - 1
  afstand = split(afstande(i), ",")
  Response.write("<tr>")
  Response.write("<td width=""50%"">" & afstand(0) & "</td>")
  Response.write("<td width=""50%"" align=""right"">" & afstand(1) & "</td>")
  Response.write("</tr>")
  rs.movenext
next
Response.write("</table>")
Avatar billede vagn16 Nybegynder
14. januar 2003 - 13:47 #12
Det hjlap...som du kan se lidt... men er spiller stadig ikke helt?!
Avatar billede vagn16 Nybegynder
14. januar 2003 - 13:52 #13
Jeg har lige smidt lidt ekstra point i gryden... jeg syntes du er meget hjælpsom!
Avatar billede dgivoni Nybegynder
14. januar 2003 - 13:52 #14
der mangler i hvert fald en afslutning paa tabellen.
Har du glemt det, eller er den gaaet i staa? Og hvad er der tilbage i feltet evt.?
Avatar billede dgivoni Nybegynder
14. januar 2003 - 13:54 #15
:-) mange tak. Jeg haaber vi kan faa det loest...
Avatar billede dgivoni Nybegynder
14. januar 2003 - 13:56 #16
hvilken linje er 199?
Avatar billede vagn16 Nybegynder
14. januar 2003 - 13:57 #17
I feltet er der stadig:

Indkøb,500 m.
Skole,300 m.

Det har den ikke behandlet!?

Hvis du ser: http://www.esbjergsboligforeninger.dk/afdelinger.asp?id=1

Her er der 3:

Centrum,1000m.
Bus,250m.
Indkøb,500m.

Og den behandler også kun de to første!
Avatar billede dgivoni Nybegynder
14. januar 2003 - 14:01 #18
jeg bliver noedt til at smutte nu...
er tilbage ca. kl. 16
Avatar billede eagleeye Praktikant
14. januar 2003 - 15:06 #19
Prøv at droppe rs.Movenext før next

  rs.movenext      <---------------------------- Slet denne linie
next
Avatar billede eagleeye Praktikant
14. januar 2003 - 15:09 #20
En anden ting er at lave det sådan at du ikke bruger -1 for den vil ikke udskrive den sidte punkt med -1:
Så denne linie rettes:

for i = 0 to ubound(afstande) - 1

Til:

for i = lbound(afstande) to ubound(afstande)
Avatar billede eagleeye Praktikant
14. januar 2003 - 15:12 #21
Hvis du ved et uheld har fået en vbCrLF (return) for meget i teksten kan man tjekke på om aftande(0) er lig "" og så ikke udskrive kolonnen for at undgå en tom kolonne.

Så koden bliver..:


afstande = split(rs("FELTNAVNET"), vbCrLf) //splitter ved linjeskift

Response.write("<table border=""0"" width=""100%"" cellspacing=""0"" cellpadding=""0"">")
for i = lbound(afstande) to ubound(afstande)
  afstand = split(afstande(i), ",")
  if afstand(0) <> "" then
    Response.write("<tr>")
    Response.write("<td width=""50%"">" & afstand(0) & "</td>")
    Response.write("<td width=""50%"" align=""right"">" & afstand(1) & "</td>")
    Response.write("</tr>")
  end if
next
Response.write("</table>")
Avatar billede eagleeye Praktikant
14. januar 2003 - 15:14 #22
Skulle du få et mellemrum mellem , og centrum eller 1.000 m så gør det ikke noget du kan bruge Trim den fjerne mellemrum før og efter en tekst men lader mellemrum inde i tekst blive..:

Centrum  , 1.000 m


Så disse to linier:
    Response.write("<td width=""50%"">" & afstand(0) & "</td>")
    Response.write("<td width=""50%"" align=""right"">" & afstand(1) & "</td>")

Rettes til:
    Response.write("<td width=""50%"">" & trim(afstand(0)) & "</td>")
    Response.write("<td width=""50%"" align=""right"">" & trim(afstand(1)) & "</td>")
Avatar billede vagn16 Nybegynder
14. januar 2003 - 15:32 #23
Han er en satan ham eagleeye!!! Altid hurtig med sine svar og som regel er det rigtige og gode løsningen han kommer med... satans:-) Eagleeye er det ok med dig at jeg smide lidt symbolkse point efter dgivoni?? (say 10 points?) Han forsøgte med måtte løbe...

Og mange tak for hjælpen - det var super!
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