Niet-afhankelijke velden manipuleren in doorlopend formulier

Status
Niet open voor verdere reacties.

Ruudh59

Gebruiker
Lid geworden
30 nov 2013
Berichten
56
Als ik met VBA de records in een doorlopend formulier wil benaderen, dan maak ik meestal gebruik van een recordset.
Gebleken is, dat alleen de velden die in de database zijn opgenomen ook terugkomen in de recordset.
Dus als ik per regel in een doorlopend formulier niet-afhankelijke velden opneem, dan kom ik die niet tegen in de recordset.

Ik wil met VBA een waarde in een niet-afhankelijk veld in regel van een doorlopend formulier wijzigen.
Zoals ik hierboven uitleg, werkt dat niet m.b.v. een recordset.
Hoe moet ik dat wel aanpakken?
 
Dus als ik per regel in een doorlopend formulier niet-afhankelijke velden opneem, dan kom ik die niet tegen in de recordset.
Gelukkig niet, zou ik zeggen: Zou een mooie boel worden! Berekeningen op een formulier (middels niet-gebonden tekstvakken) worden sowieso altijd uitgerekend als de velden waarop ze gebaseerd zijn gevuld worden. Dat is de hele essentie van niet-gebonden velden! Anders zouden ze een vrij zinloos bestaan hebben. Ergo: zodra je een formulier vult met gegevens (en of je dat nu doet via een query/tabel als Recordbron of middels een Recordset maakt niet eens uit) dan worden de berekeningen ook uitgevoerd. Moet je het formulier natuurlijk nog wel vertellen dat er nieuwe gegevens zijn, en dat er dus een Requery en/of Refresh op het formulier moet plaatsvinden. That's all!
 
Octafish,
In je verhaal ga je er vanuit dat de inhoud van niet-afhankelijke velden altijd is gebaseerd op velden uit hetzelfde record op het formulier.
B.v. in een record heb je een artikel, een prijs en een aantal. Voor het niet-afhankelijke veld factuurbedrag per artikel kan je dan de formule aantal*prijs aangeven.
Als de prijs of het aantal wijzigen dan wijzigt het factuurbedrag mee bij een requery.

Bij mijn probleem komt die informatie ergens anders vandaan. Ik wil een niet-afhankelijk veld in een doorlopend formulier van een waarde voorzien vanuit VBA, los van de rest van de inhoud van het record.
Hoe adresseer ik een niet-afhankelijke veld dat per record op een doorlopend formuler wordt weergegeven?
Als de recordset niet een selectie uit de database zou zijn, maar de data (al dan niet gebonden) achter een formulier, dan was ik klaar.
 
Dat is nog vele malen makkelijker, als ik je vraag tenminste goed interpreteer. Een niet-gebonden tekstvak vullen met VBA is namelijk het simpelst van het simpelste als het om VBA code gaat.
Code:
     Me.txtMijnTekstvak.Value = "Dit is een testje".
Meer is het niet.
 
Volgens mij ga je voorbij aan het feit dat het hier om een doorlopend formulier gaat.
Ook komt de trigger niet voort uit een wijziging van een veld uit hetzelfde record op het formulier.
 
Ik ga zeker niet voorbij aan het feit dat het om een doorlopend formulier gaat. Op een formulier heb je van een object maar één exemplaar. Je hebt dus één veld en van een niet-gebonden tekstvak ook maar één exemplaar. Een doorlopend formulier is in wezen niks anders als een verzameling enkelvoudige formulieren waarbij je dus steeds sets ziet van één record. De (unieke) velden worden dus herhaald. En dat geldt ook voor een niet-gebonden tekstvak. Het is er maar één keer, maar wordt (afhankelijk van het aantal rijen en de rijhoogte van de detailsectie) een aantal keer herhaald. En dus zie je maar één waarde in dat tekstvak. Einde oefening dus! De enige manier om variabele gegevens te zien, is om ze in een record te zetten.
 
Duidelijk.
Het werkt dus niet zoals ik had gedacht.
Betekent dat ik velden waarvan ik het eigenlijk niet nodig vind om ze te bewaren toch moet opslaan.
Bedankt zover.
Item gesloten.
 
Je kunt, als dat bruikbaar is, uiteraard wel een 'virtuele' recordset maken waar je de gegevens in zet. Die zou je als basis voor je formulier kunnen gebruiken. Overigens zie ik zelf het nut niet van tijdelijke gegevens die je wel op een formulier wilt zien, maar niet wilt opslaan. Die zou ik dan toch altijd in een query genereren. Want als je ze variabel wilt hebben in je doorlopend formulier, zal er toch ergens een criterium onder liggen die bepaalt wat in welk veld zou moeten. En die 'beslissing' kun je ook in een query afdwingen. Et voilà, daar heb je je niet-gebonden (want niet opgeslagen) gegevens!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan