Vinnaren i pepparkakshustävlingen!
2010-05-19, 16:08
  #1
Medlem
Tjena, behöver lite hjälp med en sak vi har fått en uppgift som ser ut så här:


"Jönköpings konserthus rymmer 1000 personer fördelade på 40 rader med vardera 25 platser.

De 20 första raderna kostar 300 kr/st, medan de 20 sista bara kostar 200 kr/st.

Det finns två ingångar till salongen: vänster och höger.

Bara en konsert körs per kväll.



Gör en databas i Access där platser kan bokas till olika arrangemang. Fundera över vilka data som behöver lagras och skapa de tabeller som behövs. Koppla dem sedan på lämpligt sätt. Skapa de verifieringsuttryck och indatamasker som kan behövas.

Gör de inmatningsformulär som behövs för databasen och ge dem en bra design.

Vilka data behöver man få ut av databasen? Designa de frågor som fyller behovet. Fundera över om någon av dem bör vara av parametertyp.

Till varje arrangemang behöver man trycka biljetter. Designa dessa med de data som behövs och gör en rapport som skapar biljetterna.

Gör ett menyformulär som startar då databasen öppnas.
"

Jag har skapat 3 tabeller (Personer, Rader och Platser). Hur tycker de vetande hur jag ska gå tillväga? Har fastnat lite vid hur man ska göra så att varje plats kan bokas för flera evenemang -.-
Citera
2010-05-19, 16:16
  #2
Medlem
CyrusGNetWorks avatar
Tråd -> Systemutveckling -> Databaser

//Mod
Citera
2010-05-20, 10:50
  #3
Medlem
kh31d4rs avatar
Citat:
Ursprungligen postat av FecutyZ
Jag har skapat 3 tabeller (Personer, Rader och Platser). Hur tycker de vetande hur jag ska gå tillväga? Har fastnat lite vid hur man ska göra så att varje plats kan bokas för flera evenemang -.-

en tabell för evenemangen kanske?
Citera
2010-05-21, 00:40
  #4
Medlem
Pads avatar
Citat:
Ursprungligen postat av FecutyZ
Jag har skapat 3 tabeller (Personer, Rader och Platser). Hur tycker de vetande hur jag ska gå tillväga? Har fastnat lite vid hur man ska göra så att varje plats kan bokas för flera evenemang -.-

Varför en tabell för rader och en för platser?

Jag hade gjort:

[TBL_Platser]
PlatsID (funkar både som primärnyckel och platsnummer)
Rad
Stol
Ingång
Prisklass

[TBL_Event]
EventID
Datum
Namn
Klockslag

[TBL_Bokning]
BokningsID
EventID
PlatsID
Personuppgifter (kanske en egen tabell om man har återkommande kunder, annar bara fält för namn och telefon eller liknande)

Två saker som är värda att tänka på.

1. Stolsnumreringen. Om man numrerar stolarna med rad/stol så kan man inte använda indexet som stolsnummer, men det är kanske enklare för den som skall hitta sin bokade plats. Alternativet är att man har löpnummer på alla stolar och sen bara anger vilken rad varje stol har. Båda finns ute i verkligheten, vet inte hur de gör på konserthuset (och det spelar ju ingen roll heller eftersom det är en skoluppgift). Fråga gärna din lärare om det är spikat hur det skall vara eller om du får designa som du vill.

2. Prissättningen. Jag hade helt struntat i att stoppa in det direkt i databasen, det är enklare att spara direkt i applikationen som variabler. Matcha sen dessa mot en prisklass. Vill man i efterhand byta priset på prisklass A från 300 till 400 så ändrar man på ett ställe så är det klart jämfört med att ändra 500 poster i tabellen.

Och av ren nyfikenhet, var pluggar du och vad är det för kurs du fick uppgiften i?

Lycka till!
Citera
2010-05-21, 07:09
  #5
Medlem
Citat:
Ursprungligen postat av Pad
Varför en tabell för rader och en för platser?

Jag hade gjort:

