Avatar billede Slettet bruger
11. februar 2002 - 11:09 Der er 8 kommentarer og
1 løsning

Specifikt udtræk af Textbokse

Har lavet en textbox hvor der ud fra hvad brugeren indtaste skal udtrækkes oplysninger. Det drejer sig om periode. Hvis brugeren fx indtaste følgende:
1,2,3,4,10-16 i boxen skal jeg bruge have fat i samtlige værdier. dvs 1,2,3,4,10,11,12,13,14,15,16. Nogle der har et forslag til et script der kan klare dette?
Avatar billede coltau Juniormester
11. februar 2002 - 11:16 #1
Hvis du ikke have muligheden (10-16) med så kunne du putte tallene i et array med kommandoen: Split.
Det skal desværre kodes i hånden.
Avatar billede coltau Juniormester
11. februar 2002 - 11:33 #2
Her er et script der kan "bygge" WHERE-delen:

<%
SQL = ""
Cmd = "8-11,1,2,4,10-12,15,17"
S = Split(Cmd, ",")

sub PutiSQL(AItem)
  if SQL <> "" then
    SQL = SQL & " or id=" & AItem
  else
    SQL = " where id=" & AItem
  end if 
end sub

for Each Item in S
  SubS = Split(Item, "-")
  if (UBound(SubS) > 0) then
    if (SQL <> "") then
      SQL = SQL & " or (id>=" & SubS(0) & " and id<=" & SubS(1) & ")"
    else
      SQL = " where (id>=" & SubS(0) & " and id<=" & SubS(1) & ")"
    end if
  else
    PutiSQL(Item)
  end if
next
Response.Write(SQL)
%>
Avatar billede Slettet bruger
11. februar 2002 - 13:12 #3
Er det ikke alligevel muligt at smække det hele i et array selvom 10-16 også skal være muligt? Grunden til dette, er at hvis nu arrayet indeholder 52 (drejer sig om uger) skal der indsættes 52 nye poster i en tabel. Derfor ville det være smartest hvis man bare kan putte alt i et array, og så til sidste køre arrayet igennem mens man indsætter posterne
Avatar billede coltau Juniormester
11. februar 2002 - 13:40 #4
Det gør koden også:

SQL = ""
Cmd = "8-11,1,2,4,10-12,15,17"
S = Split(Cmd, ",") ' Putter dem i et array S:

for Each Item in S
  Response.Write(Item & "<br>")
next

Prøv at køre denne kode så kan du se hvad der er i hvert item.
Avatar billede Slettet bruger
11. februar 2002 - 14:04 #5
Ok, det er sku godt lavet. Men i stedet for at den skriver 8-11 i en af cellerne i arrayet, skal den skrive 8,9,10,11, hvis man cmd = 8-11
Er det svært at lave det?
Avatar billede coltau Juniormester
11. februar 2002 - 15:11 #6
Skal de være i rækkefølge. ?
Avatar billede Slettet bruger
11. februar 2002 - 15:20 #7
Nej det er ligegyldigt
Avatar billede coltau Juniormester
11. februar 2002 - 15:36 #8
Kan du få lidt ud af det her:

<%
Cmd = "1,2,4,10-12,15,17"
S = Split(Cmd, ",")
Dim MyArr(52)

Response.Write(Cmd & "<br>")

Cnt = 0
for Each Item in S
  SubS = Split(Item, "-")
  if (UBound(SubS) > 0) then
    for I = SubS(0) to SubS(1)
      MyArr(Cnt) = I
      Cnt = Cnt + 1
    next
  else
    MyArr(Cnt) = Item
    Cnt = Cnt + 1
  end if
next
' Udskriv indholdet af MyArr
for Each Item in MyArr
  Response.Write(Item & "<br>")
next

%>

Listen er i MyArr
Avatar billede Slettet bruger
11. februar 2002 - 15:51 #9
Yes det funger sku. Så må jeg selv arbejde videre med det, men som sagt 1000 tak
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