Avatar billede magnus_b Nybegynder
18. december 2002 - 12:44 Der er 16 kommentarer og
1 løsning

Multiopdatering

På denne her side
http://www.kif-atletik.dk/testsite/opdatering_betaling.asp
vil jeg gerne kunne opdater et felt, fra nej til ja og omvendt. Jeg kan dog ikke finde ud af hvordan jeg skal få det til at fungere, eftersom jeg ikke har så meget styr på ASP/SQL.

Kæde hopper af i denne her kodestump:
strQ = "UPDATE Resultater
SET betalt = True
WHERE id IN ( <liste fra formen> )"

Jeg har ikke for meget styr på ASP/SQL, så der er tale om fødselhjælp.

For ikke at skrive 10 sider kode, kan siderne og databasen hentes her: http://www.kif-atletik.dk/testsite/betaling.zip
Avatar billede mortenkjeldberg Nybegynder
18. december 2002 - 13:23 #1
Lidt må du give. Får du en fejl ? Og hvad mener du med multiopdatering?
Avatar billede hossein Nybegynder
18. december 2002 - 13:30 #2
Ligger MSAccess på din egen maskine? og du kan åbne den? hvis ja, Jeg vil foreslå at du laver en query og retter den direkte, med anvendelse af en iff funktion i din sql sætning fx: IIf(Right([IP].[cprnr], 1) in (1, 3, 5, 7, 9), "Mand", "Kvinde") AS KØN
Avatar billede magnus_b Nybegynder
18. december 2002 - 13:40 #3
Til mortenkjeldberg
Med multiopdatering mener jeg at alle "betalingerne" skal opdateres. Der findes muligvis en bedre måde at formuler sig på´.

Til hossein
Alt ligger på webhotellet, men jeg forstår ikke rigtig dit eksempel
Avatar billede mortenkjeldberg Nybegynder
18. december 2002 - 13:52 #4
OK det kode der er i din .zip fil:

Den første SQL-sætning bliver aldrig kaldt da den bliver overskrevet af den anden inden du kalder execute. Den første SQL-sætning sætter alle "betalingsfelterne" til false som jeg kan se det og herefter vil du sætte dem til true der indgår i en eller anden liste, det tror jeg går fint nok , men problemet er at du ikke får sat dem alle false.
Avatar billede magnus_b Nybegynder
18. december 2002 - 14:04 #5
Jeg er ikke helt klar over præcist hvordan jeg skal gøre, men hvis du kunne give mig SQL-sætningen ville jeg få en god jul. Så håber jeg du bliver glad for dine point ;-)
Avatar billede mortenkjeldberg Nybegynder
18. december 2002 - 14:10 #6
Følgende er cuttet fra den kode der ligger i din .zip-file:

'Der skrives til databasen
strQ = "UPDATE Resultater
SET betalt = False"

'INDSAT af mortenkjeldberg
'SQL sætning eksekveres
dbconnect.execute(strQ)

strQ = "UPDATE Resultater
SET betalt = True
WHERE id IN ( <liste fra formen> )"

'SQL sætning eksekveres
dbconnect.execute(strQ)

Jeg har lagt en extra execute ind mellem de to streng opbygninger, jeg tror uden at have prøvet det at det kan gøre det, men ellers må vi bare prøve noget andet.
Du sletter selvfølgelig bare den kommentar med mit navn det var bare for at du kan få øje på det. :-)

Morten
Avatar billede magnus_b Nybegynder
18. december 2002 - 14:51 #7
Det er netop denne her linie jeg ikke kan finde ud af:
WHERE id IN ( <liste fra formen> )"

Hvad der skal stå her i stedet for "<liste fra formen>", det er sagens kerne.
Avatar billede mortenkjeldberg Nybegynder
18. december 2002 - 15:24 #8
Prøv at skrive rsData eller rsData("id")
Avatar billede mortenkjeldberg Nybegynder
18. december 2002 - 15:24 #9
i stedet for <liste fra formen>
Avatar billede magnus_b Nybegynder
18. december 2002 - 15:44 #10
Det virke ikke rigtig, men nu har jeg fri og vil gå hjem ;-)
Avatar billede mortenkjeldberg Nybegynder
18. december 2002 - 15:52 #11
Jeg arbejder lige lidt på det i aften.
Avatar billede mortenkjeldberg Nybegynder
18. december 2002 - 20:43 #12
Godt så er der en løsning.

I det ASP-script der ikke hedder noget med 2 gør du følgende :

De to initialiseringer af checkboxes laves om til følgende:

<INPUT TYPE="checkbox" NAME="betalt" checked value=<% response.write rsData("ID") %>>
<%Else%>
<INPUT TYPE="checkbox" NAME="betalt" value=<% response.write rsData("ID") %>>

Det der sker her er at der kommer en værdi ind i checkboxen som senere kan overføres til den side, formen åbner når du vælger opdatér.
Nu er der nogle værdier i den liste der er hele humlen.

I "script2" laves det afsnit hvor der før stod bl.a. <liste fra formen> om til :

<%
'Databaseforbindelse
Dim dbconnect
Set dbconnect = Server.CreateObject("ADODB.Connection")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../database/betalingtest.mdb")
dbconnect.Open strDSN
dbconnect.Execute("UPDATE Resultater SET betalt = True WHERE id IN (" & Request.Form("betalt") & ")")
dbconnect.close
Set dbconnect = Nothing
%>

Jeg har haft det til at virke. Dog er der lige et par ting :

Jeg havde ikke skriverettighed på basen, det skal du lige tjekke op på om du har. (Tag og vent og se om det giver fejl først)

Det skulle kunne gøre det. Håber det har reddet din jul :-)
Morten
Avatar billede mortenkjeldberg Nybegynder
20. december 2002 - 09:27 #13
Hallo.
Kan du bruge det til noget.
Avatar billede magnus_b Nybegynder
20. december 2002 - 10:26 #14
Rolig nu, jeg har været sendt væk. Jeg vender tilbage når jeg har rodet lidt med din kode. Du skal nok få dine point, hvis jeg får det til at virke ;-)
Avatar billede mortenkjeldberg Nybegynder
21. december 2002 - 00:01 #15
Det er helt OK. Det er bare fordi der er nogen der har det med at "glemme" de har oprettet et spørgsmål herinde.
God Jul :-)
Avatar billede magnus_b Nybegynder
23. december 2002 - 11:06 #16
Skrive adgangen skyldtes en forkert sti - pinligt ;-)

Jeg får nedenstående fejl, som jeg ikke helt forstår. Udover det er en fejl i linie 20
dbconnect.Execute("UPDATE Resultater SET betalt = True WHERE id IN (" & Request.Form("betalt") & ")")


Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id IN (, , , , , , , , , , )'.

/testsite/opdatering_betaling2.asp, line 20
Avatar billede magnus_b Nybegynder
23. december 2002 - 14:04 #17
Du har jeg fået det til at virke - glædelig jul
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