bepaalde actie voor geselecteerde record

  • Onderwerp starter Onderwerp starter scw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

scw

Gebruiker
Lid geworden
5 jun 2009
Berichten
530
Ik zit met de volgende situatie:

Ik heb een subformulier (gegevensbladweergave) en wanneer ik daar een bepaalde record van selecteer, wil ik daarop een bepaalde actie uitvoeren met een knop. Nu weet ik niet hoe ik dat in VBA gezet kan worden.

Ik vermoedt dat er gebruik gemaakt moet worden van de StLinkCriteria en ik wil dat VBA de waarde veranderd van een veld.

stLinkCriteria = "[RecordID]=" & Me![RecordID]

Me.Active.Value = "0"
Me.Requery
End If

Weet iemand de precieze code voor mij te vertellen?? Eindresultaat moet dus zijn op basis van de geselecteerde RecordID moet de value van Active op "0" gezet worden.

Ben benieuwd hoe je dit kan oplossen!

Bedankt, SCW
 
Ik neem aan dat je een record op het subformulier wilt bijwerken?
Vermoedelijk moet je dan het RecordID ophalen met:
Me.[Naam Sobformulier].Forms.[RecordID].Value
 
bijna...

Ha goedemiddag Michel,

Dat klopt inderdaad, ik moet even duidelijker zijn: ik heb een formulier met daarop een knop, met die knop wil ik dus die waarde veranderen van een record op het subformulier.

Zojuist heb ik je code erin gezet:

Me.[frmNaam].Forms.[RecordID].Value = "0"

Helaas, geeft die weer:

Compileerfout

Kan de methode of het gegevenslid niet vinden, waarbij de focus komt te staan op het gedeelte "Forms".

Ik denk dat ik nog moet aanduiden dat het om het subformulier op het formulier gaat, hoe zou ik dat dan neer zetten??
 
Een code als
Me.[frmNaam].Forms.[RecordID].Value = "0"
zal altijd wel een fout opleveren; niet alleen lijkt het mij dat RecordID niet de waarde 0 kan hebben, je hoeft er ook geen quootjes om heen te zetten.

<<Me.[frmNaam].Forms.[Active].Value = 0>> is waarschijnlijk het effect dat je wilt bereiken?

Je zou dat met een UPDATE query moeten doen, die je achter je knop hangt. Daarbij gebruik je uiteraard de tabel om bij te werken, dus iets als:

strSQL="UPDATE [Tabel] SET [Active]=0 WHERE [RecordID=Me.[frmNaam].Forms.[RecordID].Value"
Docmd.RunSQL strSQL

Check wel eerst het RecordID met een msgbox, om te kijken of je überhaupt wel een RecordID kunt uitlezen...

MsgBox Me.[frmNaam].Forms.[RecordID].Value
bijvoorbeeld...
 
1e poging

Hai Michel,

Ik heb even geprobeerd te kijken wat die deed, het volgende wordt er weergegeven door Access:

Kan het veld І ("verticale streep!?") niet vinden waarnaar wordt verwezen in de expressie.
Ik heb de namen van de velden met de expressie gecontroleerd, maar deze lijken goed te kloppen.

Hmmm...
 
Kun je de volledige code posten?
 
bijna?

OK er bleek nog een ] (haakje sluiten) te missen achter RecordID, maar werken doet die nog niet helemaal:

strSQL = "UPDATE [tblRecords] SET [Active]=0 WHERE [RecordID]=Me.[frmSubForm].Forms.[RecordID].Value"
DoCmd.RunSQL strSQL

Hij zegt nu:

Parameterwaarde opgeven:

Me.frmSubForm.Formulieren.RecordID.Value
 
Moet zo zijn:

strSQL = "UPDATE [tblRecords] SET [Active]=0 WHERE [RecordID]=" & Me.[frmSubForm].Forms.[RecordID].Value
 
Arrrrggghhh, hij blijft het niet doen Michel:

Zowel bij het uitproberen van de messagebox

MsgBox Me.[frmNaam].Forms.[RecordID].Value


als bij de code zelf:

strSQL = "UPDATE [tblRecords] SET [Active]=0 WHERE [RecordID]=" & Me.[frmNaam].Forms.[RecordID].Value
DoCmd.RunSQL strSQL

Geeft Access weer:

Compileerfout

Kan de methode of het gegevenslid niet vinden
, waarbij de focus komt te staan op het gedeelte "Forms".

Uiteraard heb ik de naam gecontroleerd en deze correspondeert gewoon :confused::confused: Hmm...
 
Heb je al geprobeerd om de VBA te compileren?
Als er ergens een fout(je) zit, is dat niet altijd bij de plek waar de fout wordt aangegeven. Je krijgt dan een cryptische melding op een plek waar je absoluut geen fout verwacht, of constateert.
Dus ga naar: <Foutopsporing>, <Project compileren> en kijk waar de fouten zitten. Uiteraard proberen op te lossen....
 
Hebbes!

Ik heb hem helemaal doorgelopen en heb het gevonden Michel:

Het moest .Form. zijn i.p.v. .Forms. Nu voert die de actie naar behoren uit!! :thumb:
 
Had het s-je inderdaad over het hoofd gezien..... Dat soort zaken met je sneller als je een code opbouwt, want dan zie je gelijk dat-ie andere opties geeft.
Succes er mee!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan