Hejsa..
Jeg bliver nødt til at udskyde det til weekenden, da jeg har en pressende opgave foran mig.. muligvis længere end weekenden, hvis jeg har meget travlt..
Læs venligst hele indlægget igennem, inden du smider dig over koden.. :-)
Jeg vil lige skynde mig at nævne, at jeg ikke har testet koden, og at det bare er en ide.. det kan godt være at der er fejl, hvilket nemt burde kunne rettes med sådan et simpelt eksempel..
Det korte af det lange, med hensyn til dit kalender-projekt, må være at udskrive alle dagene i den pågældende måned, og tilføje "bianca" (plus arb/priv) eller "bjarne" (plus arb/priv) til navnet på textarea'en..
Eksempel (opsætningen/layoutet overlader jeg til dig):
<%
...opret forbindelse til databasen og start loop...
%>
<textarea wrap="physical" rows="5" cols="40" name="bianca_arb_<%=rs("dato")%>"><% Response.Write (rsKalender("bianca_arb")) %> </textarea>
<%
... slut loop...
%>
<input type="submit" name="Submit" value="Opdater">
Hvordan du udskrive dem, er op til dig..
Læg mærke til at jeg IKKE længere bruger denne, da den er overflødig:
<input type="hidden" name="id_no" value="<% = rsKalender("id_no") %>">
Formatet er sådan: NavnPåPersonen_PrivatEllerArbejde_Dato
Eksempel: bjoern_priv_5 (dag 5 i måneden)
I mit eksempel har jeg valgt at oprette 3 skjulte felter, med navnene: dato, maaned, aar
De indeholder det som er navnene.. :-)
Når du skal opdatere dataene, kan du f.eks. gøre sådan her:
<%
Function udregn_antal_dage(maaned,aar)
' Denne funktion returnere antallet af dage i den givne måned-år kombination:
Select Case maaned
Case 1,3,5,7,8,10,12 ' måneder hvor der er 31 dage i
udregn_antal_dage = 31
Case 2
' Måneden "februar" er speciel, da den har skudår engang i mellem :-)
' (man kunne også bruge modulus til udregningen)
' Vi skal derfor teste om d. "29 februar" eksisterer i den pågældende februar-måned:
If IsDate("29-02-" & aar) Then
' d. 29 februar eksisterer, hvilket betyder at der er 29 dage i denne februar-måned
udregn_antal_dage = 29
Else
' d. 29 februar eksisterer IKKE, hvilket betyder at der er 28 dage i denne februar-måned
udregn_antal_dage = 28
End if
Case 4,6,9,11 ' måneder hvor der er 30 dage i
udregn_antal_dage = 30
End Select
End function
Dim dato, maaned, aar
dato = Request.Form("dato")
maaned = Request.Form("maaned")
aar = Request.Form("aar")
Dim antal_dage
antal_dage = udregn_antal_dage(maaned,aar)
Dim sql, i
For i = 1 To antal_dage
sql = "" ' Læg mærke til at følgende SQL-linier starter med et mellemrum (" ")!
sql = sql & " update tblData"
sql = sql & " set bianca_arb = '" & request.Form("bianca_arb_" & i) & "'"
sql = sql & " set bianca_priv = '" & request.Form("bianca_priv_" & i) & "'"
sql = sql & " set bjorn_arb = '" & request.Form("bjoern_arb_" & i) & "'"
sql = sql & " set bjorn_priv = '" & request.Form("bjoern_priv_" & i) & "'"
sql = sql & " where"
sql = sql & " dato = " & dato
sql = sql & " and maaned = " & maaned
sql = sql & " and aar = " & aar
' Så skal SQL sætningen afvikles..
' Da denne sætning er en UPDATE sætning, skal vi ikke have noget tilbage..
' OPRET forbindelse-OBJEKTER til databasen og execute:
Conn.Execute(sql)
' HUSK AT NEDLÆGGE ALLE DINE OBJEKTER!
sql = sql & " "
Next
%>
UPDATE-sætningen bliver afviklet samme antal gange, som der er dage i den pågældende måned..
Det kan godt være at nogen synes at det er en dårligt ide.. så må de bare komme med en bedre ide, hvilket jeg overhovedet ikke har noget imod.
Alternativt kunne man bruge "id_no" i stedet for "dato", og ændre koden lidt (bl.a. FOR-NEXT løkken)..
Jeg håber at det giver dig et indblik i hvordan man kan gøre det.. og måske en ide eller to.. :-)
Med hensyn til denne måde at opdatere på, og database-brug generelt, kan jeg anbefale:
Lektionerne 17 - 22 (begge inkl.) på
http://www.html.dk/tutorials/asp/Disse lektioner omhandler oprettelse af forbindelse til databasen, hentning af data, indsættelse af data, sletning af data og opdatering af data.
Det er et godt sted at starte.