Avatar billede wandaxp Praktikant
08. april 2006 - 00:17 Der er 14 kommentarer og
2 løsninger

Er dette Arrays eller hvorfor?

Jeg er ikke så stærk i Arrays?

Jeg har denne del som indgår i en løkke :

<form name="form" action='vis.asp?mode=gemoplysninger' method="post">
</td><td><INPUT TYPE='text' SIZE='15' MAXLENGTH='50' NAME='varenr1' VALUE='<%=database("Varenr")%>'>
</td><td><INPUT TYPE='text' SIZE='10' MAXLENGTH='10' NAME='antal1' VALUE='<%=database("Antal")%>'>
</td><td p align=right><INPUT TYPE='text' SIZE='10' MAXLENGTH='20' NAME='pris1' VALUE='<%=database("Pris")%>'>
<input type="submit" value="Gem ændringer" NAME="salgsvare">

Denne del kaldes for alle vare man har lagt i kurven.

Hvis man så ændre inputfeltet antal, og trykker knappen opdater vil jeg gerne have den kører dette :

strSQL = "UPDATE lliste SET Antal='" & request.form("antal1") & "' AND Varenr='" & request.form("varenr1") & "' AND pris='" & request.form("pris1") & "' WHERE lliste.SessionID = '" & Session.SessionID & "'"

Den skal så bare opdater oplysningerne for den aktuelle vare i databasen, men den tager alle værdier for alle varer med hvordan undgår jeg dette (Dette er når der er valgt mere end 1 vare)

Hvis der kun er valgt en vare kommer den med denne fejl for update sætningen : Datatyperne stemmer ikke overens i kriterieudtrykket.

Nogen der er hajer her?

På forhånd 1000 mange tak :-)
Avatar billede busschou Praktikant
08. april 2006 - 07:41 #1
Hvis du har formen i en løkke så er problemet jo at hvis der er 5 varer ja så har 5 gange felter som hedder fx "antal1"
Når du submitter formen vil resultatet derfor være "1,2,3,4,5" eller måske "1+2+3+4+5" eller lignende
Jeg kan ikke huske om det er kommaer eller plusser den sætter i
Men det kan du hurtig lure ved enten skrive den ud, eller ved at lave method="post" om til method="get"
Så må du når du henter det lave en linje
antal = split(request.form("antal1"),"+")
og tilsvarende lave en sql løkke ala
for i = 0 til ubound(antal)-1
  strsql = "update lliste set antal = "antal(i).......osv
next

Hvis du har en fejl med datatyper der ikke stemmer overens, så skriv sql sætningen ud og læg den herind :o)
Avatar billede wandaxp Praktikant
08. april 2006 - 08:23 #2
Nu får jeg denne fejl : Typer stemmer ikke overens
medhenvisning til denne linie :
antaliliste = split(request.form("antal1"),",")

Hele update sætningen er her :

antaliliste = split(request.form("antal1"),",")
'  response.write "<BR>" & antaliliste & "<BR>"
for i = 0 to ubound(antaliliste)-1
  strSQL = "UPDATE lokalesalgsliste SET Antal=" & antaliliste(request.form("antal1")) & " AND Varenr='" & antaliliste(request.form("varenr1")) & "' AND beskrivelse='" & antaliliste(request.form("beskrivelse1")) & "' AND pris=" & antaliliste(request.form("pris1")) & " WHERE lokalesalgsliste.ListeID = " & antaliliste(request.form("listeid1")) & " AND lokalesalgsliste.SessionID = '" & Session.SessionID & "'"
'  response.write "<BR>" & strSQL & "<BR>"
  Con.Execute(strSQL)
next
Avatar billede busschou Praktikant
08. april 2006 - 08:54 #3
Antal=" & antaliliste(request.form("antal1"))
skal være
Antal=" & antaliliste(i)
tilsvarende med resten
Det du kalder "antaliliste" er jo et array(1,2,3,4,5) mens request.form("antal1") er en tekststreng "1,2,3,4,5" :o)
Avatar billede wandaxp Praktikant
08. april 2006 - 10:17 #4
Der er jeg ikke lige sikker på hvad du mener med?
Avatar billede wandaxp Praktikant
08. april 2006 - 10:23 #5
er det sådan du mener det skal se ud :

antaliliste = split(request.form("antal1"),",")
Varenriliste = split(request.form("Varenr1"),",")
beskrivelseiliste = split(request.form("beskrivelse1"),",")
prisiliste = split(request.form("pris1"),",")
listidiliste = split(request.form("listeid1"),",")
for i = 0 to ubound(antaliliste)-1
  strSQL = "UPDATE lokalesalgsliste SET Antal=" & antaliliste("antal1") & " AND Varenr='" & Varenriliste("varenr1") & "' AND beskrivelse='" & beskrivelseiliste("beskrivelse1") & "' AND pris=" & prisiliste("pris1") & " WHERE lokalesalgsliste.ListeID = " & listeidiliste("listeid1") & " AND lokalesalgsliste.SessionID = '" & Session.SessionID & "'"
'  response.write "<BR>" & strSQL & "<BR>"
  Con.Execute(strSQL)
next

På denne måde gemmer den intet, men melder heller ingen fejl....
Avatar billede wandaxp Praktikant
08. april 2006 - 10:24 #6
Den kommer slet ikke ind i update løkken her?
Avatar billede busschou Praktikant
08. april 2006 - 21:29 #7
jeg mener
.....
antaliliste = split(request.form("antal1"),",")
Varenriliste = split(request.form("Varenr1"),",")
beskrivelseiliste = split(request.form("beskrivelse1"),",")
prisiliste = split(request.form("pris1"),",")
listidiliste = split(request.form("listeid1"),",")
for i = 0 to ubound(antaliliste)-1
  strSQL = "UPDATE lokalesalgsliste SET Antal=" & antaliliste(i) & " AND Varenr='" & Varenriliste(i) & "' AND beskrivelse='" & beskrivelseiliste(i) & "' AND pris=" & prisiliste(i) & " WHERE lokalesalgsliste.ListeID = " & listeidiliste(i) & " AND lokalesalgsliste.SessionID = '" & Session.SessionID & "'"
'  response.write "<BR>" & strSQL & "<BR>"
  Con.Execute(strSQL)
next
Avatar billede wandaxp Praktikant
08. april 2006 - 22:19 #8
Den kommer stadig slet ikke ind i løkken hvor den kører Updatesætningen...?
Avatar billede wandaxp Praktikant
08. april 2006 - 22:20 #9
antaliliste skal det ikke også være en count streng på en måde, så den tæller hvor mange poster der er i arrayet istedet for at tage post for post?
Har dog ikke så meget kendskab til brug af arrays?
Avatar billede wandaxp Praktikant
08. april 2006 - 22:26 #10
Skal disse linier ikke også tælles en atnd vidre efter hver gang den ghar gennemført løkken?
Varenriliste = split(request.form("Varenr1"),",")
beskrivelseiliste = split(request.form("beskrivelse1"),",")
prisiliste = split(request.form("pris1"),",")
listeidiliste = split(request.form("listeid1"),",")
Avatar billede wandaxp Praktikant
09. april 2006 - 01:13 #11
Nu er jeg da kommet en del længere, mne nu er der kun det med jriteriaudtrykket der ikke passer :

Dette er sql strengen:
strSQL = "UPDATE lokalesalgsliste SET Antal='" & Request.Form("antal1")(i) & "' AND Varenr='" & Request.Form("varenr1")(i) & "' AND beskrivelse='" & Request.Form("beskrivelse1")(i) & "' AND pris='" & Request.Form("pris1")(i) & "' WHERE lokalesalgsliste.ListeID ='" & Request.Form("listeid1")(i) & "' AND lokalesalgsliste.SessionID = '" & Session.SessionID & "'"

I databasen (En access database) er der disse felter som er af typerne:
ListeID - Auto nr.
SessionID - TAL
VareNr - Tekst
Tabel - Tekst
Antal - TAL
Beskrivelse - Tekst
Pris - Tal
Avatar billede wandaxp Praktikant
09. april 2006 - 01:14 #12
Datatyperne stemmer ikke overens i kriterieudtrykket.
Avatar billede wandaxp Praktikant
09. april 2006 - 01:14 #13
Pointene deles 50/50
Avatar billede wandaxp Praktikant
09. april 2006 - 01:25 #14
Hvis jeg får den til at accepter typerne kommer den med -1 i antal når jeg forsøger at ændre dem, mne hvis jeg laver en response,write på sql sætningen, ser den rigtig nok ud, mne ændre stadig til -1 eller i tilfælde hvor jeg sætter et tal i 1000 stk. klassen så kan den ændre det til 0.
Hvis jeg ændre prisen ændre den også automatisk de forkerte -1 til 0 , men den ændre allievel ikke prisen?

Så hvad er bedst, og hvad kan jeg bruge med evt. ændringer?
Avatar billede wandaxp Praktikant
09. april 2006 - 13:55 #15
Jeg kviter med 50 point for hjælpen med Arrays, som dog ikke hjalp helt, men som ledte mig i en anden retning... :-)
Så send et svar :-)
Avatar billede busschou Praktikant
09. april 2006 - 17:07 #16
ok her er et svar, håber det hele løkkeddes trods alt :o)
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