webForumDet fria alternativet

Söka efter en siffra

ASP

19 svar · 275 visningar · startad av origon

Medlem sedan okt. 2001101 inlägg
Frågan#1

Hur gör jag för att söka efter värden i ett recordset?

t.ex.

IF RS("ListView") = "1" THEN
Visa 1
END IF
IF RS("ListView") = "2" THEN
Visa 2 
END IF

Om det finns både 1 och 2 ska han visa båda två det kan finnas ända upp till 9 st.

Hoppas ni förstår mig!
;)

[Redigerat av origon den 07 dec 2001]

Medlem sedan okt. 2001101 inlägg
#2

Okej får inget svar på den frågan så det får bli på ett annat sätt då, hur gör jag för att bryta ur siffrorna 1,2,3,4 och lägga dom i olika variablar?
t.ex. så att jag får värde 1 i variabeln var1 och värdet 2 i var2 osv...

Medlem sedan dec. 19995 874 inlägg
#3
RSarr = RS.GetRows()
SumArr = UBound(RSarr, 2) + 1

for i = 0 to SumArr
   If RSarr(0,i) = i Then
      Visa i
   End If
next

Du får byta ut 0:an mot rätt värde.

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=20" TARGET=_blank>Har du husdjur hemma?
</A>Varför får man inte dricka saltvatten?

Medlem sedan okt. 2001101 inlägg
#4

Jag får det inte att fungera, det blir inget felmeddelande men inget händer.

strSQL = "SELECT Listview FROM Users Where User = '"&User&"'"
Set RS = Connection.Execute(strSQL)

		
RSarr = RS.GetRows()
SumArr = UBound(RSarr, 2) + 1
for i = 2 to SumArr
If RSarr(0,i) = i Then
response.write "test"
End If
next
Medlem sedan dec. 19995 874 inlägg
#5

prova att skriva ut värdet från RSarr

typ

response.write RSarr(0,0)

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=20" TARGET=_blank>Har du husdjur hemma?
</A>Varför får man inte dricka saltvatten?

Medlem sedan okt. 2001101 inlägg
#6

Då får jag ut det som är i fältet alltså

12345

[Redigerat av origon den 08 dec 2001]

Medlem sedan okt. 2001101 inlägg
#7

ingen som vet vad felet kan vara???

behöver verkligen få det att fungera.

Medlem sedan dec. 200012 464 inlägg
#8
RSarr = RS.GetRows()
SumArr = UBound(RSarr, 2) + 1
for i = 2 to SumArr
If cint(RSarr(0,i)) = cint(i) Then
response.write "test"
End If
next

Varför börjar du loopen med 2? Du kan aldrig förutsätta att du har en viss ordning i resultatet om du inte använder order by i select-frågan.

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 2001101 inlägg
#9

Jag fick koden från brimba och han sa

Du får byta ut 0:an mot rätt värde.

Själv kan jag absolut inget i detta område så jag vet inte vad dom olika sakerna gör.

Men jag vill helt enkelt att den kollar i recordsettet efter en viss siffra finns den ska han skriva ut "test"

Medlem sedan dec. 19995 874 inlägg
#10

Ursäkta om du missuppfattade mig...

RSarr = RS.GetRows()
SumArr = UBound(RSarr, 2) + 1
for i = 0 to SumArr
If RSarr(0,i) = i Then
Visa i
End If
next

Den rödmarkerade 0:an var den jag menade

Prova det. annars kan du prova varianter exempelvis:

RSarr = RS.GetRows()
SumArr = UBound(RSarr, 2) + 1
for i = 0 to SumArr
If RSarr(0,i) = cStr(i) Then
Visa i
End If
next

eller

RSarr = RS.GetRows()
SumArr = UBound(RSarr, 2) + 1
for i = 0 to SumArr
If RSarr(0,i) = cInt(i) Then
Visa i
End If
next

Hoppas det fungerar

------------------
Mvh
Patrik aka Brimba

Medlem sedan okt. 2001101 inlägg
#11

Hoppas jag förstod dig rätt nu :)

Var det här jag skulle sätta ut siffran jag ville leta efter?

15:   RSarr = RS.GetRows()
16:   SumArr = UBound(RSarr, 2) + 1
17:
18:   for i = 0 to SumArr
19:   If RSarr([b]2[/b],i) = i Then
20:   response.write "test"
21:   End If
22:   next

