[ACCESS] Waarde toekennen bij openen form

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een fomulier gebaseerd op een query. Eén veld in de tabel/query heet bezet (boolean) en wordt in het formulier als vinkje weergegeven (wordt later verborgen).
Nu wil ik dat bij het openen van het formulier bezet = true.
De query filtert namelijk alle record waar bezet = true, en zo voorkom ik dat 2 gebruikers tegelijkertijd in 1 record werken.

Nu heb ik dit:

Private Sub Form_Open(Cancel As Integer)
bezet = true
DoCmd.Save
End Sub

Maar als ik uitvoer, krijg ik een melding dat ik geen waarde aan dit object kan toevoegen.
ik kan de code bezet=true bijvoorbeeld wel aan een knop toekennen, maar dan moet dus eerst op een knop worden gedrukt, ik wil juist dat er direct een 'lock' op het record komt.

Suggesties?

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ik moest even denken, maar dit gaat waarschijnlijk over access.
Dit probleem negeren omdat het niet zo erg boeit? Of bij de properties van je form Record locks op 'edited record' zetten? Of bij de opties van Access (onder knop linksboven->options->advanced in 2007) default record locking op "edited record" zetten? :p
offtopic:
vba-code kun je beter tussen [code=vb] en [/code] zetten

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

Verwijderd

Je beschrijft je context niet. Als je met PHP werkt kan je de query uitvoeren bij het laden van de pagina.
Probleem is, wat geberut er als dan de user zijn browser sluit? Of de computer crasht? Locked forever?

Acties:
  • 0 Henk 'm!

  • analog_
  • Registratie: Januari 2004
  • Niet online
Zodra je een GUI maakt in VS wordt er er een afgeleid form object voor je gemaakt. Je kan vanuit je main of where-ever je die oproept ook gebruiken als een object zolang je er maar een reference naar hebt. Je kan dus je constructor van je form aanpassen en hier een variabele meegeven of je maakt public variabelen aan of private met wat set/get properties.

Het ziet eruit als visual basic.net code trouwens. Ah, access dus, dan is dit helaas waarschijnlijk niet meer zo relevant.

[ Voor 15% gewijzigd door analog_ op 23-04-2010 17:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Neem me alsjeblieft niet kwalijk voor mijn onvolledige informatie... Het gaat hier inderdaad om Access.

optie Record locks heeft geen effect.

Acties:
  • 0 Henk 'm!

  • MEN-O
  • Registratie: Oktober 2006
  • Laatst online: 21-09 12:58
Heb min of meer hetzelfde probleem ; het locken van een record lukt gewoon niet. heb het inmiddels opgegeven.
(Met als resultaat toch wel regelmatig een corrupte database omdat 2 mensen toevallig dezelfde data benaderen.)
Ben dus ook wel benieuwd naar een oplossing.

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Verwijderd schreef op vrijdag 23 april 2010 @ 18:33:
optie Record locks heeft geen effect.
Dat lijkt me sterk, of gaat het om een obdc-verbinding ipv een access-database? Hoe heb je dit getest? :?
MEN-O schreef op vrijdag 23 april 2010 @ 18:37:
Heb min of meer hetzelfde probleem ; het locken van een record lukt gewoon niet. heb het inmiddels opgegeven.
Tsja, wat heb je geprobeerd om pessimistic locking te krijgen dan?
(Met als resultaat toch wel regelmatig een corrupte database omdat 2 mensen toevallig dezelfde data benaderen.)
Hoe komt het eigenlijk dat 2 mensen tegelijkertijd hetzelfde record editen, en de versies over elkaar heen opslaan (vanuit het business process dan)? Sowieso leidt dat niet tot een corrupte database als het goed is, hooguit tot het overschrijven van een opgeslagen 'tussenversie'. In de meeste gevallen is geen of optimistic locking goed genoeg. :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het betreft een lijst met relaties die moeten worden gebeld. Tabel is dus al deels gevuld met naam en nummer enzo. Beller opent formulier en krijgt een relatie aangeboden, ziet de gegevens en kan na het gesprek nog wat extra info invoeren.
Op het moment dat één record is geopend, zonder nog bewerkt te zijn, mag een andere beller dat record niet meer te zien krijgen, anders wordt de relatie 2 keer gebeld.

[ Voor 183% gewijzigd door Verwijderd op 23-04-2010 21:47 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
In dat geval lijkt het me het handigst om relaties toe te wijzen aan een gebruiker, zeg per één. Je wilt waarschijnlijk toch al opslaan wie wie belt. Stel je hebt een tabel als TeBellenRelaties(id, relatienaam, telefoonnummer, gebruikersId, tijdToegewezen, tijdAfgehandeld). Dan kun je iets doen als:
SQL:
1
2
3
4
update TeBellenRelaties set beller = gebruikersId, tijdToegewezen = now() 
where id = (select top 1 id from TeBellenRelaties where beller is null) 
and not exists (select * from TeBellenRelaties 
                where beller = gebruikersId and tijdAfgehandeld is null);

(3e en 4e regel zijn optioneel - doe niks als er al iets is toegewezen)

Kan uitgevoerd worden met CurrentDb().Execute in vba, en gebruikersId moet natuurlijk de huidige gebruiker zijn. Eventueel kun je vaststellen met api's wat de huidige gebruikers- en/of computernaam is, om zo tot een gebruikersId te komen. :p

Vervolgens een filter plaatsen op de juiste gebruikersId en tijdAfgehandeld is null. Het is de bedoeling om de zo min mogelijk locks te introduceren. Na deze query is er dan ook geen 'edited record'-lock meer nodig. Het lijkt me handig om een index te hebben op (beller, tijdAfgehandeld). Dit is dus een gecombineerde index op 2 velden, te maken via indexes, waarbij je op de 2e regel het veld 'index name' leeg laat.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten

Pagina: 1