26. januar 2001 - 15:03Der er
8 kommentarer og 1 løsning
Checkbox, ASP og scripting! HJÆLP!!!
Jeg har et ASP-script, der baserer sig på et ikke kendt (=varierende) antal poster, hvor hele recordsets hentes fra en tabel i en DB.
Indholdet af disse poster skal kunne listes på en side, hvor bruger vælger hvilke der skal indgå i en ny post i samme tabel i samme DB.
Scriptet ser i grove træk ud som følger:
Data hentes fra de poster i DB-tabel der opfylder udvælgelses-kriteriet, hvor bl.a. datoen er en vigtig faktor:
SQL = \"SELECT * from tabel1 WHERE (Dato >= Datediff(\'d\', 0, \'\" & date & \"\')) AND Kriterie1 = (\'1\') AND Kriterie2 = (\'2\')) ORDER BY Dato ASC\" rs.open SQL, Con, 3, 3 Con.execute(SQL)
Og så lister den ellers derudaf...
Response.write \"<td align=left><font size=1 face=Verdana>\" & rs(\"Dato\") & \"</font></td>\" Response.write \"<td align=left><font size=1 face=Verdana>\" & rs(\"Fornavn\") & \" \" & rs(\"Efternavn\") & \"</font></td>\" OSV. OSV. Afslutningsvis skal der indsættes en checkbox til hvert recordset (kan linkes til postens unikke ID).
Problemet er nu - hvordan navngives denne checkbox, og hvordan får man kombineret alle de poster der er markeret i checkbox så disse kan sættes ind i en ny post i samme tabel (i andre felter)??? F.eks. så man ud fra tabellen
ID Dato Navn Points Checkbox 1 14-02-01 Poul Hansen 20 X 2 16-02-01 John Jensen 15 3 19-02-01 Stig Madsen 10 X
kan generere et recordset, hvor der i ét af felterne i DB-tabellen kommer til at stå:
ID Dato Navn Points 4 14-02-01 Poul Hansen-Stig Madsen 30
fordi disse er markeret via checkboxen?
I den forbindelse er følgespørgsmålene: Hvordan får man hentet datofeltet over således at datoen for det nye recordset bliver bestemt af den førstkommende dato blandt de poster, der er med i recordsettet (I dette tilfælde 14-02-01 ud fra Poul Hansen)? Og hvordan kan man lægge point-summen for de to markeringer sammen i den nye post (her 20+10=30)?
Der er gode points at hente - jeg har desværre ikke noget kode-eksempel at føje til, da jeg ikke har den ringeste ide om hvordan det laves.
Hver checkbox du indsætter skal havde et ID. Alle checkboxe skal havde samme ID.
Checkbox_count=0 Do while not DATABATE.EOF <input type=\"checkbox\" ID=\"DitNavn\"> Checkbox_count=Checkbox_count+1
--------
Jeg har lavt et script som kan kaldes fra en knap, scriptet skriv i en messagebox hvilke checkboxe som er valgt. Det gøres med ID_navn(x) eks.vis DitNavn(i)
<SCRIPT LANGUAGE=\"VBScript\"> Function set_checkbox(CB_COUNT) for i=0 to (CB_COUNT-1) if (DitNavn (i).checked = true) then MsgBox \"Checkbox nr \"&i,vbOKOnly end if next End Function </script>
Her er koden til knappen. <p><input type=\"submit\" value=\"Test\" onclick=set_checkbox(<%=Checkbox_count %>)></p>
<%=Checkbox_count&> kunne vel engenligt også være recordset.RecordCount
Håber det kan hjælpe dig lidt på vej. Jeg vil lige kikke vidre på det med databasen…..
Problemmet med scripet er at man ikke kan se variable som er defineret uden for scripet.
Det betyder hvis man benytter et script skal man connecte til databasen igen.
ID Dato Navn Points 4 14-02-01 Poul Hansen-Stig Madsen 30 Skal resultat ligges i den originale database? dor der har du jo et (\"Fornavn\") og (\"Efternavn\") felt i tabellen. Hvordan skal navne så ligges sammen?
---> DIT KODE <% SQL = \"SELECT * from tabel1 WHERE (Dato >= Datediff(\'d\', 0, \'\" & date & \"\')) AND Kriterie1 = (\'1\') AND Kriterie2 = (\'2\')) ORDER BY Dato ASC\" rs.open SQL, Con, 3, 3 Con.execute(SQL) <--- DIT KODE
%> <form method=\"post\" action=\"result.asp\" id=”idform” name=”fornnavn”> <% Do While Not rs.EOF
Jeg har lagt en form omkring tabellen. Der bliver indsat en checkbox ved hver linie og den hedder KAK, du kan kalde den hvad du vil. Ligeledes får den værdi som svare til autonummeret i databasen, ID. Formens navn og id har ikke noget at sige. Formen action er sat til result.asp som er filen som bliver åbnet når man trykke på knappen som er indsat under tabellen.
<% \'nItem Antal checkboxe som er valgt med [x]. nItems = Request.Form(\"KAK\").Count ’ Der skal være valgt mindst 2 checkboxe if (nItems > 1) then strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(database navn) Set myConn = Server.CreateObject(\"ADODB.Connection\") Set rs = Server.CreateObject(\"ADODB.RecordSet\") myConn.Open strDSN
firstFound = false For i = 1 To nItems rs.open \"SELECT * FROM tabel1 WHERE ID=\"&Request.Form(\"KAK\")(i), myConn,3,3 if (firstFound = false) then firstFound = true newName = rs(\"Fornavn\") & \" \" & rs(\"Efternavn \") newDate = rs(\"DatoFelt\") newPoints = rs(\"Points\") else newName = newName & \" - \" & rs(\"Fornavn\") & \" \" & rs(\"Efternavn\") newPoints = newPoints + rs(\"Points\") end if rs.close Next
Det er fabelagtigt! Så enkelt det var, og så svært det så ud...
Du er en haj - og har så ærligt fortjent dine points, eagleeye! Tak for hjælpen
Case is closed!
Synes godt om
Ny brugerNybegynder
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.