webForumDet fria alternativet

Notes i en kalender

Databaser & SQLur Databashanterare & SQL

16 svar · 458 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

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?

Medlem sedan juni 20003 076 inlägg
#2

Du borde ha en användartabell.

Typ:

Users
--------------
Userid | Name

strSql = "Select P.rubrik, P.detalj, U.Name From Plan P " & _
"Inner Join Users U On P.user = U.Id  " & _
"Where P.datum = '" & Date() & "' ;"

Dagens uppgifter visas då, ta bort wheresatsen om du vill visa alla personens uppgifter.

Var det nått sånt du ville ha? :)

Medlem sedan nov. 20017 144 inlägg
#3

Exakt vad jag sökte, tack!
Kan du förklara vad sql-satsen gör. Varför skriver man t.ex. **p.**detalj, **u.**name osv.?

Medlem sedan dec. 200012 464 inlägg
#4

Plan P
Users U

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.

Medlem sedan nov. 20017 144 inlägg
#5

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.

Medlem sedan nov. 20017 144 inlägg
#6

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?

Medlem sedan nov. 20017 144 inlägg
#7

Någon?

Medlem sedan sep. 20001 124 inlägg
#8

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.

Medlem sedan nov. 20017 144 inlägg
#9

lägg in userId-numret som en kolumn

Ä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?

Medlem sedan sep. 20001 124 inlägg
#10

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.

Medlem sedan nov. 20017 144 inlägg
#11
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.

Vad göra?

Medlem sedan nov. 20017 144 inlägg
#12

Hjäälp!

Medlem sedan nov. 20017 144 inlägg
#13

Någon som vet?

Medlem sedan nov. 20017 144 inlägg
#14

Detta problem är fortfarande inte löst.

Medlem sedan nov. 20017 144 inlägg
#15

Inte löst, hjälp!

Medlem sedan juni 20003 076 inlägg
#16

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"

Kanske kommer du lite närmare! :)

Medlem sedan nov. 20017 144 inlägg
#17

Tack, jag skall titta på det senare. Jag har inte löst det än. Men tack ändå!
Återkommer.

136 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)