För då jag gör det får jag följande felmeddelande.

Feltyp:
Körningsfel i Microsoft VBScript (0x800A0009)
Felaktigt matrisindex: '[number: 2]'
/test.asp, line 19

Tackar för all hjälp ;)

Medlem sedan dec. 200012 464 inlägg
#12

Om du vill jämföra med värdet i andra kolumnen i din select-fråga så får du använda index 1 itsället. Index börjar på 0.

Jag förstår inte riktigt vad du vill med din jämförelse. kan du inte lägga till det villkoret i din selectsats?

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 2001101 inlägg
#13

ehh, jag kan förklara lite mer noggrant vad det är jag vill ha fram.

Användarna ska kunna välja vilka kategorier dom vill ha t.ex. Fordon | Hus m.m. och då jag sparar det kan det se ut som följande för en användare 31245 där 1 är t.ex. Fordon och 2 är Hus.

Jag kan inte kolla det i select satsen därför då kontrollerar jag bara ett värde jag vill kunna kolla värdena 1 till 9 och ser recordsettet ut som följande 31245 ska han visa kategorierna
3
1
2
4
5.

hoppas ni förstår vad jag menar :)

[Redigerat av origon den 08 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#14

Då tycker jag att du skall göra om databasen och lägga till en tabell där du sparar användarid och kategoriid. Om någon är intresserad av flera kategorier så blir det flera poster i tabellen.

Det blir bara problem om man försöker lagra sammansatt information i en post.

Hur går det om du har fler kategorier? Hur kan du då skilja på om det är 1 och 2 elle 12?

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19995 874 inlägg
#15

Jag håller med LarsG..

Gör såhär..

tblUser
*flduID
fldUserName

tblCat
*fldcID
fldCategoryName

tblUserCat
*flduID
*fldcID

* betyder nyckel

För då kan du lätt lägga till och plocka bort användare ur olika kategorier.
Du kan inte heller få några dubbletter, vilket du riskerar om du gör som du hade planerat.

------------------
Mvh
Patrik aka Brimba

[Redigerat av Brimba den 08 dec 2001]

Medlem sedan okt. 2001101 inlägg
#16

Men blir inte det en onödigt stor databas då? jag menar om jag nu har 1000 användare som kan välja välja 9 kategorier då blir det ju 9000 poster.

Medlem sedan dec. 200012 464 inlägg
#17

Ja databasen blir större men dina applikationer blir mycket enklare.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 200012 464 inlägg
#18

Grunden i en databasdesign är att man definerar vilka objekt man har och varje objekt hanteras för sig.
Även om databasen blir större så blir det bättre prestanda då du kan utnyttja de sökfunktioner som finns i databashanteraren. Dels så är den söknig som görs i databasen bättre än den du kan göra i VB-skript och dels så hämtar du enbart de data som är relevanta.

[Redigerat av LarsG den 08 dec 2001]

Medlem sedan okt. 2001101 inlägg
#19

Okej jag litar på er :) ni verkar ju veta vad ni snackar om :e

Tack för allt...

Medlem sedan dec. 19995 874 inlägg
#20

Om man delar upp datan istället för att repetera den blir databasen ofta mindre, så jag håller inte riktigt med er.

Tänk er följande:

1000 anställda
varje anställd får gå 4 kurser
20 avdelningar
och det finns totalt 30 kurser att välja på.

tblKurs
Pnr
Namn
AvdKod
AvdNamn
Kontoställe
Totalkostnad
KursNamn
KursDatum
KursLängd
KursKostnad

Om vi räknar med defaultvärden för fälten så blir detta ungefär 456 000 byte

Om man normaliserar denna kommer det att bli en otrolig förbättring..

exempelvis:

tblAnstalld
Pnr
Namn
AvdKod
TotalKostnad

tblAvdelningar
AvdKod
AvdNamn
Kontoställe

tblGenomKurs
Pnr
KursTyp
Kursdatum

tblKurser
KursTyp
KursNamn
KursLängd
KursKostnad

Total mängd data: 120720 byte

Som det ser ut från börjar är det sista exmemplet större och "sämre", men om man räknar på det blir det mycket bättre.

Lycka till origon!

------------------
Mvh
Patrik aka Brimba

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)