VBA zoek program

Status
Niet open voor verdere reacties.

hanswe

Gebruiker
Lid geworden
7 okt 2009
Berichten
25
Wie helpt mij even op weg aangezien VBA voor mij al een zeer lange tijd geleden is.
Ik heb een hoofdformulier die is opgebouwd uit gegevens (tabel ite_items) van een query een wil naar een subformulier is opgebouwd uit een andere query(tabel det_items). Nu wil ik dat het subformulier begint met het record waar de pointer stond in query tabels ite_items. De vergelijkbare velden zijn voor (hoofdformulier) ite_items het veld ite_item_nummer en voor (subformulier) ite_items het veld ite_item_nummer.
Ik kan hiervoor geen macro toepassen aangezien er dan een conflict ontstaat in de gehele procedure (meerdere knoppen formulieren query's enz).
Als iemand mij onderstaand kan aanvullen zou ik zeer blij zijn en kan ik hiermee verder.
Private Sub Ontvangen_Click()

End Sub
 
Als ik het goed begrijp, wil je (vrij logisch...) dat het subformulier de gekoppelde records laat zien op basis van het record uit het hoofdID?
Daarvoor hoef je volgens mij niks te programmeren; dat is een kwestie van zorgen dat het sleutelveld uit het hoofdformulier is gekoppeld aan het gerelateerde veld uit het subform.
Dat kun je instellen op de Eigenschappen van het Subformulier. Op het tabblad <Gegevens> kun je aangeven welke velden aan elkaar gekoppeld moeten zijn bij de regels <Subvelden koppelen> en <Hoofdvelden koppelen>.
Als je iets anders bedoelt, dan graag iets meer uitleg, of eventueel een gestript voorbeeldje (altijd handig!)
 
Nee dat bedoel ik niet. Als ik een koppeling meegeef naar een subformulier dan krijg ik alleen dat. Maar ik wil wel naar voorgaande kunnen scrollen of volgende. Het enige wat ik wil is dat het subformulier bij het actieve record begint wat makkelijk midden in de tabel kan zijn.
Voorbeeldje is niet mogelijk aangezien dit een onderdeel is van 19 gekoppelde formulieren met 26 query's afkomstig uit een veelvoud van tabellen.
 
Je wilt het subformulier dus niet koppelen aan het hoofdformulier? In dat geval zie je dus standaard alle records uit het subformulier, onafhankelijk van het record op het hoofdformulier. Klopt dit? Maar je wilt wel beginnen met de gekoppelde records uit het hoofdformulier?
En je wilt vervolgens wel, dat als je naar een ander hoofdrecord bladert, je alle records ziet van dat specifieke record? En dan toch ook weer kunnen doorbladeren naar het totale recordbestand uit het subformulier?

Het zou misschien kunnen door op het subformulier een filtering te zetten op basis van het record uit het hoofdformulier, die je koppelt aan de actie <Bij Aanwijzen (On Currect)>. Dan heb je echter op je subformulier wel een knop nodig die de filtering verwijdert, want de filtering wordt op een recordset gedaan, en je moet dus een nieuwe recordsetclone maken.
Misschien dat je e.e.a. kunt automatiseren op zelfgemaakte bladerknoppen, dus als je een hoofdrecord hebt geopend met de filtering, dat de knoppen Volgende en Vorige een nieuwe recordset maken zonder filter, waarbij je dan bijvoorbeeld wel begint op het recordID van het hoofdformulier.

Ik zou het zelf een stuk simpeler oplossen, door het subformulier gewoon aan het hoofdformulier gekoppeld te laten, en bij bijvoorbeeld een dubbelklik op de velden in het subformulier een apart formulier te openen met alle records van het subformulier. Is een stuk simpeler te maken, en lijkt mij ook een stuk overzichtelijker, omdat (neem ik aan) de gegevens die je op het hoofdformulier ziet in jouw opzet toch niet meer overeenkomen met de gegevens in het subformulier. Dus je voorkomt met een apart formulier ook verwarring over wat je op het scherm ziet.
 
VBA program

Voordat er wordt overgegaan hoe het ook kan kan iemand mij misschien op gang helpen met een VBA programma (zie de oorspronkelijke vraag). Ik weet dat het in veel gevallen ook anders kan maar in mijn geval is dit de meest universele an duidelijke oplossing.
 
Ik denk niet dat iemand op basis van de gegevens die je ons hebt gegeven in staat is om

Code:
Private Sub Ontvangen_Click()

End Sub

op te vullen.... Daarvoor zullen we toch minstens een voorbeeld moeten hebben, ook al omdat je 19 formulieren en 26 queries aan elkaar hebt geknoopt...
Maar ik maak uiteraard met alle liefde plaats voor iemand die het wil proberen :)
 
vba

Het enige wat ik vraag om een zoek via VBA van de inhoud uit veld([ite_items]![ite_items_nummer]te zoeken in ([det_items]![det_items_nummer] .Wie helpt mij even op weg aangezien VBA voor mij al een zeer lange tijd geleden is.
De verdere afhandeling kan ik zelf wel en elk scherm, query, tabel enz is altijd een 1 op 1 verhouding.
Ik kan alleen niet meer voor de geest halen (het is meer dan 10 jaar geleden dat ik met VB [de A bestond toen niet]) hoe dat moest.
Als iemand mij onderstaand kan aanvullen zou ik zeer blij zijn en kan ik hiermee verder.
Private Sub Ontvangen_Click()

([ite_items]![ite_items_nummer] zoeken in ([det_items]![det_items_nummer]

End Sub
 
Laatst bewerkt:
Als ik tussen de regels blijf lezen, dan wil je nog steeds niet zoeken in het subformulier; je wilt met een knop (die neem ik aan op het subformulier staat...) de records die je ziet beperken tot het record dat in het hoofdformulier is geselecteerd.
Dat zou, (niet getest uiteraard, want we hebben je formulier niet...) ongeveer zo kunnen:

Code:
Private Sub Ontvangen_Click()
     strSQL = "SELECT * FROM [det_items] " _
          & "WHERE ([det_items]![det_items_nummer] = " _
          & Me.Parent.[ite_items_nummer]
     Me.RecordSource=strSQL
     Me.Requery
End Sub

Deze code zet een nieuwe Recordset op je subformulier, met een filtering op basis van het ite_items_nummer uit je hoofdformulier.
 
vba program

De aangedragen oplossing was dan wel niet helemaal dat (kan niet voor of achteruit scrollen) maar na wat aanpassingen heb ik het werkend gemaakt. Hartelijk dank voor de goede zet in de juiste richting.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan