[Access] automatisch velden vullen

Pagina: 1
Acties:
  • 528 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 86415

Topicstarter
Op dit moment heb ik een opdracht mbt tot een access projecten systeem met een voorraaadje tabellen query's. Nu heb ik alleen nog 1 probleem over namelijk het volgende:

er is een table' projecten' met kolom NR en kolom jaar . zo kan een project een projectnummer krijgen met jaar + nr dus 19871 19872 19881 enz.

Nu zit ik met het probleem als ik een nieuw project wil toevoegen, bijvoorbeeld een nieuw project in 2003, dat access of een macro oid automatisch moet opzoeken wat het laatste volnummer van dat specifieke , in een drop down box gedfineerd, jaar is. En daar dan 1 bij optellen zodat het volgende nummer ontstaat.

Voorzover ik mijn boeken e.d kon vinden zou dit moeten kunnen met vbscript. Google en de search hebben atm me niet veel geholpen.

Iemand suggesties? :)

[ Voor 4% gewijzigd door Anoniem: 86415 op 29-09-2003 10:15 ]


Acties:
  • 0 Henk 'm!

Anoniem: 1631

Wil je dit programmeren in VB in Access? VBscript zal er nagenoeg hetzelfde uitzien als zo'n stukje VB.

In acces in een Form kun je hetvolgende bijvoorbeeld doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'Hoogste NR opzoeken voor een bepaald jaar
dim rs as new recordset
dim NewNR as long
rs.open "SELECT Max (NR) As MaxNR FROM projecten WHERE jaar = " & DropdownboxJaar, currenproject.connection, adOpenDynamic ,adLockReadOnly 
if rs.EOF then
  [ERROR JAAR NIET GEVONDEN]
else 
  NewNR = rs.fields("MaxNR") + 1
end if
rs.close
'Nieuw jaar en NR invoegen in de tabel
rs.open "SELECT * FROM Projecten", currenproject.connection, ,adOpenDynamic ,adLockPessimistic 
rs.addnew
  rs.fields("jaar") = DropdownboxJaar
  rs.fields("NR") = NewNR
rs.update
rs.close
set rs=nothing

In VBscript ziet het er ongeveer hetzelfde uit alleen moet je dan wat dingen toevoegen om de database aan te kunnen spreken. (zoek op connectionstrings ofzo in google)

Als je niet de MAXIMALE waarde maar de LAATSTE waarde wil opzoeken (die dingen zouden kunnen verschillen) dan gebruik je LAST ipv MAX in de query.

[ Voor 5% gewijzigd door Anoniem: 1631 op 29-09-2003 10:44 . Reden: foutjeincode ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14-07 10:49

gorgi_19

Kruimeltjes zijn weer op :9

offtopic:
Lijkt met sterk dat dit met VBScript gaat. Je zult eerder VBA, Visual Basic for Applications, nodig hebben.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Anoniem: 86415

Topicstarter
Ja in een form kan het ook meen ik ik zal kijken of dit werkt ik moet een aantal zaken aanpassen dan wel. Als et niet werkt dan reply ik wel weer ;)

Alvast bedankt

Acties:
  • 0 Henk 'm!

Anoniem: 86415

Topicstarter
@sjoerd

Ik heb de code toegepast maar als ik het form open dan staat er netjes de waarde die het bepaalde project heeft. Dat is goed opzich. Maar als ik een ander jaar selecteer dan vult ie de waarde niet in maar wordt het gewoon een '0' en niet het volgnummer.

Acties:
  • 0 Henk 'm!

Anoniem: 15252

Anoniem: 86415 schreef op 29 September 2003 @ 11:03:
@sjoerd

Ik heb de code toegepast maar als ik het form open dan staat er netjes de waarde die het bepaalde project heeft. Dat is goed opzich. Maar als ik een ander jaar selecteer dan vult ie de waarde niet in maar wordt het gewoon een '0' en niet het volgnummer.
die code is ook niet bedoeld om compleet te zijn.. je moet wel afvangen dat er iets dient te gebeuren als je je selectie verandert (changed)

Acties:
  • 0 Henk 'm!

Anoniem: 86415

Topicstarter
Ja dat heb ik gedaan alle waarden zijn aangepast aan mijn specifieke formulier. Als ik op add record druk dan voeg ik het pas toe.

Die code heb ik toegvoegd aan het invoerveld 'Nr' Of moet het ergens anders staan?

Acties:
  • 0 Henk 'm!

Anoniem: 1631

Probeer de code onafhankelijk te maken van zo'n invoerveld.
Zoals ik het begrijp heb je een dropdownbox waarin je een jaar selecteert. Dan dien je op ADD te klikken zodat er een nieuw NR voor dat jaar wordt gecreeerd? De code dient dan onder de knop ADD te komen. Waarom gebruik je dan nog een invoerveld voor NR? Probeer iets duidelijker te zijn.

Als je een nieuwe record heb ingevoegd in de tabel met code dan dien je je FORM ook nog te updaten, met me.requery anders worden combo's e.d. niet ververst.

Acties:
  • 0 Henk 'm!

Anoniem: 86415

Topicstarter
Ok het werkt zo:

Ik heb een drop down box met een aantal jaren als ik daar 2003 invul dan moet er automatisch het volgnummer worden in gevuld.

daarna voer ik nog een aantal andere niet relevante zaken in en dan druk ik op Add Project.

kweet niet of dit voldoende is?

Acties:
  • 0 Henk 'm!

Anoniem: 15252

Anoniem: 86415 schreef op 29 september 2003 @ 13:08:
..
kweet niet of dit voldoende is?
maar wat is het probleem nu nog dan :? Je geeft aan hoe je het wilt oplossen. Ik zou zeggen probeer het eens en kijk of het werkt. Zoals je het beschrijft lijkt het te moeten werken.

Acties:
  • 0 Henk 'm!

Anoniem: 86415

Topicstarter
Het probleem is dat de gegevens nog steeds niet wordt ingevuld er komt alleen een 0 te staan nu.

Ik heb alles precies aangepast volgens de code e.d maar dat wil nog nietecht werken.

Acties:
  • 0 Henk 'm!

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 14-07 07:24

Eelke Spaak

- Vlad -

Met een query kan je heel makkelijk het nieuwe nummer verkrijgen:
SQL:
1
2
3
SELECT (MAX(NR) + 1) AS nieuwNummer
FROM projecten
WHERE jaar = 1987;

TheStreme - Share anything with anyone


Acties:
  • 0 Henk 'm!

Anoniem: 86415

Topicstarter
ok die query werkt maar hoe kan ik nou die query dat veld laten invullen op mijn form? dat veld mag dus pas gevuld worden als ik een jaar geselcteerd heb.

Nu kan dat met AfterUpdate alleen die commando's werken niet echt heb er mee geexperimenteerd.

Weet iemand hoe dat wel moet? :)

Acties:
  • 0 Henk 'm!

  • Boss
  • Registratie: September 1999
  • Laatst online: 07:39

Boss

+1 Overgewaardeerd

Doe het niet met een query maar met de functie DMAX. Dan krijg je in 1x een waarde terug en niet een recordset.

Dan wordt het dus
NieuwNummer = DMAX("NR", "projecten", "jaar = 1987") + 1

en jij krijgt acces projecten voor je werk??? >:)

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Acties:
  • 0 Henk 'm!

Anoniem: 86415

Topicstarter
dat snap ik wel ;) maar ik moet die query dat veld laten invullen NA dat ik het jaar ingevuld heb. Hoe kan dat ik heb et geprobeerd met after update enz maar dat wil niet. Ook als ik die dmax functie in OnEnter zet dan functioneert het ook niet.
Pagina: 1