Avatar billede pelskee Nybegynder
10. december 2004 - 09:55 Der er 16 kommentarer og
1 løsning

Do While med If Then Else. Er dette rigitgt ?

jeg vil gerne lave en funktion som checker indholdet af en tabel inden den enten opdaterer indholdet i samme tabel eller opretter en ny record i tabellen. (hvis produktet allerede ligger i indkøbskurven skal den ligge det nye antal til ved samme produkt ellers skal den bare indsætte produktet på en ny linie)

jeg har lavet nedenstående kode men jeg er i tvivl om den vil gøre det som jeg tænker på. vil denne kode checke hele rsIndkoebskurv recordsættet op imod rsSpecifik inden den enten opdaterer indhold eller opretter ny ordrelinie ?


do while not rsIndkoebskurv.EOF 
If rsSpecifik(IDvin) = rsIndkoebskurv(IDvin)
rsIndkoebskurv.Movenext
loop

Then

Opdater antal

Else

Opret ny

End if
Avatar billede webbe Nybegynder
10. december 2004 - 11:10 #1
do while not rsIndkoebskurv.EOF 
If rsSpecifik(IDvin) = rsIndkoebskurv(IDvin)

Then

Opdater antal

Else

Opret ny

End if
rsIndkoebskurv.Movenext
loop

tror det skal være sådan istedet for - men er ikke sikker
Avatar billede chrisrj Forsker
11. december 2004 - 00:55 #2
Hvis der kun skal findes een post(virker mest logisk) er dette måden:

do while not rsIndkoebskurv.EOF
If rsSpecifik(IDvin) = rsIndkoebskurv(IDvin)
  found = true
  exit loop
end if
rsIndkoebskurv.Movenext
loop
if found = true Then

Opdater antal

Else

Opret ny

End if
Avatar billede montago Praktikant
11. december 2004 - 01:45 #3
ARGH...

<%
do while not rsIndkoebskurv.EOF 
    If rsSpecifik(IDvin) = rsIndkoebskurv(IDvin) Then
        Opdater antal
    Else
        opret ny
    End if
rsIndkoebskurv.Movenext
loop
%>

kan ikke laves anderledes
Avatar billede chrisrj Forsker
11. december 2004 - 02:05 #4
Det er da helt hen i vejret - på den måde vil koden jo oprette eller opdatere en gang for HVER post i rsIndkoebskurv!!

Eksempel:
en indkøbskurv med tre varer:
1 disk
1 cpu
1 bundkort

bruger tilføjer 1 disk mere og ville indkøbkurven se således ud med din kode:
2 diske
1 cpu
1 disk
1 bundkort
1 disk

Det er da totalt forkert!!! :)

Det sker IKKE med min kode.
Avatar billede montago Praktikant
11. december 2004 - 02:09 #5
måske om du gør det forkert ???
Avatar billede chrisrj Forsker
11. december 2004 - 02:10 #6
Hvad gør jeg forkert? Forklar venligst.
Avatar billede montago Praktikant
11. december 2004 - 02:12 #7
ehhhhh.....

hvis man er det fjols... som ikke bruger ID for HVER item i kurven... vil man få 1 ny plus opdatering af dem som ligner...

du skal lige huske at man ikke tjekker på navnet... men på ID'et
Avatar billede montago Praktikant
11. december 2004 - 02:15 #8
en indkøbskurv med tre varer:
id | antal | varenavn

1|1|disk
2|1|cpu
3|1|bundkort

do while not rs.eof

If basket(ID) = Request(ID) then
  update antal = request(antal)
end if

rs.movenext
loop
Avatar billede chrisrj Forsker
11. december 2004 - 02:19 #9
Ja, men så kan du jo ikke oprette en ny, vel? :)
Avatar billede montago Praktikant
11. december 2004 - 02:30 #10
jo... du har ret... faktisk bliver der indsat en del flere records i mit første forsøg...

men en ting som måske ville være mere hensigtsmæssig, ville være at dele funktionen op til til en som UPDATER og en som ADDER

sådan at man endten adder items... som man bagefter kan update antallet på...

sættes antal til 0 kan man i UPDATE'en slette recorden...

jeg ville så også gøre det hele med Sessions i stedet for igennem en database...


If Request("func") = "ADD" then
  INSERT
Elseif Request("func") = "UPD" then
  if request("antal") = "0" then
    SLET
  else
    UPDATE
  end if
end if


på denne her måde undgår man at løbe recorden igennem... og har mere styr på hvad man gør
Avatar billede chrisrj Forsker
11. december 2004 - 02:33 #11
Det er rigtigt, men det er jo noget helt andet end det pelskee spurgte om :)

Tak for snakken, jeg smutter i seng nu. GAAAB ;)
Avatar billede pelskee Nybegynder
14. december 2004 - 10:33 #12
jeg har lidt mistet overblikket. hvilken én ender jeg med at skulle bruge...
Avatar billede chrisrj Forsker
14. december 2004 - 11:00 #13
Som sagt: Hvis der kun skal findes een post(virker mest logisk) er dette måden:

do while not rsIndkoebskurv.EOF
If rsSpecifik(IDvin) = rsIndkoebskurv(IDvin)
  found = true
  exit loop
end if
rsIndkoebskurv.Movenext
loop
if found = true Then

Opdater antal

Else

Opret ny

End if
Avatar billede pelskee Nybegynder
14. december 2004 - 11:15 #14
tak! :) prøver det senere eller i morgen
Avatar billede chrisrj Forsker
14. december 2004 - 12:48 #15
Det er bare i orden :)
Avatar billede pelskee Nybegynder
12. oktober 2005 - 01:24 #16
chrisrj - det virker
du skal have point
undskyld den langsomme svartid!
Avatar billede chrisrj Forsker
12. oktober 2005 - 05:58 #17
Heh, bedre sendt end aldrig ;)
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