Foutmelding #naam? wanneer formulier gesloten is

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

josdb

Gebruiker
Lid geworden
31 mrt 2010
Berichten
11
Help!

ik heb een formule gemaakt waar ik een waarde uit een voettekst van een formulier haal naar een ander formulier toe.

Echter: Als ik het formulier met voettekst sluit staat er : #naam?

Open ik hem en ververs ik hem is het weer goed.

Hoe kan ik dit tegen gaan?

Bij voorbaad dank!
 
Ik neem aan dat de foutmelding optreedt op het formulier dat de gegevens ophaalt uit het formulier dat je wilt sluiten? Dan is het uiteraard volkomen logisch dat je een foutmelding krijgt, want hoe kun je een waarde uit een formulier laten zien dat niet is geopend? Je hebt het dan ook nog eens over een formule uit een voettekst, dus vermoedelijk is de waarde in dat veld niet aan een tabelveld gekoppeld, maar zelf een formule. Met als gevolg dat dat veld alleen iets bevat als het formulier is geopend. Sluit je het formulier, dan is het voettekstveld per definitie al leeg.
Kortom: hoe kun je toch de waarde laten staan? Je moet het formulier dus niet sluiten, dat zal duidelijk zijn. Je moet het formulier verbergen. met de opdracht Me.Visible=False. Ik weet uiteraard niet hoe het tweede formulier reageert met het eerste formulier, maar als je het eerste formulier vanuit het tweede formulier weer opent, dan doe je dat dus door het eerste formulier weer zichtbaar te maken; het is tenslotte nog open. Op een bepaald moment zul je het eerste formulier moeten sluiten, of zichtbaar maken. Dat moment hangt af van de verdere procedure.
 
Hallo,

Allereerst bedankt voor je antwoord..

Kan inderdaad wel kloppen wat je zegt!

Maar hoe moet het dan wel?

Ik heb een totaal van een veld nodig (berekend met Som) en die moet ik in feite over hebben naar een ander formulier

Ik zie door de bomen het bos niet meer :confused:

Bij voorbaat dank!

Groeten
 
Het werkt overgins wel zoals jij dat zegt! Daarvoor dank.

Maar hoort het ook zo?
Groeten!
 
Tja, daar kunnen we nog wel eens een boom over opzetten, als je genoeg tijd hebt! Er is nog wel een alternatief, waarbij je het eerste formulier wèl gelijk kunt sluiten. En dat is dat je het tekstveld in formulier 2 niet afhankelijk maakt (en al helemaal niet van formulier 1) maar de waarde vanuit formulier 1 kopieert naar formulier op het moment dat je formulier 1 sluit. Je krijgt dan een 'omgekeerde' formule, die de waarde van 1 naar 2 kopieert, en vervolgens het formulier sluit.
Voordeel: geen link meer tussen de twee formulieren, dus geen foutmelding. Nadeel: geen link meer tussen de twee formulieren, dus als er in formulier 1 iets verandert in de tussentijd, zie je dat niet terug in formulier 2.
Voor de andere oplossing kun je m.i. dan het beste het OpenArgs argument gebruiken. Hiermee hevel je op een hele simpele manier waarden uit een formulier over naar een tweede formulier.
 
Oke, bijna helder.

Openargs? waar zou ik deze in moeten vullen?
 
Een OpenArgs variabele geef je mee met het Docmd.Open commando; bij het openen van het formulier dus. Het is de laatste optie die je meegeeft.
Afhankelijk van of je één variabele meegeeft, of meer dan één, zul je bij het openen van het formulier de variabele nog moeten splitsen, want je kunt maar één string meegeven in je OpenArgs.
Bij het openen van het nieuwe formulier gebruik je de OpenArgs als volgt bij de gebeurtenis <Bij Laden>:

Code:
If Nz(Me.OpenArgs,"")<>"" Then
     Me.txtvak=Me.OpenArgs
End If

Let wel: dit is de variant voor één variabele. Maar volgens mij heb je daar ook genoeg aan.
 
...

Okee...

En waar zou ik dan in moeten vullen waar die de waarden weg moet halen?

Dank voor de hulp tot dusver! Ben al wel verder!
 
Je haalt de waarde uit je subformulier, dus die kun je ook in een variabele zetten. Ik zal even en voorbeeld geven dat ik zelf gebruik om een artikel toe te voegen aan een formulier fArtikelen met de geselecteerde waarde uit een tekstvak.
Op het hoofdformulier lees ik eerst de gegevens van het formulier in een variabele.
Code:
    sFilter=NewData & "|Categorie|" & Me.Parent.cboBedrijf.Column(0)
    DoCmd.OpenForm "fArtikelen", , , , acAdd, acDialog,  sFilter

Op het formulier moet de string OpenArgs uit elkaar worden getrokken, want er zitten 3 variabelen in. Dat gebeurt met een Split commando.

Code:
Private Sub Form_Open(Cancel As Integer)
    If Not IsNull(Me.OpenArgs) Then
        Dim sArgs() As String
        sArgs = Split(Me.OpenArgs, "|")
        Me.cboBedrijfID.SetFocus
        Me.cboBedrijfID.Value = sArgs(2)
        Me.txtCategorie.SetFocus
        Me.txtCategorie.Value = sArgs(1)
        Me.txtArtikel.SetFocus
        Me.txtArtikel.Value = sArgs(0)
        SendKeys "{F2}"
    End If
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan