verwijzen naar een subform

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
Mijn "master-form" noemt patlijst

op die form een subform die ik de naam Sub27 gaf

op de "master-form" staat een keuzelijst
als ik daar een naam aanklik wil ik de uitgrijzing van een aantal knoppen in de subform ongedaan maken

als commando gaf ik

Forms![patlijst]!Sub27.Knop19.Enabled = True

maar da's blijkbaar niet de juiste syntax
Graag een handje!!

Merci
 
Je mist een formulierverwijzing. Een subformulier is onderdeel van een hoofdformulier, dus je moet wel aangeven dat sub27 eeen formulier is.
Code:
Me!Sub27.Form!Knop19.Enabled = True
zou moeten werken.
 
Ik kom er totaal niet meer uit
Oorspronkelijk was de form er ene met een kop en voettekst
de datum stond in de koptekst
Nu dacht ik er aan dat e me in een vorige vrag zei dat je niets aan een veld kon toekennen in een kop of een voet
dus
layout veranderd naar een subform
maar het probleem blijft... er komen er zelfs bij :confused:
ik stuur door wat ik meemaak
voor 06/05/13, 08/05/13 en 10/05/13 zijn er waarden in de tabel terug te vinden

Alvast bedankt
JP
 

Bijlagen

  • Database11.rar
    23,7 KB · Weergaven: 32
Er zit geen data in de db; alleen een koppeling naar een niet-anwezige tabel.
 
Ik heb een andere tabel met data gevonden, zodat ik in ieder geval de structuur kan bekijken zonder fouten, en raak daar een beetje confuus van. Zo heb je een veld <zoekdatum> gemaakt op je formulier met als Besturingselementbron de formule =Date(). Da's prima, daarmee krijg je een datum in het tekstveld. Het formulier is gebaseerd op een query, wat ook prima is, maar daar heb je als filter: Me.Zoekdatum. En dat kan niet: zoals ik al heb uitgelegd, kun je met Me eigenschappen opvragen van formulieren. Een query is geen formulier, dus Me werkt daar niet. Me kun je alleen gebruiken op rapporten en formulieren. Wil je in een query verwijzen naar een object van een formulier, dan kan dat alleen zo:
Code:
Formulieren![Overzicht_betalingen_per_dag]![zoekdatum]
 
Jammer, maar dan werkt het nog niet:
Ik krijg "U hebt een expressie zonder waarde opgegeven"
terwijl zoekdatum toch al date() is...
ik steek er de data bij nu deze keer... sorry
 

Bijlagen

  • Database11.rar
    31,8 KB · Weergaven: 29
Je hebt je zoekformulier (het hoofdformulier dus) aan dezelfde bron gekoppeld als het subformulier. Dat gaat niet werken, want als er geen datum is voor vandaag, valt er ook niks te filteren. En dat geeft de foutmelding. Het hoeft ook helemaal niet, want je hoofdformulier doet verder niks, dus dat heeft geen recordbron nodig. Waarom je overigens in deze constructie met een hoofd- en subformulier werkt is ook een beetje onduidelijk, want in deze situatie nergens voor nodig, en overdreven gecompliceerd. De gewenste functionaliteit heb je al met één doorlopend formulier.
 
OK... so far so good

Klik ik nu op "vorige datum" dan krijg ik de foutmelding "U kan geen waarde aan dit object toekennen
ik moet toch een reeks van data krijgen die aan mij criterium voldoen dus kan ik toch niet anders dan met een subform werken??????????????????????????????

Merci
JP
 
Geen idee wat je hebt aangepast, maar deze versie doet het. Dus kijk daar maar eens naar :)
 

Bijlagen

  • Database11.rar
    25,9 KB · Weergaven: 59
bedankt voor je hulp

toch nog een paar vraagjes
De form heeft nu ook een subform... was er dan toch geen andere mogelijkheid?
Zat het probleem in de syntax .value??, was dat het probleem

Ik dacht dat het misschien leuker was als ik een datum-zoek-veld zou maken met een kalender
Dat lukt, ik klik in het veld en een kalender-icoontje verschijnt
ik kies een datum, maar de datum word NIET in het veld "geschreven"
Hoe kan dat?

Bedankt
JP
 
en plots lukt niets meer
Ik had er graag een keuzelijst aan vastgehangen
Je zou moeten kunnen kiezen tussen C of O of alles
Dus ik maak een keuzelijst
maar ik kan, als ik in formview zit, geen keuze maken in dat nieuwe keuzevak

ook vroeg ik me af... hoe ga ik tewerk als ik ALLE records wil tonen, en dus eigenlijk niet wil filteren op "manier"-niveau

Nog eens Bedankt
ik stuur mijn poging door

JP
 

Bijlagen

  • Database11.rar
    28,4 KB · Weergaven: 24
Ik heb je formulier niet aangepast, maar ik gaf juist aan dat het zonder subformulier moet kunnen. Maar dat mag je eerst zelf uitzoeken :)
Zelf zou ik afstappen van filteren in de query (heb ik al een aantal keren voorgesteld) en filteren op het formulier. Dat gaat natuurlijk het makkelijkst als je van het subformulier afstapt, want dan is de code veel overzichtelijker.
 
Als voorbeeldje hier een bijgewerkte variant zonder subformulier en met twee knoppen die 'live' op datums filteren. Dat zijn dan geldige datums in de database, want jouw idee (steeds de datum met 1 verhogen of verlagen) heeft weinig zin voor datums waar geen transacties voor zijn. Dus kun je beter op geldige datums filteren.
Voor de meelezers hier alvast de code:
Code:
Dim strSQL As String
Dim iDatum As Long

    iDatum = CLng(Me.zoekdatum.Value)
    strSQL = "SELECT TOP 1 [Datum_betaling] FROM [Betalingen] "
    strSQL = strSQL & "WHERE [Datum_betaling] < CDate(" & iDatum & ") "
    strSQL = strSQL & "ORDER BY [Datum_betaling] DESC"
    With CurrentDb.OpenRecordset(strSQL)
        If .RecordCount > 0 Then
            Me.zoekdatum.Value = .Fields(0).Value
            Me.Filter = "[Datum_betaling] = cdate(" & CLng(.Fields(0)) & ")"
            Me.FilterOn = True
        Else
            Me.zoekdatum.Value = Date
            Me.Filter = ""
            Me.FilterOn = False
        End If
        .Close
    End With
    Form.Refresh
 

Bijlagen

  • Database12.rar
    27,3 KB · Weergaven: 39
Heel erg bedankt Michel... ik bekijk dat deze avond eens
Maar
Waarom lukte mijn keuze-object niet... zou dat graag weten want ik kreeg het maar niet aan de praat... zo iets simpel!!! ik trek me de haren uit het hoofd

Bedankt
JP
 
Filteren in een query m.b.v. verwijzingen naar een formulierveld kan natuurlijk wel, maar je moet dan wel zeker weten dat de gekozen waarde ook daadwerkelijk bestaat. In jouw geval was dat niet het geval; je kunt een datum invoeren waarvoor je geen data hebt. De recordset blijft dan leeg, met als gevolg dat je knoppen het ook niet meer doen, omdat die werken op een lege recordset. Ik gebruik zelden tot nooit filters op die manier; ik filter liever op het formulier zelf zoals in het laatste voorbeeld. Je query blijft dan zonder filters, en werkt dan gewoon altijd, en op je formulier zie je dan ook alles. Pas als je gaat filteren wordt de recordset opgeschoond.
 
Maar ik maakte gewoon een keuzevak aan en zelfs dag werkte van geen meter. Ik kon zelfs niets kiezen! Hoe kan zo iets?
 
Er was een (hele) goede reden dat je niets kon kiezen en dat komt doordat jouw formulier de eigenschap <Bewerken toestaan> op Nee heeft staan. En dan mag je niks meer wijzigen. Er is daar natuurlijk geen enkele reden voor om dat uit te zetten. Mocht je dat wèl willen voorkomen, dan zou je misschien toch met je subformulier moeten werken; het hoofdformulier staat dan op Bewerken, en het subformulier staat dan uit.
 
Michel
Er zijn toch een aantal zaken die niet duidelijk voor me zijn
Als je de form opent zie je NIET de data van de huidige datum, maar ALLE data, zonder filtering
Klik je op de knop om een dag terug te lopen... waar ergens verander je dan de datum in "zoekdatum"???
IPV de knoppen onderaan, zou je ook niet het entryfield bovenaan de form kunnen gebruiken om hier een datum te kiezen
In de keuzelijst zou je de keuze hebben tussen C, O of A
Dat zou een extra filtering moeten geven op records met manier="C" of manier="O"
voor "A" zou ik zowel "C" als "O" moeten hebben... hoe doe je dat dan??

Heel erg bedankt
JP
 
ook: strSQL = "SELECT TOP 1 [Datum_betaling] FROM [Betalingen] "

waar staat die TOP 1 voor???
 
De query onder je formulier heeft geen filter meer, dus zie je alle data. Pas met de twee bladerknoppen wordt het filter toegepast, dus dan gaat het filter in werking. Er is nog geen filter gebruikt voor de keuzelijst, dus die doet het nog niet. Overigens zou ik daar een keuzelijst met invoervak gebruiken, want die is een stuk makkelijker te programmeren als een keuzelijst. Maar dit terzijde. Wat je laatste vraag betreft: Normaal gesproken zie je alle records in een query. Met Top ## kun je het aantal records dat je wilt zien instellen. Daar is overigens in het query venster een apart tekstvakje voor, waar dus standaard <Alles> staat. Typ daar een getal, en je ziet dat aantal records. Door de waarde 1 te gebruiken zie je één record, en dat record wordt bepaald door de sortering die je opgeeft. Met Aflopend op datum zie je het laatste record, en dat doe ik dus: de laatste datum opzoeken die vóór de zoekdatum ligt. Of de eerste datum zoeken die nà de zoekdatum ligt. Beetje afhankelijk van de knop die je bekijkt.
Omdat het forum toch vooral bedoeld is om mensen beter te leren werken met Access, maak ik bij voorkeur geen complete oplossingen, maar draag ik de ideeën aan waar je verder mee kunt stoeien. Zo ook hier :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan