Hej <code>if Request("edit") = "" then Kan du inte använda en array i stället? Utmärkt, då har jag lärt mig ett smidigare sätt att hantera variblerna. Eftersom ingen ville svara fick jag lösa det själv ;)Uppdatera/Skapa ny post?
Nu är jag helt förlorad.
Har testat alla möjliga lösningar och jag bara målar in mig i hörn hela tiden. Blir snart galen.
Jag har en databas med t_Kurser och t_Kurser_Tillfällen. Databasstrukturen är bra.
För varje tillfälle skapas en unik post i t_Tillfällen som i sin tur knyts till id_Kurs.
I administrationssidan väljer man antingen att skapa en kurs eller redigera en kurs från listan.
När en kurs skapas väljer man antal tillfällen från en dropdown och med hjälp av dhtml, hidden/visible, visas input-fält motsvarande antal tillfällen. Varje tillfälle har start/slutdatum och dessa har med hjälp av javascript varsin kalender-popup som "asignar" klickat datum till input-fältet. Varje start/slutdatum-fält måste därför ha unika namn, startDatum1, StartDatum2 osv.
Av denna anledning så har uppdateringssidan följande klumpiga lösning:
<code>
SQL = "SELECT * FROM t_Kurser"
if edit = "" then
RecSet.AddNew
end if
RecSet("Kursnamn") = Request("kursnamn")
RecSet("Beskrivning") = Request("beskrivning")
RecSet.Update
RecSet.Close
SQL2 = "Select * FROM t_Kurser order by kursId desc"
RecSet.Open SQL2
aktuellt_kursId = RecSet("kursId")
RecSet.close
antal_tillfallen = Request("antal_tillfallen")
StartDatum1 = Request("StartDatum1 ")
SlutDatum1 = Request("SlutDatum1")
StartDatum2 = Request("StartDatum2")
SlutDatum2 = Request("SlutDatum2") ' *** osv....
'*** om det ska skapas ny kurs:
if Request("edit") = "" then
select case antal_tillfallen
case 1:
SQL = "INSERT INTO t_Kurser_Tillfallen(kursId, StartDatum, SlutDatum) values('" & aktuellt_kursId & "', '" & StartDatum1 & "', '" & SlutDatum1 & "')"
Conn.execute(SQL)
case 2:
SQL = "INSERT INTO t_Kurser_Tillfallen(kursId, StartDatum, SlutDatum) values('" & aktuellt_kursId & "', '" & StartDatum1 & "', '" & SlutDatum1 & "')"
Conn.execute(SQL)
SQL = "INSERT INTO t_Kurser_Tillfallen(kursId, StartDatum, SlutDatum) values('" & aktuellt_kursId & "', '" & StartDatum2 & "', '" & SlutDatum2 & "')"
Conn.execute(SQL)
case 3 ' *** osv...
</code>
Inte bra, men det fungerar. Problemet blir när jag ska uppdatera en befintlig kurs.
Om jag då väljer en kurs med 2 tillfällen och sedan väljer 5 tillfällen från dropdownlistan, fyller på start/slutdatum för varje tillfälle och skickar iväg 5 antal_tillfallen, så räcker inte min select case-lösning till. Det blir alldeles för komplex. "Update - här" & "insert into - där" "antal_tillfallen - ursprungligt_antal_tillfallen" Ingen aning :)
Kan någon hjälpa, snälla?Sv: Uppdatera/Skapa ny post?
For i = 1 to antal_tillfallen
SQL = "INSERT INTO t_Kurser_Tillfallen(kursId, StartDatum, SlutDatum) values('" & aktuellt_kursId & "', '" & StartDatum& i & "', '" & SlutDatum& i & "')"
Conn.execute(SQL),,128
Next
End if</code>Sv: Uppdatera/Skapa ny post?
StartDatum(1) = Request("StartDatum1 ")
SlutDatum(1) = Request("SlutDatum1")
StartDatum(2) = Request("StartDatum2")
SlutDatum(2) = Request("SlutDatum2")
Då kan du sedan ändra Jespers förslag tillif Request("edit") = "" then
For i = 1 to antal_tillfallen
SQL = "INSERT INTO t_Kurser_Tillfallen(kursId, StartDatum, SlutDatum) values('" & aktuellt_kursId & "', '" & StartDatum(i) & "', '" & SlutDatum(i) & "')"
Conn.execute(SQL),,128
Next
End if
Sv:Uppdatera/Skapa ny post?
<code>
arrStartDatum = Array(StartDatum1, StartDatum2, StartDatum3, StartDatum4, StartDatum5, StartDatum6)
arrSlutDatum = Array(SlutDatum1, SlutDatum2, SlutDatum3, SlutDatum4, SlutDatum5, SlutDatum6)
For i = 0 to (antal_tillfallen-1)
SQL = "INSERT INTO t_Kurser_Tillfallen(kursId, StartDatum, SlutDatum) values('" & aktuellt_kursId & "', '" & arrStartDatum(i) & "', '" & arrSlutDatum(i) & "')"
Conn.execute(SQL)
Next
</code>
Nånting sånt va?
Nu kan jag lägga till en kurs utan en massa onödig kod.
Men huvudproblemet återstår; Hur Ska jag uppdatera <b>befintlig</b> kurs?
Om antal_tillfallen är 4 istället för tidigare inlagt 3, ska ju de 3 posterna i t_Kurser_Tillfallen med samma kursId behållas och en ny ska läggas till.
Om däremot antal_tillfallen är 2 ska den sista posten i t_Kurser_Tillfallen tas bort.
Hur tusan hanterar man det?
Uttrycker jag mig begripligt?Sv:Uppdatera/Skapa ny post?
(Om någon är intresserad)
Kommentera gärna, jag är ingen hävert på detta som ni ser.
<code>
'**** Gör om datumsträngarna till arrays
arrStartDatum = Array(Cdate(Trim(Request("DATEFIELD1")) & " " & Trim(Request("Tid1"))), Cdate(Trim(Request("DATEFIELD2")) & " " & Trim(Request("Tid2"))),_
'osv
'**** Gör om requeststrängar som inte är individuellt defininierade till arrays
arrPlats = Split(request("plats"),",")
arrAntal = Split(request("antal"),",")
arrKostnad = Split(Request("kostnad"),",")
osv
'**** Fixa till De som behöver rätt datatyp
sub SubfixaNollvarde(variabel)
i = 0
for each item in variabel
variabel(i) = Trim(variabel(i))
if variabel(i) = "" then variabel(i) = Cint(0)
i = i+1
Next
end sub
SubfixaNollvarde arrAntal
SubfixaNollvarde arrKostnad
'osv
'**** Uppdatera t_Kurser med info
osv..
'**** Hämta senaste Aktuellt kursId frång t_Kurser
osv..
'**** Lägg in tillfällen i t_Kurser_Tillfallen om det är en ny kurs
if edit = "" then
For i = 0 to (antal_tillfallen-1)
SQL = "INSERT INTO t_Kurser_Tillfallen(kursId, Alt_Beskrivning, StartDatum, SlutDatum,
SQL = SQL & "values('" & aktuellt_kursId & "', '" & arrAlt_beskrivning(i)& "', '" & arrStartDatum (i)& "', '" & arrSlutDatum(i)& "')"
Conn.execute(SQL)
Next
'**** Annars Uppdatera Befintlig kurs
'******* Ta fram Id_Tillfalle
i = 0
for each item in arrId_Tillfalle
if arrId_Tillfalle(i) = Foregaende_Id then exit for
Foregaende_Id = arrId_Tillfalle(i)
i = i+1
Next
'******* Kolla hur många ggr > eller < dropdown-valet är, jämfört med org antal tillfällen
antal_tillfallen_som_har_id = i
valt_antal_tillfallen = antal_tillfallen
atgard = valt_antal_tillfallen - antal_tillfallen_som_har_id
if atgard = 0 then
'******* Uppdatera t_Kurser_Tillfallen med loopade Id_tillfallen
i = 0
for each item in arrId_Tillfalle
if arrId_Tillfalle(i) = Foregaende_Id then exit for
SQL = "UPDATE t_Kurser_Tillfallen "
SQL = SQL & "Set Alt_Beskrivning = '" & arrAlt_beskrivning(i)
SQL = SQL & "', StartDatum = '" & arrStartDatum(i)
SQL = SQL & "', SlutDatum = '" & arrSlutDatum(i)
SQL = SQL & "' Where id_Tillfalle = " & arrId_Tillfalle(i)
Conn.execute(SQL)
'Response.write(SQL & "<br><br>")
Foregaende_Id = arrId_Tillfalle(i)
i = i+1
Next
response.write("Du har nu uppdaterat dina tillfällen")
response.end
elseif atgard < 0 then
'******* Uppdatera Tillfällen med loopade Id_tillfallen och radera med antal -
'Inget bra sätt att ta bort tillfällen, får tänka ut ngt annat
elseif atgard > 0 then
'******* Uppdatera Tillfällen med loopade Id_tillfallen och lägg till med antal +
i = 0
for each item in arrId_Tillfalle
if arrId_Tillfalle(i) = Foregaende_Id then exit for
'response.write(arrId_Tillfalle(i) & "<br>")
SQL = "UPDATE t_Kurser_Tillfallen "
SQL = SQL & "Set Alt_Beskrivning = '" & arrAlt_beskrivning(i)
SQL = SQL & "', StartDatum = '" & arrStartDatum(i)
SQL = SQL & "', SlutDatum = '" & arrSlutDatum(i)
SQL = SQL & "' Where id_Tillfalle = " & arrId_Tillfalle(i)
Conn.execute(SQL)
Foregaende_Id = arrId_Tillfalle(i)
i = i+1
Next
for i = (antal_tillfallen_som_har_id ) to ((antal_tillfallen_som_har_id-1) + atgard)
'response.write("lägg in tillfälle" & i & "<br>")
SQL = "INSERT INTO t_Kurser_Tillfallen(kursId, Alt_Beskrivning, StartDatum, SlutDatum_SQL = SQL & "values('" & aktuellt_kursId & "', '" & arrAlt_beskrivning(i)& "', '" & arrStartDatum(i)& "', '" & arrSlutDatum(i)& "')"
Conn.execute(SQL)
next
</code>