[access] form NIET o.b.v. van tabel

Pagina: 1
Acties:

  • Stefke
  • Registratie: December 2000
  • Laatst online: 19-05 11:18
Ik ben al een tijd bezig met het maken van kleine applicaties in Access, en eigenlijk uit gemak - en omdat het aantal gebruikers beperkt is - maak ik altijd nog formulieren rechtstreeks op basis van een tabel/query.

M.a.w., als een gebruiker een formulier opent heeft ie daarmee ook gelijk de tabel/record in gebruik, waardoor deze gesloten is voor andere gebruikers. Op zich niet zo'n probleem, behalve als de belasting van/door - of het aantal - gebruikers groter wordt, om diverse redenen.

Nu is het dus netter om de formulieren en velden los te koppelen van de tabel en met VBA de gegevens te beheren, maar ik heb me eigenlijk nooit zo verdiept hoe dat nou het beste kan.

Een mogelijkheid is om VBA alle items (eventueel alleen gegevensvelden) na te laten lopen en de gegevens in de tabel weg te schrijven, maar hoe los je dat nou het beste op met betrekking tot het aanmaken van een nieuwe record, het wijzigen van een bestaande record etc.
Heb al eens zoiets gemaakt om de kleuren van forms in te stellen, daarbij loopt VBA alle items op een form na om de kleur te wijzigen, maar met name op wat langzamere systemen is dit nogal belastend.

Ik heb dan ook het idee dat het vrij belastend is als Access voor iedere bewerking alle velden/items op een formulier moet nalopen om eventuele gegevens weg te schrijven...en hoe bepaal je eigenlijk of gegevens al dan niet gewijzigd zijn en weggeschreven moeten worden?

Hoe doen de betere programmeurs dit nou? Wat is de beste manier?

(Ik weet wel manieren om dit in VBA te maken, maar het gaat mij om de meeste efficiente of gebruikelijke methode, dus niet de programmeercode, anders ga ik dalijk een hoop werk zitten doen terwijl ik verkeerd bezig ben)


edit: ik werk overigens wel met knoppen "nieuw" "wijzig" "verwijder" "opslaan", maar daarmee zet ik meer het formulier al dan niet op slot. Een beetje nepperij is dat

[ Voor 5% gewijzigd door Stefke op 19-07-2004 16:50 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

stefijn schreef op 19 juli 2004 @ 16:47:
Hoe doen de betere programmeurs dit nou? Wat is de beste manier?
De betere programmeurs halen hun neus op bij Access... :/

Ik denk dat je het beste gewoon je velden kan aanmaken en dan de waarden in die velden doorgeven in een simpele query. Je zal ze dus, net als bij je kleuren, één voor één af moeten gaan.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Gemak dient de mens. Met Access kan je snel iets maken als je niet te veel van wat voorgeschoteld wordt wil afwijken.
Je kan de data delen met andere gebruikers door de database NIET exclusive te maken. Zie de diverse optie-schermen. Je kan dan met z'n 2'en aan hetzelfde record klooien. De eerste die wegschrijft heeft dan prijs. De laatste krijgt een melding dat hij te laat is!
Handig is het opsplitsen van de toepassing in een Front- en Back-End. De Back-End bevat de data en de Front-End de programmatuur, Forms, etc. Er is een menu-optie om de database te splitsen. Eitje!

Een volgende stap zou kunnen zijn, het maken van een Access-project. Front_End en MSDE als database. En het gebruik maken van ADO om de gegevens te benaderen. De MS Data Engine krijg je bij Office of kan je gratis downloaden. Er kunnen wel 20 gebruikers tegelijk de database benaderen.

PS. Ik zoek een gratis alternatief voor MS Access!?

[ Voor 5% gewijzigd door Verwijderd op 20-07-2004 11:38 ]


  • Stefke
  • Registratie: December 2000
  • Laatst online: 19-05 11:18
Bedankt voor de tips, maar dat zijn dingen die ik al doe (front-end etc).

Een project obv een MSDE-db heb ik al overwogen, dan ben ik als het goed is ook af van rechtstreekse bewerkingen in een record (want dan is de koppeling via ODBC), maar zover ben ik nog niet :) Heb wel een MSDE-db draaien op mijn servertje btw

Het gaat puur om een manier om formulieren niet rechtstreeks in een accesstabel of query te laten werken.

[ Voor 7% gewijzigd door Stefke op 20-07-2004 11:40 ]


Verwijderd

Als je met ADO werkt, geen ODBC, definieer je bij het openen van je Form een ADO.Recordset die je met een query vult en koppelt aan de Recordsource van je Form.
Je werkt dus niet 'rechtstreeks' op de data van de database, maar met die in de ADO.Recordset. Kijk het even na. Er zijn methoden om de hele Recodset te updaten of alleen maar 1 Row eruit.
De velden op de Form koppel je aan de velden in de Recordset.