Selectie in subform

Status
Niet open voor verdere reacties.
Een vervolg vraagje...

Als ik nu iets in mijn mainform aanpas, wil ik graag dat de subform een requery uitvoert. Ik heb dit geprobeerd met een afterupdate (op het mainform) met de code:

Code:
Me.sfmOrder.Requery
Me!sfmOrder.Requery
Me.sfmOrder.Form.Requery
Me!sfmOrder.Form.Requery
Forms!frmOrder!sfmOrder.Form.Requery

Wat ik heb gevonden is dat Me. refereerd naar een eigenschap/functie, en Me! naar een "member" of onderdeel van een groep. Dus ik denk dat ik in deze de Me. functie zou moeten gebruiken echter krijg ik het niet werkend.

Als ik na een aanpassing in het subform klik of op save dan past deze wel aan, wat doe ik in deze fout?
 
Formulieren die je ziet worden geopend met wwaarden. Verander je iets in een hoofdformulier, en heeft dat geen consequenties voor de onderliggende velden, dan zie je die veranderingen niet altijd gelijk terug. Requery laadt dan de gegevens opnieuw in. Zijn die niet veranderd, dan zie je niet zo veel verschillend. Je hebt dan ook een Repaint nodig. Of een Refresh.
 
Dag OctaFish,

Dus bij een requery, worden zeg maar de gekoppelde gegevens opnieuw geladen maar de berekeningen niet meegenomen. Ik heb op google een tijd zitten zoeken naar hoe dit opgelost kan worden, heb ook verschillende opties geprobeerd maar ik kom er toch niet uit.

Ik heb ook geprobeerd:
Op zowel de command box als het main form de after update event met:
Me.sfmOrder.Form.Repaint
Me.sfmOrder.Form.Recalc

DoCMD.Requery "sfmOrder"
DoCMD.RepaintObject acForm, "sfmOrder"

Zou je me nog een tip in de goede richting kunnen geven?
 
Misschien moet je weer even een voorbeeldje posten, want ik heb zelf nooit problemen met het verversen van informatie op een formulier. Dus waarom het bij jou niet werkt: geen idee :).
 
Je vraag of de bijlage? :D. Maar ik vermoed het uploaden :). Zal er naar kijken!
 
Ik zie nergens de code staan die je zou willen hebben. Wat en wanneer moet er precies gebeuren?
 
Ah sorry, ja inderdaad het uploaden. Wilde het via wetransfer proberen maar daarvoor moet ik een mail adres hebben enfin. Zo ook gelukt :)

Ik had de code alweer verwijderd, bit stupid in hindsight.

Ik zou bij een aanpassing in frmOrder, sfmOrder de aanpassing laten doorrekenen. Momenteel als je in frmOrder zit en je past iets aan, zie je dit niet direct in sfmOrder, daarvoor zou ik dan in de sfmOrder moeten klikken en dan rekent de aanpassing in frmOrder wel door.

Bovenstaande vba code heb ik geprobeerd in:
Code:
Private Sub Form_AfterUpdate()

End Sub
&
Code:
Private Sub Keuzelijst229_AfterUpdate()

End Sub

De tweede zou ik dan voor alle invul vakken moeten instellen, mocht dat de enige manier zijn.
 
Laatst bewerkt:
Ik snap niet zo veel van je db; je haalt zo te zien met de keuzelijst [cboProduct] producten op, waar je tig kolommen in hebt gezet, waarvan één dubbel (CompanyID) wat natuurlijk een beetje overkill is (nog afgezien van de naamconventie waar je dan mee te maken krijgt), en als ik een product kies, dan zie ik de prijs daarvan niet terug in je subformulier. Costprice laat een niet-gekoppeld bedrag zien, en Salesprice blijft 0. En de marge blijft dan op -100% staan. Ik snap daar dus helemaal niks van... En ook niet welk veld je dan op je hoofdformulier wilt bijwerken!
 
Dat is niet de eerste keer... Excuus voor de chaos, voor mij voor het eerst dat ik zo iets bouw. Maar dat had je vast al door :p

Deze indeling heb ik zo gepakt omdat ik dit voor mezelf het gemakkelijkst vindt werken. Ik krijg de kostprijs te zien bij de productkeuze, daarna laat het sfmOrder wel zien wat de cumulatieve kostprijs is, welke in mijn beleving veel belangrijker is.
Tevens waar ik dan zelf mijn [SalesPrice] op baseer moet gaan invullen. Dit is geen vaste prijs met een 10% marge of 20% marge die ik er dan bij op tel. Dus de marge zal daarom bij het invullen van de [SalesPrice] berekend worden.

De dubbele CompanyId heb ik bij deze gelijk verwijderd.

Hetgeen wat ik op frmOrder wil kunnen aanpassen, wat ik dan graag gelijk in mijn sfmOrder zou willen terug zien (deze zijn verwoven met de berekeningen in qryProductOrdeR):
PaymentModalityId
FreightId
CommisionSolid
CommisionPercentage
CalcContainerVolume

Dus bij het aanpassen van de vijf bovenstaande gegevens op frmOrder, wil ik graag dat sfmOrder de CostPrice en daaropvolgend herberekend.
 
Laatst bewerkt:
En dat is dan, neem ik aan, de CostPrice die je in een eerder stadium al via de keuzelijst in je subformulier hebt gekozen? En waarvan het tekstveld in dat subformulier weer afhankelijk is? Want in dat geval klopt dus de Bron van je keuzelijst niet meer als je in het hoofdformulier iets wijzigt. Met als gevolg (want de keuzelijst is al ingelezen) dat er dus ook niks te verversen valt. Je zult dus ook de keuzelijst moeten refreshen.
 
Bedankt voor je snelle antwoorden OctaFish, waardeer het enorm!

Dat is niet de kostprijs die ik in een eerder stadium heb gekozen, maar de berekende kostprijs (inclusief, inkoopprijs, de vrachtkosten, labelkosten... (welke in de query na de keuze berekend worden)).

Ik zou na een keuze in frmOrder, de mainform, in bijvoorbeeld een ander kredietregeling de (berekende)CostPrice gewijzigd zien. Deze blijft nu namelijk hetzelfde tenzij ik na een wijziging in keuze in de mainform, weer in de subform klik. Wanneer ik weer in het subform klik, rekent de query hem namelijk wel door.

Het kan namelijk dat ik na de keuze voor de producten, etc. een gesprek met de klant voer en de betalingscondities (krediettermijnen) moet aanpassen.
 
Dag OctaFish,

Ik heb een mogelijke oplossing gevonden! Nu zou ik graag nog wel weten of er wellicht een betere methode is, ik heb nu een afterupdate event op de combobox gezet, bijvoorbeeld voor payment modality:

Code:
Private Sub Keuzelijst229_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
End Sub

Dit slaat de keuze eigenlijk gelijk op en daarmee worden de gegevens op de een of andere vage manier in sfmOrders ook geupdate zonder een refresh of requery..
 
Dat zou een oorzaak kunnen zijn; gegevens van een bewerkt record zie je nog niet gelijk terug op het hoofdformulier, die moeten eerst bewaard zijn. Ik gebruik zelf deze code:
Code:
If Me.Dirty Then Me.Dirty = False
En die gebruik ik dan bij allerlei acties waarbij het formulier moet worden ververst.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan