/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Loop problem
Fra : fcjensen


Dato : 12-02-04 17:05

Hej har et lille problem med mit script, Jeg vil gerne have det
til at: Hvis der findes en post i databasen, på skriver den en
sætning, og hvis den ikke findes skal der skrives en anden
sætning... Jeg har dette script men det virker ikke sådan som jeg
vil have det...
if trim(rs("teamid")) = trim(rs("home")) then
SQL = "select * from lineup"
set rs = Conn.execute(SQL)
response.write "Hjemme "

do while not rs.eof or Response.IsClientConnected=false
if lcase(cstr(rs("matchid"))) = lcase(cstr(test1)) then
response.write "Update <br>"
else
response.write "insert into <br>"
end if
rs.movenext
loop
rs.close

else

SQL = "select * from lineup"
set rs = Conn.execute(SQL)
response.write "Ude "

do while not rs.eof or Response.IsClientConnected=false
if lcase(cstr(rs("matchid"))) = lcase(cstr(test1)) then
response.write "Update <br>"
else
response.write "insert into <br>"
end if
rs.movenext
loop
rs.close


end if


På forhånd tak!


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (12-02-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-02-04 21:40

fcjensen skrev:

> Hej har et lille problem med mit script, Jeg vil gerne have det
> til at: Hvis der findes en post i databasen, på skriver den en
> sætning, og hvis den ikke findes skal der skrives en anden
> sætning... Jeg har dette script men det virker ikke sådan som jeg
> vil have det...

Hvordan virker det så? Det er ret vigtigt at du både fortæller hvad
du gerne vil opnå og hvad du allerede har opnået.


> if trim(rs("teamid")) = trim(rs("home")) then

Hvad har du i rs? (hvad har du over denne linje). Hvis du slet ikke
har noget stående, giver sammenligningen ikke mening.

Hvis du ikke allerede benytter Option Explicit, er det en god ide
at begynde på det. Se hvordan og hvorfor her:
   <http://asp-faq.dk/article/?id=9>


> SQL = "select * from lineup"
> set rs = Conn.execute(SQL)

Hvis rs indeholdt noget før, så bliver det overskrevet nu. Det er
en dårlig ide at lade et postsæt overskrive et andet - du taber
forbindelsen til det gamle postsæt.


> do while not rs.eof or Response.IsClientConnected=false

Or? Hvis du skal kombinere rs.EOF-tjekket med noget her skal det
være med AND - ellers risikerer du at udskrive fra et tomt postsæt.
Jeg har aldrig set Response.IsClientConnected før, jeg tvivler på
at den er nødvendig.

> if lcase(cstr(rs("matchid"))) = lcase(cstr(test1)) then

Hvad ligger der i test1?


Et par generelle råd.

1) Lav indrykninger i din kode. Større kodeblokke er meget svære at
overskue hvis alt står på samme niveau. Brug en indrykning for hver
blok i koden:

Do While Not rs.EOF
   If foo = bar Then
       ' Gør dit
   Else
       ' Gør dat
   End If
   rs.movenext
Loop

2) Hvis du skal finde noget i en database, så bed databasen om at
finde det. Databaser er beregnet til at søge i - og de er som regel
ganske gode til det. Når du først henter alle data fra en tabel
(SELECT * FROM tabel) og derefter løber tabellen igennem (Do
While...) og tjekker indholdet af hver post (If rs("dit") = dat),
så er det en metode der er mange gange langsommere og mere krævende
end hvis du spørger direkte: SELECT * FROM tabel WHERE dit = dat.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste