18. december 2002 - 12:44Der 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.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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
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.
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 ;-)
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. :-)
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
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 ;-)
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 (, , , , , , , , , , )'.
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.