[TBL_Platser]
PlatsID (funkar både som primärnyckel och platsnummer)
Rad
Stol
Ingång
Prisklass

[TBL_Event]
EventID
Datum
Namn
Klockslag

[TBL_Bokning]
BokningsID
EventID
PlatsID
Personuppgifter (kanske en egen tabell om man har återkommande kunder, annar bara fält för namn och telefon eller liknande)

Två saker som är värda att tänka på.

1. Stolsnumreringen. Om man numrerar stolarna med rad/stol så kan man inte använda indexet som stolsnummer, men det är kanske enklare för den som skall hitta sin bokade plats. Alternativet är att man har löpnummer på alla stolar och sen bara anger vilken rad varje stol har. Båda finns ute i verkligheten, vet inte hur de gör på konserthuset (och det spelar ju ingen roll heller eftersom det är en skoluppgift). Fråga gärna din lärare om det är spikat hur det skall vara eller om du får designa som du vill.

2. Prissättningen. Jag hade helt struntat i att stoppa in det direkt i databasen, det är enklare att spara direkt i applikationen som variabler. Matcha sen dessa mot en prisklass. Vill man i efterhand byta priset på prisklass A från 300 till 400 så ändrar man på ett ställe så är det klart jämfört med att ändra 500 poster i tabellen.

Och av ren nyfikenhet, var pluggar du och vad är det för kurs du fick uppgiften i?

Lycka till!


Det hjälpte en del! Bokningstabellen hade vi inte ens tänkt på, och prisklassfältet var smart också. Ska vi ändra på =) Jag pluggar i jönköping på ED (Gymnasium), och det är databashantering
Citera
2010-05-21, 09:33
  #6
Medlem
Pads avatar
Citat:
Ursprungligen postat av FecutyZ
Det hjälpte en del! Bokningstabellen hade vi inte ens tänkt på, och prisklassfältet var smart också. Ska vi ändra på =) Jag pluggar i jönköping på ED (Gymnasium), och det är databashantering

Se där, min gamla gymnasieskola...

Sen är det givetvis en hel del saker du måste tänka på, hur förhindrar du dubbelbokningar exempelvis? Jag ville mest sparka igång dig, du kommer att få lösa en hel del problem längs vägen också.
Citera
2010-05-21, 11:05
  #7
Medlem
Pads avatar
Ett alternativt sätt att hålla reda på priserna är att helt enkelt bygga en tabell där man matchar prisklasser med biljettpriser. Det är ett rätt vanligt trick, alltså att ha en "lös" tabell som bara håller reda på olika variabler åt dig.
Citera
2010-05-21, 16:45
  #8
Medlem
Citat:
Ursprungligen postat av Pad
Se där, min gamla gymnasieskola...

Sen är det givetvis en hel del saker du måste tänka på, hur förhindrar du dubbelbokningar exempelvis? Jag ville mest sparka igång dig, du kommer att få lösa en hel del problem längs vägen också.


haha häftigt! Vi har funderat på att lösa bokningssystemet som på SF, hade vart lite coolt dock lite segt att lägga in 1000 knappar kopplade till varje plats haha
Citera
2010-05-21, 20:25
  #9
Medlem
Pads avatar
Citat:
Ursprungligen postat av FecutyZ
haha häftigt! Vi har funderat på att lösa bokningssystemet som på SF, hade vart lite coolt dock lite segt att lägga in 1000 knappar kopplade till varje plats haha

Om ni väljer att bygga ett webbgränssnitt ovanpå databasen så är det ju en smal sak att fixa knapparna utan att behöva bygga 1000 stycken.

Men lycka till.

Och just det ja, innan ni börjar på allvar att bygga tabeller, fundera ORDENTLIGT på vilken data som ni kan tänkas behöva i olika sammanhang. Hur skall biljetterna se ut? Finns det något där som borde stoppas in i någon tabell utan att man reflekterar över det initialt? Bekräftelser? Bokningsgränssnitt? Framtida önskemål om funktionalitet? Skalbarhet? Avbokningar? Smidigt att ändra priser? Allt sånt måste ni tänka på.

Ert mål är ju att få med alla data för full funktionalitet i databasen, men inte någon onödig information. För att lyckas med det så måste ni noga tänka igenom kravspecen och exakt hur ni vill att allt skall funka. Visst går det lägga till fält och relationer i efterhand, men man sparar mycket tid på att ha allt klart från början. Nästa tips är att när ni är klara med tabellstrukturen, ta en skärmdump på er relationsvy och tejpa upp bredvid skärmen, det kommer ni spara mycket tid på.
Citera
2010-05-25, 18:41
  #10
Medlem
Har kommit till ett sjukt klimax! Ingen aning om hur jag ska göra. Har valt en seg väg, genom att ha 1000 knappar i access kopplat till varje plats (Vi fick inte bygga webgränssnitt). Och i Form_Load vill jag ha en kontroll där alla platser som är bokade blir invisible.
Men jag har för mycket kod i FormLoad, står "Procedure too large", hur kan jag fixa detta?

Koden:
Kod:
If (DLookup("Bokad", "Platser", "PlatsID = 1")) = True Then
Box0.Visible = False
Else
Box0.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 26")) = True Then
Box2.Visible = False
Else
Box2.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 51")) = True Then
Box3.Visible = False
Else
Box3.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 76")) = True Then
Box4.Visible = False
Else
Box4.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 101")) = True Then
Box5.Visible = False
Else
Box5.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 126")) = True Then
Box6.Visible = False
Else
Box6.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 151")) = True Then
Box7.Visible = False
Else
Box7.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 176")) = True Then
Box8.Visible = False
Else
Box8.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 201")) = True Then
Box9.Visible = False
Else
Box9.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 226")) = True Then
Box10.Visible = False
Else
Box10.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 251")) = True Then
Box11.Visible = False
Else
Box11.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 276")) = True Then
Box12.Visible = False
Else
Box12.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 301")) = True Then
Box13.Visible = False
Else
Box13.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 326")) = True Then
Box14.Visible = False
Else
Box14.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 351")) = True Then
Box15.Visible = False
Else
Box15.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 376")) = True Then
Box16.Visible = False
Else
Box16.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 401")) = True Then
Box17.Visible = False
Else
Box17.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 426")) = True Then
Box18.Visible = False
Else
Box18.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 451")) = True Then
Box19.Visible = False
Else
Box19.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 476")) = True Then
Box20.Visible = False
Else
Box20.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 501")) = True Then
Box21.Visible = False
Else
Box21.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 526")) = True Then
Box22.Visible = False
Else
Box22.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 551")) = True Then
Box23.Visible = False
Else
Box23.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 576")) = True Then
Box24.Visible = False
Else
Box24.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 601")) = True Then
Box25.Visible = False
Else
Box25.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 626")) = True Then
Box26.Visible = False
Else
Box26.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 651")) = True Then
Box27.Visible = False
Else
Box27.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 676")) = True Then
Box28.Visible = False
Else
Box28.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 701")) = True Then
Box29.Visible = False
Else
Box29.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 726")) = True Then
Box30.Visible = False
Else
Box30.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 751")) = True Then
Box31.Visible = False
Else
Box31.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 776")) = True Then
Box32.Visible = False
Else
Box32.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 801")) = True Then
Box33.Visible = False
Else
Box33.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 826")) = True Then
Box34.Visible = False
Else
Box34.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 851")) = True Then
Box35.Visible = False
Else
Box35.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 876")) = True Then
Box36.Visible = False
Else
Box36.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 901")) = True Then
Box37.Visible = False
Else
Box37.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 926")) = True Then
Box38.Visible = False
Else
Box38.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 951")) = True Then
Box39.Visible = False
Else
Box39.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 976")) = True Then
Box42.Visible = False
Else
Box42.Visible = True
End If

OSV....
End If
Citera
2010-05-29, 00:36
  #11
Medlem
Pads avatar
Citat:
Ursprungligen postat av FecutyZ
Har kommit till ett sjukt klimax! Ingen aning om hur jag ska göra. Har valt en seg väg, genom att ha 1000 knappar i access kopplat till varje plats (Vi fick inte bygga webgränssnitt). Och i Form_Load vill jag ha en kontroll där alla platser som är bokade blir invisible.
Men jag har för mycket kod i FormLoad, står "Procedure too large", hur kan jag fixa detta?

Koden:
Kod:
If (DLookup("Bokad", "Platser", "PlatsID = 1")) = True Then
Box0.Visible = False
Else
Box0.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 26")) = True Then
Box2.Visible = False
Else
Box2.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 51")) = True Then
Box3.Visible = False
Else
Box3.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 76")) = True Then
Box4.Visible = False
Else
Box4.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 101")) = True Then
Box5.Visible = False
Else
Box5.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 126")) = True Then
Box6.Visible = False
Else
Box6.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 151")) = True Then
Box7.Visible = False
Else
Box7.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 176")) = True Then
Box8.Visible = False
Else
Box8.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 201")) = True Then
Box9.Visible = False
Else
Box9.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 226")) = True Then
Box10.Visible = False
Else
Box10.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 251")) = True Then
Box11.Visible = False
Else
Box11.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 276")) = True Then
Box12.Visible = False
Else
Box12.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 301")) = True Then
Box13.Visible = False
Else
Box13.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 326")) = True Then
Box14.Visible = False
Else
Box14.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 351")) = True Then
Box15.Visible = False
Else
Box15.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 376")) = True Then
Box16.Visible = False
Else
Box16.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 401")) = True Then
Box17.Visible = False
Else
Box17.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 426")) = True Then
Box18.Visible = False
Else
Box18.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 451")) = True Then
Box19.Visible = False
Else
Box19.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 476")) = True Then
Box20.Visible = False
Else
Box20.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 501")) = True Then
Box21.Visible = False
Else
Box21.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 526")) = True Then
Box22.Visible = False
Else
Box22.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 551")) = True Then
Box23.Visible = False
Else
Box23.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 576")) = True Then
Box24.Visible = False
Else
Box24.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 601")) = True Then
Box25.Visible = False
Else
Box25.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 626")) = True Then
Box26.Visible = False
Else
Box26.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 651")) = True Then
Box27.Visible = False
Else
Box27.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 676")) = True Then
Box28.Visible = False
Else
Box28.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 701")) = True Then
Box29.Visible = False
Else
Box29.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 726")) = True Then
Box30.Visible = False
Else
Box30.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 751")) = True Then
Box31.Visible = False
Else
Box31.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 776")) = True Then
Box32.Visible = False
Else
Box32.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 801")) = True Then
Box33.Visible = False
Else
Box33.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 826")) = True Then
Box34.Visible = False
Else
Box34.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 851")) = True Then
Box35.Visible = False
Else
Box35.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 876")) = True Then
Box36.Visible = False
Else
Box36.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 901")) = True Then
Box37.Visible = False
Else
Box37.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 926")) = True Then
Box38.Visible = False
Else
Box38.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 951")) = True Then
Box39.Visible = False
Else
Box39.Visible = True
End If

If (DLookup("Bokad", "Platser", "PlatsID = 976")) = True Then
Box42.Visible = False
Else
Box42.Visible = True
End If

OSV....
End If

Oj, nu är jag ute på lite djupt vatten då jag i princip aldrig gör någon kodning inuti access, men det borde väl gå att snickra ihop en vba-snutt som puttar ut alla dina knappar från en loop? Vet inte riktigt hur man skall skriva för att deklarera upp dem med finna kontrollernamn och så, men det känns ändå som rätt väg att gå?

Typ så här

Kod:
SUB Knappar()
For RAD = 1 TO 25
    For STOL=1 TO 40

        If (DLookup("Bokad", "Platser", "PlatsID = (rad-1)*40+STOL)) = True Then
            [dölj knapp eller ersätt med dummybild]
        Else
            [visa knapp, räkna ut koordinater med hjälp av rad & stol]
        End If
    Next
Next
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback