Jag undrar hur jag skall skapa en select-sats till min kalender som jag har tänkt att lägga till en "attgörakolumn" som skall vara kopplad till user och datum.
Databasen ser ut som följer (Access).
Tabell: Plan
Kolumner:
| id | user | datum | frantid | tilltid | rubrik | detalj | privat |
Alltså, varje user skall kunna klicka på en "attgörafönster" och få upp dagens aktiviteter(inte relaterat till kalenderns händelser).
Skall jag göra en relaterad tabell eller hur gör man detta?
Innebär att P och U skall användas istället för users och plan. Dels blir det kortare att och dels blir det ingen tvetydighet om i vilken tabell en kolumn finns.
Tack!
Men....I vilken tabell läggs aktiviteterna in?
Jag ser att på sql-satsen att det inte riktigt stämmer.
Jag vill ha en helt egen tabell med händelser kopplade till en viss user och en viss dag.
Dessa händelser har ingenting med kalenderns aktiviteter att göra, händelserna skall bara vara som ett slags "antecknignsblock" som man kan skriva in "attgörasaker" på under den specifika dagen.
Den övre frågan kvarstår, har även en till grej.
Som ni ser så ser min tabell(plan) ut som följer:
| id | user | datum | frantid | tilltid | rubrik | detalj | privat |
Och alla nya händelser läggs till i tabellen.
När en viss person är i sin kalender så ser sqlsatsen ut så här:
SQL= "SELECT frantid,tilltid,id,rubrik,detalj,user,privat FROM plan WHERE datum=#"& datum &"# and frantid=#"& i &":"& x &"# and user='"& user &"' and (privat=false" & _
" or user = '" & user & "') order by tilltid desc"
Skulle det vara effektivara på ngt sätt att ha en separat tabell med användare?
Och hur länkar man användare till specifik aktivitet i kalendern?
Om du bara ska länka en enda användare till varje kalenderhändelse så är det skitenkelt: lägg in userId-numret som en kolumn. Ska flera användare kunna dela på samma händelse så krävs en mellantabell med två ID-värden: användare och händelse. Du kan på det sättet säga att flera olika användare äger samma händelse.
Är det bättre än att skippa användarlistan?
Nu så lägger jag in "löpande" rakt av utan id, så att det blir ungefär så här:
01 | Olle | 2002-11-21 | 13:00 | 16:00 | Dans | Dans på logen |
02 | Åke | 2002-11-26 | 17:00 | 19:00 | Möte | Möte på Kontoret |
03 | Ulla | 2002-08-28 | 11:00 | 12:00 | Dans | Fika med Olle |
04 | Olle | 2002-12-21 | 13:00 | 16:00 | Dans | Dans på logen |
Och när jag plockar fram Olles poster så kör jag ovan nämnd sql(mitt förra inlägg).
Jag använder inte userid:t i en annan tabell. Vad är effektivast, smartast, lättast och trevligast?
Smidigast är att ha separata tabeller för användare och kalender, och köra med ett unikt ID-nummer för att identifiera vilken kalenderpryl som tillhör vem. Dessutom är det snabbare att söka på siffror än text.
if not allPost<>"" then
sql = "Select P.rubrik, P.detalj, P.id, P.privat, U.uid, "
sql = sql & " FORMAT$(P.datum, 'yyyy-mm-dd') as datum1,"
sql = sql & " FORMAT$(P.frantid, 'hh:mm') as ftid,"
sql = sql & " FORMAT$(P.tilltid, 'hh:mm') as ttid"
sql = sql & " From Plan P Inner Join users U On P.pkuserid = U.pkuserid "
sql = sql & " Where P.datum like '" & Left(dDate,7) & "%' "
sql = sql & " order by frantid asc"
else'om ingen specifik användare
sql = "Select P.rubrik, P.detalj, P.id, P.privat, U.uid, "
sql = sql & " FORMAT$(P.datum, 'yyyy-mm-dd') as datum1,"
sql = sql & " FORMAT$(P.frantid, 'hh:mm') as ftid,"
sql = sql & " FORMAT$(P.tilltid, 'hh:mm') as ttid"
sql = sql & " From Plan P Inner Join users U On P.pkuserid = U.pkuserid "
sql = sql & " Where P.datum like '" & Left(dDate,7) & "%' "
sql = sql & " and (P.privat=false or uid = '" & user & "') order by frantid asc"
end if
Så här vill jag att det skall vara:
Den första sql:en skall hämta alla "personliga inlägg" i kalendern den andra skall hämta allas inlägg som inte är markerade med "trivat=true".
Så här är det nu:
Den första visar alla inägg
Den andra visar alla inlägg som inte är privata.
Om du inte redan löst det:
Jag vet inte riktigt hur du hämtar upp userid, förmodligen så loggar man in och så sparas id´t i en session, eller?
I så fall, första sqlén måste ha userid´t med i where-satsen:
sql = "Select P.rubrik, P.detalj, P.id, P.privat, U.uid, "
sql = sql & " FORMAT$(P.datum, 'yyyy-mm-dd') as datum1,"
sql = sql & " FORMAT$(P.frantid, 'hh:mm') as ftid,"
sql = sql & " FORMAT$(P.tilltid, 'hh:mm') as ttid"
sql = sql & " From Plan P Inner Join users U On P.pkuserid = U.pkuserid "
sql = sql & " Where U.pkuserid = " & Session("Userid") & " And P.datum like '" & Left(dDate,7) & "%' "
sql = sql & " order by frantid asc"
andra sqlén:
sql = "Select P.rubrik, P.detalj, P.id, P.privat, U.uid, "
sql = sql & " FORMAT$(P.datum, 'yyyy-mm-dd') as datum1,"
sql = sql & " FORMAT$(P.frantid, 'hh:mm') as ftid,"
sql = sql & " FORMAT$(P.tilltid, 'hh:mm') as ttid"
sql = sql & " From Plan P Inner Join users U On P.pkuserid = U.pkuserid "
sql = sql & " Where P.datum like '" & Left(dDate,7) & "%' "
sql = sql & " and P.privat=false order by frantid asc"