Avatar billede susanne_larsen Nybegynder
13. april 2002 - 14:14 Der er 26 kommentarer og
1 løsning

Hvordan forhindres dobbeltbooking

Har oprettet en formular (frmTest_DatoUge_beregning) hvor bruger booker en hal i et bestemt tidsrum.

Hvordan sørger jeg for at man ikke kan indtaste et tidsrum der allerede er optaget?

tblTraeningstider indeholder bl.a. flg

TraeningsID
HalSalRef (P-nøgle fra tblHal)
HoldNavnRef (P-nøgle fra tblHold)
StartDato
SlutDato
StartKl
SlutKl

Går ud fra der skal indsættes kode i BeforeUpdate, men hvordan skriver jeg den ??

Forestiller mig at bruger får en besked hvis hallen er optaget - f.eks. "Hallen er ikke ledig i tidsrummet x -x"

Avatar billede terry Ekspert
13. april 2002 - 14:20 #1
hi Sussane>Not have a day off today?

You can send the dB to me terry@santhell.dk and I will make some suggestions :o)
Avatar billede terry Ekspert
13. april 2002 - 14:22 #2
If you are using primary keys etc. then you should NOT be allowed to create duplicates, Access will report an error. But I cant remember if you were!
Avatar billede terry Ekspert
13. april 2002 - 14:23 #3
Actually what I said isnt quite right! You WILL need to have some code which checks if there is already a period booked within the new period!
Avatar billede susanne_larsen Nybegynder
13. april 2002 - 14:43 #4
fridag ? hvad er det - lol

Det kan f.eks. godt lade sig gøre at oprette flg. uden brok fra Access

Id 1
hal A
startdato 01-04-02
slutdato 01-04-02
startkl 18
slutkl 22

id 2
hal A
startdato 01-04-02
slutdato 01-04-02
startkl 19
slutkl 20

har på et eller andet tidspunkt været inde i samme problem, men kan selvfølgelig ikke huske hvordan jeg løste det - typisk

Så siden du tilbyder at se på database vil jeg tage imod dit tilbud, og så gå i krig med lidt VBA i Word :-)
Avatar billede terry Ekspert
13. april 2002 - 14:45 #5
OK:o)
Avatar billede terry Ekspert
13. april 2002 - 14:47 #6
P:S >I am busy with something else at the moment, but will look at it as soon as I find a spare moment :o)
Avatar billede terry Ekspert
14. april 2002 - 14:02 #7
susanne>Have you received my mail?
Avatar billede susanne_larsen Nybegynder
14. april 2002 - 18:17 #8
terry> jeps er lige kommet retur fra et monster møde.
er lige ved at se nærmere på din kode
Avatar billede fynbohans Nybegynder
14. april 2002 - 19:12 #9
Har ikke kunnet finde noget om bitoperationer i VBA. Måske kan terry eller
andre fortælle mig om jeg har overset noget.
Med bitvektorer er dette problem simpelt. Eftersom vi ikke kan bruge 8-bytes heltal i VBA må vi bruge 2 lange heltal et til minutterne 0-29 og et til 30-59.
Med operatoren AND er det nu simpelt at finde ud af om et bestemt minut er optaget.
Hvis Bit-funktioner ikke findes i VBA må vi lave dem selv. F.eks. BIT SET:

Dim Vektor as Long
Dim BitNr as Byte
Dim Test as Long

Function BitSet(Vektor as Long,BitNr as Byte) as Long
       
        IF BitNr >= 0 AND BitNr < 32 THEN
            Test = Vektor AND 2^BitNr
            IF Test = 0 THEN
              BitSet = Vektor + 2^BitNr
            ELSE
              BitSet = Vektor
            END IF
        END IF

END FUNTION

Eftersom en booking godt kan strække sig over flere timer, f.eks.14:30-15:30, må
minutvektorerne gemmes i en tabel for sig med fælles Id-bookingnr.
Avatar billede susanne_larsen Nybegynder
14. april 2002 - 19:20 #10
>fynbohans - ok nu er min kæde hoppet fuldstændig af ;o) bitoperationer ??

mja ved godt at bit, byte osv eksisterer - men ovenstående er lige en tak for langhåret - lol

kan problemet ikke løses med noget SQL blandet med lidt VBA, eller??
Avatar billede susanne_larsen Nybegynder
14. april 2002 - 19:21 #11
måke har jeg sat mit spørgsmål lige lovligt lavt på skalaen :-)
Avatar billede terry Ekspert
14. april 2002 - 19:39 #12
we can keep to the DCount method just need to make sure we get the intervals correct. We'll get there :o)
Avatar billede susanne_larsen Nybegynder
14. april 2002 - 19:56 #13
>terry sounds GREAT
Avatar billede terry Ekspert
15. april 2002 - 08:10 #14
you should have a new dB now Susanne! My fingers are crossed :o)
Avatar billede susanne_larsen Nybegynder
15. april 2002 - 10:31 #15
Har nu endelig 2 sekunders fred - I hope

