Wij hebben een script geschreven dat statistieken kan bijhouden van verschillende nieuwsitems per dag. Dat betekent dat we een aparte tabel hebben nieuws_statistieken.
Deze heeft een veld ID, Datum, Views, Clicks, NieuwsID. Nu heb ik een constraint tussen ID, en Datum.
Daarbij hebben we een functie geschreven die er alsvolgt uitziet.
Updaten voor view
function UpdateView(AgendaItemID, ComponentNaam, ComponentTitel, PresentatieID)
On error resume next
ExecuteQuery "INSERT INTO TBL_AgendaStatistieken (AgendaItemID, Datum, Views, Clicks, ComponentNaam, ComponentTitel, PresentatieID) VALUES (" & AgendaItemID & ",CONVERT(datetime, CONVERT(char(10), GETDATE(), 120)),0,0,'"& ComponentNaam & "',' " & replace(ComponentTitel,"'","''") & "',0" & PresentatieID & ")"
ExecuteQuery "UPDATE TBL_AgendaStatistieken SET Views=Views+1, ComponentNaam = '"& ComponentNaam&"', ComponentTitel = '"& replace(ComponentTitel,"'","''")&"', PresentatieID =0 " & PresentatieID & " Where AgendaItemID=0" & AgendaItemID & " AND Datum= CONVERT(datetime, CONVERT(char(10), GETDATE(), 120))"
on error goto 0
end function
Execute Query is een functie die connectie maakt met de database en de Query uitvoert en daarna de connectie weer netjes sluit. De functie updateview wordt op zijn beurt weer aangeroepen door de pagina waar de nieuwsitems worden geladen. Dus per te laden nieuws item ga ik een view updaten of inserten. Mocht er al een id met datum bestaan dan wordt er geupdate (on error resume next) en niet geinsert.
Alleen na verloop van tijd worden de pagina uitermate traag. Is er misschien een diepe instelling in de db die dit kan verhelpen, of is dit een code probleem, en hoe deze op te lossen?
Deze heeft een veld ID, Datum, Views, Clicks, NieuwsID. Nu heb ik een constraint tussen ID, en Datum.
Daarbij hebben we een functie geschreven die er alsvolgt uitziet.
Updaten voor view
function UpdateView(AgendaItemID, ComponentNaam, ComponentTitel, PresentatieID)
On error resume next
ExecuteQuery "INSERT INTO TBL_AgendaStatistieken (AgendaItemID, Datum, Views, Clicks, ComponentNaam, ComponentTitel, PresentatieID) VALUES (" & AgendaItemID & ",CONVERT(datetime, CONVERT(char(10), GETDATE(), 120)),0,0,'"& ComponentNaam & "',' " & replace(ComponentTitel,"'","''") & "',0" & PresentatieID & ")"
ExecuteQuery "UPDATE TBL_AgendaStatistieken SET Views=Views+1, ComponentNaam = '"& ComponentNaam&"', ComponentTitel = '"& replace(ComponentTitel,"'","''")&"', PresentatieID =0 " & PresentatieID & " Where AgendaItemID=0" & AgendaItemID & " AND Datum= CONVERT(datetime, CONVERT(char(10), GETDATE(), 120))"
on error goto 0
end function
Execute Query is een functie die connectie maakt met de database en de Query uitvoert en daarna de connectie weer netjes sluit. De functie updateview wordt op zijn beurt weer aangeroepen door de pagina waar de nieuwsitems worden geladen. Dus per te laden nieuws item ga ik een view updaten of inserten. Mocht er al een id met datum bestaan dan wordt er geupdate (on error resume next) en niet geinsert.
Alleen na verloop van tijd worden de pagina uitermate traag. Is er misschien een diepe instelling in de db die dit kan verhelpen, of is dit een code probleem, en hoe deze op te lossen?