Database met orders

Status
Niet open voor verdere reacties.

Pinokkio89

Gebruiker
Lid geworden
23 okt 2006
Berichten
104
Goedendag,

Momenteel ben ik bezig met een Access database waarin orders gezet kunnen worden.

Het moet mogelijk worden om:
- nieuwe orders toe te voegen
- orders die in het systeem staan weer te geven
- orders te wijzigen

Wat raden jullie aan om dit te realiseren?

1 form maken waarmee alleen nieuwe orders toegevoegd kunnen worden? Zo ja, hoe kan je dan voorkomen dat er geen orders gewijzigd kunnen worden in dit form?

1 form waarin orders ingezien en gewijzigd kunnen worden? Zo ja, hoe kan ik dit zo gemakkelijk mogelijk realiseren?

Als er iemand een voorbeeld database heeft waarin bovenstaande mogelijk is, dan zou ik die graag willen inzien.

Alvast bedankt.
 
Hou het op één formulier voor je orders, dat je op verschillende manieren opent. Je kunt namelijk bij het openen van een formulier aangeven of hij wordt gestart in Gegevensmodus (<Gegevensinvoer> Ja of Nee), of je mag bewerken (<Bewerken toestaan> Ja of Nee) en of je mag toevoegen (<Toevoegen toestaan> Ja of Nee). Deze instellingen kun je meegeven als met de knoppen op je startformulier. Je maakt dus aparte knoppen voor Toevoegen, Bewerken, Weergeven etc. Op basis van de opstartstatus kun je op je formulier dan nog allerlei zaken instellen, zoals het zichtbaar maken van knoppen of niet. In de Leesmodus bijvoorbeeld kun je geen nieuwe records toevoegen, dus de knop <Nieuw Record> maak je dan onzichtbaar. Evenzo kun je in de Gegevensinvoer wel records toevoegen, maar niet bladeren. Dus de bladerknoppen maak je in die modus onzichtbaar. Etc.
 
Ik heb nu een switchboard met drie command buttons:
Add // Edit // Read.

Deze command buttons zijn gelinkt met macro_Add // macro_Edit // macro_Read. Deze macro's openen het gewenste orderform.

Op het orderform heb ik bijvoorbeeld een knopje met "Add order" staan. Deze is nu in alle drie de modes (Add // Edit // Read) zichtbaar.

Hoe kan ik ervoor zorgen dat wanneer macro_Edit en macro_Read worden gedraaid deze knop niet zichtbaar is?

Ik neem aan dat ik de volgende code nodig heb: Me.CommandName.Enabled = False

Alleen waar moet ik deze neerzetten?

Alvast bedankt!
 
Niet in je macro.... Ik raad je eerlijk gezegd af om met macro's te werken, want die zijn veel te beperkt. Het is (uiteindelijk) veel handiger om alles in VBA te maken, zeker omdat je toch een aantal zaken via VBA zult moeten regelen, zoals het aanpassen van knoppen. Dus spring in het diepe, zou ik zeggen!
Wat je moet doen om knoppen te verbergen, is dus VBA code maken die aan de gebeurtenis <Bij Openen> (kan ook <Bij Laden> zijn trouwens, ik denk nu even hardop) de status van het formulier bekijkt (is AllowEdits True of False bijvoorbeeld) en op basis daarvan de status Visible van de knop omzetten. Zoals gezegd: dat kan eigenlijk alleen via VBA. Je kunt trouwens macros heel simpel omzetten naar VBA, zodat je vrij makkelijk alles in VBA kunt doen.
 
Michel,

Nogmaals hartelijk dank voor uw antwoord.

De macro's zijn inmiddels omgezet naar modules. Ook heb ik het switchboard naar de nieuwe modules gelinkt.

Nu wil ik de volgende code toevoegen:

Code:
Private Sub Form_Open(Cancel As Integer)
If...=acAdd Then
Me!AddRecord.Enable = True
Else
Me!AddRecord.Enable = False
End Sub

Alleen vraag ik mij af wat ik op de "..." moet zetten.

Alvast bedankt.
 
Je bent er bijna; één puntje weghalen!

Code:
Private Sub Form_Open(Cancel As Integer)
    If Me.NewRecord Then
        Me.AddRecord.Enabled = True
    Else
        Me.AddRecord.Enabled = False
    End If
End Sub

Al zou ik zelf de check doen op Gegevensinvoer....
Code:
If Me.DataEntry = True Then
 
Hartelijk dank, dit werkt prima.

Dan vraag ik mij alleen nog af waar ik heb beste "Delete record" aan toe kan voegen.

Ik kan hier natuurlijk een aparte button op mijn SwitchBoard voor maken die linkt naar het form met de knop "Delete record", maar hoe kan ik ervoor zorgen dat deze knop niet zichtbaar is bij de overige schermen?

"Add record" heb ik namelijk toe kunnen voegen omdat deze alleen zichtbaar is bij DateEntry = True. Maar wat kan ik voor Delete record gebruiken zodat deze bij de overige formweergaven niet zichtbaar is?
 
Je kunt aangeven of op een formulier een record mag worden verwijderd of niet. Ik kan mij voorstellen dat niet iedereen (als je met meerdere mensen in de db gaat werken) records mag verwijderen, dus zelf zou ik die knop koppelen aan Gebruikersrechten. Maar als je het verwijderen standaard wilt toestaan, zou ik die knop op het formulier dat je opent voor Bewerken zetten.
 
Michel, hartelijk dank.

De personen die orders mogen wijzigen, mogen deze ook verwijderen.

Ik heb er dan ook van gemaakt: If Me.AllowEdits = True And Me.DataEntry = False Then Me.DeleteOrder.Visible = True Else Me.DeleteOrder.Visible = False

Dit werkt naar behoren :).
 
Je ziet hoe makkelijk programmeren eigenlijk is ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan