Avatar billede rane Nybegynder
31. oktober 2003 - 13:30 Der er 16 kommentarer og
1 løsning

Textarea - linje opdeling

Hejsa,

jeg har en textarea-form, hvor jeg skriver eksempelvis 10 linjer af data ind i:

0 2 55 4 21
4 5 77 4 43
..osv

Nu vil jeg så gerne have indsat indholdet af textarea i en Access tabel - men vel at mærke linje for linje. Dvs:

Linje1: 0 2 55 4 21  --> Ny række i en tabel
Linje2: 4 5 77 4 43  --> Ny række i en tabel
..osv.

Dvs. når jeg submitter formen skal jeg have analyseret textarea så den opdeler indholdet i linjer og derefter laver en SQL INSERT loop for hver række.

Hvodden gøres det bedst?
Avatar billede cbj-dk Nybegynder
31. oktober 2003 - 13:34 #1
Hvad med at bruge Split() til at splitte linierne ad? (Jeg er ikke så erfaren med asp, men det er da hvad jeg ville gøre ;))
Avatar billede rane Nybegynder
31. oktober 2003 - 13:41 #2
HAr følgende indtil videre:

tekst = request.form("information")
tekst = Replace(tekst,vbCrLf,"<br>")

hvilket, når man udskriver det, fint deler det op i linjer. Men hvodden looper jeg igennem de X antal linjer og får lavet X antal SQL INSERTS?

Nedenstående skal vel bruges for at dele dataen op:
arrM = Split(tekst," ")
Avatar billede mnoer Nybegynder
31. oktober 2003 - 14:16 #3
arrM = Split(request.form("information"),"vbCrLf")
Avatar billede danielmuhlig Nybegynder
31. oktober 2003 - 15:03 #4
tekst = split(request.form("information"), vbCrLf)
for i=0 to UBound(tekst)
  insertIntoDatabase tekst(i)
next

(Du har så en funktion, der hedder insertIntoDatabase() der indsætter rækken  i databasen)

Skal dataene deles op også, laver du blot samme nummer for dataene...

/Daniel
Avatar billede rane Nybegynder
31. oktober 2003 - 16:43 #5
daniel, den fik jeg ikke liiiige fat i?
Avatar billede rane Nybegynder
31. oktober 2003 - 17:08 #6
Når jeg prøver at køre din kode, så får jeg en side kan ikke findes fejl. :(

tekst = split(request.form("information"), vbCrLf)
for i=0 to UBound(tekst)

SQL = "INSERT INTO stat(Goals, Shots, Passing) Values(" & tekst(4) &"," & tekst(5) & "," & tekst(6) & ")"
Conn.Execute (SQL)
next
Avatar billede rane Nybegynder
31. oktober 2003 - 17:56 #7
Ny fejl - tror simpelthen jeg har misforstået ovenstående kode :(  Hvis du gider og har tid til at skære det lidt mere ud i pap for mig?
Avatar billede rane Nybegynder
31. oktober 2003 - 18:15 #8
sætter lige lidt flere points på højkant :)
Avatar billede danielmuhlig Nybegynder
31. oktober 2003 - 19:20 #9
Mon det er dette her, du er ude efter:

rows = split(request.form("information"), vbCrLf)
for i=0 to UBound(rows)
  cols = split(rows(i))
  SQL = "INSERT INTO stat(Goals, Shots, Passing) Values(" & cols(0) & "," & cols(1) & "," & cols(2) & ");"
  Conn.Execute (SQL)
next


Ud fra følgende indtastning...

0 2 55 4 21
4 5 77 4 43

...bliver der oprettet to rækker i databasen. Værdierne Goals, Shots og Passing bliver sat til henholdsvis 0, 2 og 55 for første række og 4, 5, 77 for anden række (de sidste to tal i indtastningen bliver ikke brugt).

Var det sådan du ville have det?
Avatar billede danielmuhlig Nybegynder
31. oktober 2003 - 19:21 #10
Ups: 'cols = split(rows(i))' skal ændres til 'cols = split(rows(i), " ")'
Avatar billede rane Nybegynder
31. oktober 2003 - 19:37 #11
præcist! :)  Det virker bare 100% nu, lader det til. Fornemt - taak :)
Avatar billede rane Nybegynder
31. oktober 2003 - 19:47 #12
ups...daniel er du stadig med på en læser her?
Avatar billede rane Nybegynder
31. oktober 2003 - 19:49 #13
hvis talrækken f.eks. så således ud:

0 2 55 4 21
4 5 100% 77 4 43
7 4 14 67 56% 3

kan jeg så (i den ovenstående kode) sortere/slette de tal hvor der er et %-tegn i?
Avatar billede danielmuhlig Nybegynder
31. oktober 2003 - 21:05 #14
Jeg forstår ikke spørgsmålet. Hvordan vil du sortere efter dem?

Du kan godt slette dem (fra cols array'et), men det er lidt klodset. Hvad er formålet (måske kan det gøres på en anden måde...)
Avatar billede rane Nybegynder
31. oktober 2003 - 22:37 #15
Meningen er, at jeg paster alle disse talrækker ind i TEXTAREA fra et andet program. Og indimellem er der nogen procenttal inkluderet, men disse kan jeg ikke bruge til noget.

Dvs. når der sniger sig et element ind i rækken der indeholder et %-tegn, så skal elementet slettes.
Avatar billede danielmuhlig Nybegynder
31. oktober 2003 - 23:43 #16
rows = split(request.form("information"), vbCrLf)
for i=0 to UBound(rows)
  cols = split(rows(i))
  cols = removeBad(cols) 'Fjerner alle tal der indeholder et % tegn
  SQL = "INSERT INTO stat(Goals, Shots, Passing) Values(" & cols(0) & "," & cols(1) & "," & cols(2) & ");"
  Conn.Execute (SQL)
next

Function removeBad(orig)
  Dim clean(), cnt, i, j
   
  ' Tæl elementer uden et % tegn
  for i=0 to UBound(orig)
    Response.Write orig(i) & "<br>"
      If InStr(1, orig(i), "%") <= 0 Then cnt = cnt + 1
  Next

  ' Lav et array til elementerne uden % tegnet
  ' og kopiér elementerne over i det nye array
  redim clean(cnt)
  j=0
  for i=0 to UBound(orig)
    If InStr(1, orig(i), "%") <= 0 Then
      clean(j) = orig(i)
      j = j + 1
    End If
  Next

  ' Returnér array'et
  removeBad = clean

End Function
Avatar billede rane Nybegynder
01. november 2003 - 00:21 #17
Helt perfekt - du er jo en haj :)  Takker!
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