Twee recordsources, twee detailformulieren

Status
Niet open voor verdere reacties.

scw

Gebruiker
Lid geworden
5 jun 2009
Berichten
530
Hallo!

Graag wilde ik informeren of het volgende mogelijk is:

Op mijn hoofdformulier heb ik twee subformulieren (A + B) in gegevensbladweergave. Bij de OnDoubleClick event heb ik het volgende staan:

Code:
DoCmd.RunCommand acCmdSelectRecord

Dim stDocName As String
Dim stLinkCriteria As String

   stDocName = "frmRecordOpenen1"  [COLOR="red"](A)[/COLOR] óf "frmRecordOpenen2" [COLOR="red"](B)[/COLOR]
   
   stLinkCriteria = "[RecordID]=" & Me![RecordID]
   DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog

Waarmee een formulier van het desbetreffende record word geopend met details. Maar let op!

Nu zou ik graag de twee subformulieren willen vervangen door één subformulier, welke d.m.v. wisselknoppen de recordsource veranderd. Maar is het dan ook mogelijk dat Access weet wanneer hij welke van de detailformulieren (A of B) moet pakken aan de hand van de op dat moment geselecteerde recordsource? :rolleyes:

Ik ben benieuwd!!
 
Het is op zich niet zo lastig om met een wisselknop een Recordsource op een formulier te veranderen. Alleen: de formulieren die je wilt combineren, moeten dan uiteraard wel dezelfde velden/veldnamen hebben. Ik denk dan: die twee formulieren zijn gebaseerd op dezelfde gegevensbron. Dus de volgende vraag is dan: wat is het verschil tussen die twee formulieren, dat je er aparte formulieren voor hebt gemaakt? Als het alleen een filtering is, dan kan je die net zo goed via de knop doen, en hoef je de Recordbron niet te veranderen.
Maar het kan dus wel...
 
Hoi Michel,

Ik zal het even nog uitgebreider uitleggen. De velden op het subformulier zijn gelijk, echter de velden op het (om zo maar te noemen) 'detail'formulier zijn er twee velden verschillend (maar die komen dus niet voor op het subformulier. Op het subformulier hebben de velden wel dezelfde naam en gegevenstype zeg maar.

Ik weet wel hoe je de recordsource kunt veranderen, dit is geen probleem. Maar hoe geef je aan dat Access formulier frmOpenen1 opent wanneer de subformulier recordsource = A en wanneer frmOpenen2 opent wanneer recordsource = B??
 
Ik ben de draad nu even kwijt, want ik dacht dat je de subformulieren wilde vervangen door één formulier met een variabele recordsource. Blijkbaar toch niet?
 
Hou het eenvoudig en gebruik 2 subformulieren.

Tardis
 
@ Octafish: Inderdaad wil ik de twee subformulieren vervangen op het hoofdformulier door één subformulier (die gevoed wordt door twee recordsource (te bepalen met wisselknop). Afhankelijk van of de ene knop aanstaat of de andere, zou Access moeten weten welk 'detail'formulier hij opent. Het gaat namelijk om dossiers type A en B, welke worden opgeslagen in tblA en tblB.

@Tardis: op zich kun je gelijk hebben en is het nu al functioneel, maar je wilt toch altijd weer beter. Het zou mooi zijn om de ruimte op een scherm goed te benutten en het overzichtelijk te houden voor de uiteindelijke gebruiker.
 
Kom ik weer terug op een eerdere opmerking van je:
Ik weet wel hoe je de recordsource kunt veranderen, dit is geen probleem.
Wat is nu dan het probleem? Want je hebt dus blijkbaar al een knop gemaakt die de Recordsource van het subformulier verandert?
 
Mijn probleem is óf ik (en vooral hoe) neergezet kan worden dat Access frmRecordOpenen 1 opent wanneer de recordsource van het enige subformulier A is en wanneer die B is: dan wordt frmRecordOpenen 2 geopend. Dus in eerdergenoemde code:

On Double Click Event:
Code:
DoCmd.RunCommand acCmdSelectRecord

Dim stDocName As String
Dim stLinkCriteria As String

   stDocName = "frmRecordOpenen1"  (A) óf "frmRecordOpenen2" (B)
   
   stLinkCriteria = "[RecordID]=" & Me![RecordID]
   DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog
 
Ik begin dan te denken dat je de Recordsource van het formulier moet controleren. Waarschijnlijk heb je in je subformulier als recordsource iets staan als: "SELECT * FROM tblA" form Formulier1 en "SELECT * FROM tblB" voor formulier2. Met een IF Instr("1,strSQL,"tblA")>0 kun je misschien wel een sturing maken.
 
Perfect! Het ging me juist even om dat stukje
kun je misschien wel een sturing maken.

En hoe ik het dan eventueel zou kunnen proberen:

Code:
DoCmd.RunCommand acCmdSelectRecord

Dim stDocName As String
Dim stLinkCriteria As String

   stDocName = "frmRecordOpenen1"  (A) óf "frmRecordOpenen2" (B)
   
   stLinkCriteria = "[RecordID]=" & Me![RecordID]
   DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog

Waar plaats ik dan de:

Code:
IF Instr("1,strSQL,"tblA")>0

Na de
Code:
StDocName =
??
 
Met bijgaand voorbeeld kun je hoop ik wel iets...

Code:
   DoCmd.OpenForm "[JouwSubformulierMetDeKnop]", acDesign, , , , acHidden
   strSQL = Forms![JouwSubformulierMetDeKnop].Form.RecordSource
   DoCmd.Close acForm, "[JouwSubformulierMetDeKnop]", acSaveNo
   IF Instr("1,strSQL,"tblA")>0 THEN
      stDocName = "frmRecordOpenen1"
   ELSEIF Instr("1,strSQL,"tblB")>0 THEN
      stDocName = "frmRecordOpenen2"
   END IF
   DoCmd.RunCommand acCmdSelectRecord

   stLinkCriteria = "[RecordID]=" & Me![RecordID]
   DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog
 
Jah het werkt!! Hiermee is het gelukt! Goed dat het gewoon mogelijk is.. alles kan met Access kennelijk! :D
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan