Via formulier record zoeken obv tabel A -> gekoppeld record openen van tabel B

Status
Niet open voor verdere reacties.
Je vervangt de gegevensbron van de keuzelijst. Refresh is eigenlijk alleen het verversen wat je op het scherm ziet. Dus requery werkt op de onderliggende data, en refresh alleen op het zichtbare.
Je keuzelijst kun je simpel aanpassen door de gewenste extra velden in de query onder de keuzelijst aan te passen. Vervolgens moet je in de eigenschappen van de keuzelijst dan ook nog het aantal kolommen aanpassen (vergroten) en waarschijnlijk de kolombreedtes goed instellen.
 
OK, voor de keuzelijst: die heb ik aangepast en dat werkt. Maar hoe weet dat subformulier nu op welk van die bovenstaande gegevens het zich moet baseren?
 
Bekijk bijlage voorbeeld dbase zoekformulier.zip

OK, zo ver ben ik nu. Ik heb in het zoekveld de kolommen die ik nodig had.
En ik krijg in het subformulier de nodige gegevens en kan daar aanvullen als ik wil.
Wat nog niet lukt:
- die requery heb ik geprobeerd, maar gewoon refresh door requery vervangen doet niks, dus ik denk dat mijn kennis daar te beperkt voor is om dat te doen werken :-)
- als ik zoek (bvb de laatste 2 namen in het keuzelijstje), en er is voor die procedureID nog geen record in de tabel uitbr_overheidsdbase, dan kan ik er onderaan wel gegevens voor invullen, maar de procedureID zou hij automatisch moeten overnemen uit de tabel met procedures of uit het keuzelijstje dat ik dan net heb ingevuld. Weet niet of dat kan. Mag ook een nieuw formulier zijn dat ik met een knop kan openen.
- ik krijg nu na het opnieuw openen een foutmelding: probleem met laden van DLL (kan dat komen door het comprimeren ofzo? Ik heb er verder niks aan veranderd...)

Ja, hoe meer je je erin verdiept, hoe moeilijker het wordt he :-s
 
Laatst bewerkt:
Je moet, als je een object met een recordset wilt verversen, dat doen door het object correct aan te spreken. Je formulier zelf heeft geen data, en daarom doet Requery daar niks op. De code zou je dus zo moeten gebruiken:
Code:
Private Sub SelecteerCombo_AfterUpdate()
    Me.frmSub1.Requery
End Sub
Hier is frmSub1 de naam van je formulierobject.

- als ik zoek (bvb de laatste 2 namen in het keuzelijstje), en er is voor die procedureID nog geen record in de tabel uitbr_overheidsdbase, dan kan ik er onderaan wel gegevens voor invullen, maar de procedureID zou hij automatisch moeten overnemen uit de tabel met procedures of uit het keuzelijstje dat ik dan net heb ingevuld. Weet niet of dat kan.

Hier maak je een denkfout, en voor de oplossing ervan gebruik je een verkeerd subformulier type. Je hebt nu namelijk een formulier gebaseerd op het type <Gegevensblad>, en dat moet <Doorlopend formulier> zijn. In dat aangepaste formulier vervang je dan het tekstveld ProcedureID door een keuzelijst. Of, doe ik zelf meestal, rechtsklikken op het veld, <Wijzigen in> aanklikken en dan <Keuzelijst met invoervak> selecteren. De rijbron is exact dezelfde als uit de andere keuzelijst, dus die kun je gewoon kopiëren. Wel uiteraard ook de kolomeigenschappen overnemen.
 
Alvast veel dank! Ik ben een heel eind opgeschoten dankzij je suggesties!

Requery is gelukt. Het DLL-probleem heb ik niet meer (op andere PC. Thuis nog wel).
Wat het invullen van het subformulier betreft: je oplossing heb ik toegepast en dat werkt. Alleen moet je dan toch nog handmatig die procedureID kiezen uit de lijst, terwijl je die bovenaan al als zoekcriterium had geselecteerd. Ik neem aan dat dit niet automatisch kan ingevuld worden? Dat er dus als er geen record gevonden wordt voor het geselecteerde procedureID, een nieuw wordt aangemaakt in het subform waar dat ID en ook naam, voornaam en DatumBeginInvul, al worden ingevuld?
Nu vind ik de oplossing suboptimaal. Ik kan in het subformulier opnieuw het ID selecteren en dan de nodige velden aanvullen. Maar ook naam en voornaam komen er dan nog niet in. Als ik bovenaan opnieuw datzelfde ID selecteer, dan wel. Ik begrijp hoe dat komt, maar ik kom er niet voorbij :-).
 
Het DLL-probleem heb ik niet meer (op andere PC. Thuis nog wel).
Heb ik iets gemist?

Een subformulier kun je koppelen aan een hoofdformulier als dat hoofdformulier is gekoppeld aan een gegevensbron. In dat geval zie je in je hoofdformulier de hoofdgegevens in in het subformulier de gekoppelde data.
Voorbeeldje: een (enkelvoudig) formulier Klanten laat alle Klantgegevens zien, en het subformulier Bestellingen toont dan alle bestellingen van die klant. Je kunt dan in dat subformulier gelijk een nieuwe bestelling maken. Dat is de makkelijkste manier, en je hoeft er ook nog eens niks voor te doen. Jij maakt het dus (wellicht noodeloos?) een stuk moeilijker voor jezelf :).
 
Bekijk bijlage 230127
- ik krijg nu na het opnieuw openen een foutmelding: probleem met laden van DLL (kan dat komen door het comprimeren ofzo? Ik heb er verder niks aan veranderd...)

Dit heb je mss gemist gisteravond?
Het probleem was even weg en nu terug. Krijg het niet zo direct in orde en kan dus niet verder werken aan m'n dbase. Jij hebt niks gemerkt dus, toen je m'n laatse zip gebruikte?
 
hm, ik werkte op een usb-stick. heb het nu naar HD gecopieerd en werkt terug. Zou het daaraan liggen van die DLL?
 
Maar om op het fenomeen 'bestelling' terug te komen dat je beschrijft. Dat is idd ongeveer wat ik nodig heb. Maar hoe krijgt die bestelling (of in mijn geval de procedure-toelichtingen) dan het juiste ID?
Én: ik wil in dat hoofdformulier kunnen zoeken he. Dus ik wil dat bij het openen die veldjes leeg zijn, dat ik daar een selectie maak en dat ik dan pas de bijhorende procedure-info zie.

#confused#
 
Laatst bewerkt:
Én: ik wil in dat hoofdformulier kunnen zoeken he. Dus ik wil dat bij het openen die veldjes leeg zijn, dat ik daar een selectie maak en dat ik dan pas de bijhorende procedure-info zie.
Je wilt teveel... of misschien wel te weinig. In ieder geval: niet het goede :D.
Een formulier is bij voorkeur gebaseerd op een recordbron, cq een tabel of een query. Want waar heb je anders een formulier voor? Oké, een startformulier waar je knoppen op ziet om andere formulieren te openen. Desnoods met daarop een aantal keuzelijsten zodat de formulieren gelijk gefilterd geopend worden. Maar een formulier baseer je dus meestal op een gegevensbron. In zo'n formulier zet je dan in de Koptekst (mag elders, maar de kopteks is daar bij uitstek geschikt voor) zoekopties zoals keuzelijsten. Dus dat is één oplossing voor je vraag :). De tweede oplossing is dan dus ook geleverd, want een subformulier koppelt automatisch aan het hoofdformulier, in jouw geval op basis van Procedure_ID. En dan kun je dus ook gelijk records toevoegen in het subformulier.

Blijft dus als enige de wens over dat het formulier leeg moet beginnen..... Een beetje onzinnige, in mijn ogen :).
 
Hmmm OctaFish, ik weet niet of we elkaar 100% begrijpen. 2 vragen:
- als de keuzelijst in de koptekst niet leeg is bij het openen van dat formulier, dan toont het toch gewoon het eerste record ofzo? En dan begint mijn eindgebruiker daarin te typen en overschrijft die gewoon data. Daarom wilde ik het leeg hebben. Net zoals bij een startformulier wat jij beschrijft. Dat is ook goed trouwens. Hoeft voor mij niet per se in 1 formulier...
- ik heb geprobeerd een hoofdformulier obv tabel patienten en een subform obv mijn derde tabel. Maar als ik in dat subform data invoer, dan zie ik nergens in de tabel een proedure-id verschijnen hoor. Hoe gaat dat dan met bestellingen bvb? Moet je dan als je een bestelling invoert voor een geselecteerde klant, nog eens opnieuw z'n klantennr invoeren?
 
OK, mijn 2de vraag vervalt. Ik heb een werkend formulier kunnen maken met 2 subformulieren die netjes mee updaten en waar procedureID wel automatisch wordt overgenomen bij een nieuw ingevuld record. Nu nog een keuzevak ervoor en ik ben er. En daarna ga ik proberen er 1 subformulier tussenuit te krijgen door eerst een query te maken van die 2 tabellen.
Lijkt wel de processie van Echternach :-D
 
Dus je eerste vraag staat nog? Mooi :). Een formulier dat is gebaseerd op een tabel, laat in beginsel alle records zien uit die tabel. Dat is normaal, en wenselijk :D. Wat je niet wilt, is dat gebruikers de data per ongeluk muteren of verwijderen. Dat is simpel op te lossen door de juiste knoppen op het formulier te maken. Om te beginnen kun je de eigenschap <Toevoegingen toestaan> en <Verwijderen toestaan> op Nee te zetten. Het formulier kan dan niet bewerkt worden, wat je blijkbaar wilt. Toevoegen kan dan nog wel, en dat wil je ook :).
Een specifiek record zoeken kun je oplossen met een keuzelijst in de koptekst. Dat heeft verder helemaal niets met de records op het formulier te maken.
Wat je met je laatste opmerkingen bedoelt snap ik dan weer niet helemaal; als je 2 subformulieren hebt, dan zitten daar waarschijnlijk 2 gekoppelde tabellen onder. Die kun je nooit vanuit één query vullen. Dus ik zou daar gewoon 2 subformulieren voor blijven gebruiken. Als je daar namelijk één query van maakt, kun je waarschijnlijk geen van de 2 tabellen bewerken...

Overigens begrijp ik mensen niet die een formulier openen, en gelijk maar van alles gaan lopen typen. Doe je in een Word document dat je opent toch ook niet? Een beetje nadenken hoort er toch ook bij? Maar goed, die gebruikers zijn er nu eenmaal, en daarom kan je al die opties dichttimmeren :D.
 
Bekijk bijlage voorbeeld dbase zoekformulier.zip

Haha, ik kom stilaan van onder m'n steen :-D.
Dus: frmSelecteer daar kan je de selectie maken. Via knop kom je dan op het andere formulier.
Dat is gebaseerd op 1 query met alle nodige gegevens en ik kan ze aanpassen waar nodig.
(Mss moet ik vermelden dat ik enkel gegevens van Tbl_uitbr_overheidsdbase wil invullen. De andere 2 tabellen worden aangeleverd uit een andere dbase, dus daar heb ik verder geen vat op.


Als ik dat eerste formulier wil weglaten en de selectie in de formulierkoptekst wil zetten. Hoe moet ik dat dan precies formuleren? Ik krijg die Requery niet meer juist :-).

Bedankt alweer voor je geduld!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan