Recordset niet bijwerken in formulier

Status
Niet open voor verdere reacties.

violanzzj

Gebruiker
Lid geworden
12 apr 2007
Berichten
25
Allen,

Het gaat om een invulformulier voor machines.

Alle machines heb ik in een tabel T_Machines. Daarnaast kan elke machine van een bepaald merk zijn en daarom heb ik alle merken in de tabel T_Merk gedaan en als laatste kan elk merk weer verschillende types bevatten en deze heb ik in een tabel T_MerkType gedaan. so far so good.

Nu heb ik een formulier waar men met een pull down een merk kan kiezen. Dit veld komt laat ik zien uit de T_Merk tabel. Wanneer er een merk gekozen wordt zal het veld voor het type (T_MerkType.TypeId) ge-requeried worden en worden leeggemaakt

Code:
Private Sub MerkID_AfterUpdate()
Me.TypeID.Requery
Me.TypeID = ""
End Sub

ook dit gaat nog steeds goed.

Nu wil ik als laatste de omschrijving van het merk en van het type. Wanneer ik de omschrijving van het merk toevoeg werkt alles nog steeds, maar wanneer ik de omschrijving van het type toevoeg krijg ik dus de foutmelding dat hij hem niet kan bijwerken.

T_Machines bevat o.a. MachineId, MerkId en TypeId
T_Merk bevat o.a. MerkId, Omschrijving
T_MerkType bevat o.a. TypeId, MerkId en Omschrijving

T_machines --> T_merk --> T_merktype
Ik heb dus geen koppeling van T_Merktype richting machines. Dit heb ik wel geprobeerd, maar mocht niet baten.

Is er iemand die mij hierbij kan helpen?

Rolf
 
Ik ga er even voor het gemak van uit dat je voor de merken een keuzelijst hebt gemaakt, en voor de types ook. Als je in die keuzelijsten het veld Omschrijving toevoegt, kun je die omschrijving simpel op het formulier laten zien d.m.v. een extra regel. Iets als:

Code:
Private Sub MerkID_AfterUpdate()
     Me.TypeID.Requery
     Me.TypeID = ""
     Me.MerkOmschrijving = Me.MerkID.Column(#)
End Sub

Hierbij staat het hekje # voor het kolomnummer -1. Dus als het veld Omschrijving de 3e kolom is, zet je in de formule: Me.MerkID.Column(2)
En hetzelfde doe je voor Type.
 
Hi Octa,

ik heb het geprobeerd, maar het werkt niet. Hij blijft dezelfde melding geven.

Er zijn eigenlijk 2 situaties.
In deze situatie zijn de volgende velden aanwezig;
T_Machine.MachineID
T_Machine.MerkID
T_Merk.MerkOmschrijving
T_Machine.TypeID

Wanneer ik nu het MerkId wijzig dan wijzigt de omschrijving en het TypeId wordt leeggemaakt
De data gaat nu over 2 tabellen

-----
Situatie2
In deze situatie zijn de volgende velden aanwezig;
T_Machine.MachineID
T_Machine.MerkID
T_Merk.MerkOmschrijving
T_Machine.TypeID
T_MerkType.TypeOmschrijving

Wanneer ik nu het MerkId wijzig dan krijg ik de Recordset error.
(TypeId is bekend in T_Machines, maar geen relatie met T_MerkType. De relatie ligt tussen T_Merk.MerkId en T_MerkType.MerkId)

Heb het ook geprobeerd met een relatie tussen T_machines en T_MerkType, maar ook dit bied geen uitkomst.

mvg,

Rolf
 
Ik snap nog steeds niet wat je probleem is. Ik snap dat je per machine het merk en het Type wilt vastleggen, dus daar heb je twee velden voor nodig. Tussen Merk en Machine heb je een één-op-veel relatie nodig (één merk kan voor veel machines gebruikt worden) en tussen Merken en Types een veel-op-veel relatie m.b.v. de koppeltabel Merk_Type, waarin je zowel een MerkID als een TypeID opslaat.
Op het formulier voor de machines heb je twee keuzelijsten nodig, één voor het merk, en één voor het type. De keuzelijst cboMerk is gebaseerd op de tabel Merk, en de keuzelijst cboType is gebaseerd op een query op basis van Type en Merk_Type. Je gebruikt daaruit de typevelden TypeID en TypeOmschrijving, en het veld MerkID uit de koppeltabel. Als criterium op de keuzelijst cboType gebruik je de keuzelijst cboMerk uit het formulier, en op de keuzelijst cboMerk heb je een gebeurtenis <Na bijwerken> die de keuzelijst cboType een Requery geeft. Als het goed is, kun je dan alleen types kiezen die horen bij dat bepaalde merk.
De keuzelijst cboMerk koppel je aan het veld MerkID in je tabel, en de keuzelijst cboType koppel je aan het veld TypeID. En dat is alles!
Wil je de omschrijving nog op je formulier zien? Maak dan twee onafhanke3lijke tekstvakken, die je koppelt aan de kolom uit de betreffende keuzelijst; als het goed is heb je het Opmerkingenveld daar ook in gezet, juist met dit doel.
Ik maak regelmatig databases op dit principe, en dat gaat prima!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan