[ACCES/VBA] Waarde rowsource listbox te lang

Pagina: 1
Acties:

  • MaxEagle
  • Registratie: Oktober 2001
  • Laatst online: 21:36
Ik heb in access een formulier met 2 listboxen. De eerste listbox is al gevuld met verschillende nummers. Nu wil ik de 2e listbox vullen met gegevens uit de hoofdtabel met als voorwaarde dat de nummers uit Listbox1 corresponderen met het Id-veld uit de hoofdtabel.
Op zich niet zo moeilijk allemaal en had daar al een simpel for lusje voor gemaakt.


For x = 0 to IdListbox.listcount - 1 do
If Qrytmp = "" then
Qrytmp = "(((Tbl_Maintbl.Id) = " + IdListbox.itemdata(x)
else
Qrytmp = Qrytmp + " or (((Tbl_Maintbl.Id) = " + IdListbox.itemdata(x)

Dit vervolgens samen in een SQL statement proppen en voila het werkt todat er teveel nummers in de ene listbox met Id nummers staan.
Dan krijg ik de melding:

"De resultaatreeks die de opbouwfunctie heeft gegenereerd, is te lang."
"De reeks is afgekapt"

Het lijkt dus dat de rowsource maar een bepaald aantal karakters kan bevatten. Iemand een idee hoe ik dit kan omzeilen?

Het moet functionerend zijn in Access 2000 en hoger.

  • Boss
  • Registratie: September 1999
  • Laatst online: 27-07 14:21

Boss

+1 Overgewaardeerd

Waarom met een lusje code doen als het zo te zien ook gewoon met alleen een query in de rowsource van die listbox kan?

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.


  • MaxEagle
  • Registratie: Oktober 2001
  • Laatst online: 21:36
Boss schreef op maandag 28 augustus 2006 @ 12:44:
Waarom met een lusje code doen als het zo te zien ook gewoon met alleen een query in de rowsource van die listbox kan?
De gegevens in listbox1 zijn in principe tijdens het opstarten van het formulier weer anders. Hoe wil je dat met een simpele query oplossen dan? Zal wel weer veel te moeilijk denken.....
(en dat gaat moeilijk als je simpel bent :P)

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Leg eens uit hoe lb1 gevuld wordt. ALs die gebaseerd is op een query dan zou een simpele join volstaan.
verder ontgaat me het nut even van het één op één vullen van twee listboxen. Meer kolommen zou dan imho meer voor dee hand liggen

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • PromoX
  • Registratie: Februari 2002
  • Laatst online: 24-07 09:39

PromoX

Flying solo

MaxEagle schreef op maandag 28 augustus 2006 @ 12:52:
[...]


De gegevens in listbox1 zijn in principe tijdens het opstarten van het formulier weer anders. Hoe wil je dat met een simpele query oplossen dan?
Zoiets:
code:
1
SELECT waarde_id, waarde FROM tabel WHERE ((waarde_id)=[Forms]![formulier]![listbox1_id]));


En dan een requery uitvoeren op listbox 2 als er in listbox 1 een waarde gekozen wordt.

edit: Ik krijg het idee dat zoiets in dit geval niet gaat werken...

[ Voor 10% gewijzigd door PromoX op 28-08-2006 13:20 ]

And I'm the only one and I walk alone.


  • MaxEagle
  • Registratie: Oktober 2001
  • Laatst online: 21:36
Niesje schreef op maandag 28 augustus 2006 @ 13:10:
Leg eens uit hoe lb1 gevuld wordt. ALs die gebaseerd is op een query dan zou een simpele join volstaan.
verder ontgaat me het nut even van het één op één vullen van twee listboxen. Meer kolommen zou dan imho meer voor dee hand liggen
De Id nummers zitten in een tekstbestand. Bij het openen van het formulier haal ik dus de waarden uit het tekstbestand en zet deze in de eerte Listbox en is in principe onzichtbaar voor de gebruiker.

De 2e listbox behelst meerdere kolommen alleen de where voorwaarde moet voldoen aan de getallen van listbox 1 zeg maar.

Het zal misschien netter kunnen echter ik heb het mij allemaal zelf moeten aanleren, zo goed ben ik nog niet met access, laat staan vba. ;)

  • MaxEagle
  • Registratie: Oktober 2001
  • Laatst online: 21:36
Ben er achter dat de max lengte van rowsource van een listbox maar uit max 2048 karakters kan bestaan.

Misschien een ander oplossing bedenk ik mij net:

De waarden uit het tekstbestand in een tabel importeren, dan wordt het SQL statement ook anders namelijk. (Hoeft dan alleen 1x een verwijzing naar die nieuwe tabel).

Het probleem nu hoe schrijf ik data uit het tekstbestand of eventueel de waarden listbox weg naar deze tabel en hoe verwijder ik ze dan weer? (Met VBA dan want het moet gebeuren tijdens een actie die achter een knop op een ander formulier komt).

[ Voor 10% gewijzigd door MaxEagle op 29-08-2006 14:15 ]

Pagina: 1