er spændt på at se hvad du er nået frem til
Avatar billede terry Ekspert
15. april 2002 - 12:57 #16
hi susanne>If you want to get in touch with me then you can use dktebrsa@europe.lego.com (work)
Avatar billede susanne_larsen Nybegynder
15. april 2002 - 18:27 #17
terry this project just keeps getting bigger :-)
Avatar billede susanne_larsen Nybegynder
16. april 2002 - 13:42 #18
Hi terry - problemerne vokser. Har set på din implementering. Til min store gru kom jeg i tanke om EN MEGET væsentlig detalje som jeg ikke havde undersøgt :-(

Når der oprettes en booking fx

ID 11
Hal A
Hold B
Start 01-04-02
Slut 29-04-02
Periode 18-22

Betyder det IKKE at der trænes hver dag i denne periode. Det ville være for let. Der trænes i ovenstående eksempel KUN hver mandag. Dette gælder for alle bookinger. Der trænes kun 1 dag indefor den registrerede periode.

Dette er noget skod (og jeg har spildt din tid, hvilket jeg er ked af) - de værdier der skal undersøges må være ID og ugenr fra tblTraeningUdrullet sammenholdt med Start og sluttidspunkt i tblTraening.

Så hvad pokker gør jeg nu - er der nogen gode ideer ???
Avatar billede terry Ekspert
16. april 2002 - 13:51 #19
:o) I had actually thought of thatmyslef, but I think in a previous mail you had said that training was ALWAYS monday, so I assumed that all teams trained on Monday!
Back to the drawing board Susanne :o(

I would think and AND could be added to the select to include the day of the week or is it possible that a team can also train other days?
Avatar billede susanne_larsen Nybegynder
16. april 2002 - 14:59 #20
>terry
tja jeg havde fået besked på at al træning foregik om mandagen - så det troede jeg så på, lige indtil jeg fik tanken "Det kan sgi ikke passe, det må jeg hellere undersøge lidt nærmere" - dum ide - lol

ja et hold kan godt træne andre dage, men så forestiller jeg mig at der skal en ny indberetning til. Under alle omstændigheder når der indberettes vil start- og slutdato ALTID være på samme ugedag. - dvs indenfor den pgl booking trænes ex altid hver torsdag mellem kl 16-18, og ikke på andre ugedage

Og da jeg har et autonr felt som nøgle i tblTraening betyder det ikke noget. HalSalRef er fremmed-nøgle

Men jeg mener det er nødvendigt at jeg forespørger på tblTraeningUdrullet da alle bookinger rulles ud med ID og Ugenr derover vha din gode ide med at bruge kode på AfterUpdate.

Man kan forestille sig at en hold normalt træner som flg

ID 1
Hal A
Hold B
Start 01-04-02
Slut 29-04-02
Periode 18-22

men så bliver træningen aflyst den 08-04, og er dermed ledig så andre kan bruge tiden

det er godt nok noget skidt det sidste - kan godt se om tiden er optaget/ledig i frmTraening men hvordan pokker får jeg den kode på plads...........

skylder dig snart 20000 points

hilsner desperately seeking susie
Avatar billede susanne_larsen Nybegynder
16. april 2002 - 15:00 #21
ups glemet:
i det hele taget er det muligt med træning alle ugens dage
Avatar billede fynbohans Nybegynder
16. april 2002 - 15:37 #22
Kender ikke strukturen af din database, men uanset hvilken teknik, du
bruger, tror jeg alt ville være nemmere og mere overskueligt, hvis
alle oplysninger om tid var samlet i en tabel for sig.
Faktisk har du slet ikke brug for andre oplysninger for at finde ud af
om hallen er optaget og andre oplysninger, f.eks.hvem en bruger evt. er
kan altid findes på anden vis.
Avatar billede susanne_larsen Nybegynder
16. april 2002 - 15:52 #23
>fynbohans kan godt være du har ret.
Har på et tidligere tidspunkt opbygget databasen så alle tidspunkter blev registreret i en og samme tabel, men det gav en hulen masse primærnøgler i tabellen og var svært at styre.

Men måske skulle jeg overveje at prøve den metode igen-mhhh grubler (ender med jeg bliver gråhåret før min tid - lol)
Avatar billede terry Ekspert
16. april 2002 - 15:53 #24
Off home now, willl take a look and make some suggestions later :o)
20,000 is that enough? (just joking :o))
Avatar billede susanne_larsen Nybegynder
16. april 2002 - 16:02 #25
>terry

nope - more like 100000

var vildt glad da jeg troede sagen var ping, da det er en dB jeg har knoklet med i lang tid. Alene normaliseringen har givet mig rynker - lol - da der er så mange ting der skal tages hensyn til
Avatar billede susanne_larsen Nybegynder
23. april 2002 - 23:32 #26
>terry

your the best - tanx for taking the time solving my problems :)
Avatar billede terry Ekspert
24. april 2002 - 08:12 #27
your welcome :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester