Inhoud veld wijzigen in formulier

Status
Niet open voor verdere reacties.

ahkleine

Gebruiker
Lid geworden
1 mei 2014
Berichten
160
Hallo allemaal,

Ik hen een probleem met het wijzigen van gegevens in een formulier. Ik heb een formulier gemaakt met de wizzard. in dit formulier staan velden uit 4 verschillende tabellen. Op het moment dat ik het formulier open en ik wil bij een bepaald record de inhoud van een veld wijzigen dan klinkt er een waarschuwingstoon en staat het systeem ( naar mijn mening Formulier) niet toe dat deinhoud van dit veld niet gewijzigd wordt. Dus ik dacht maak een query van de 4 verschillende tabellen en een nieuw formulier. Zelfde probleem. Pas als ik de query een nieuwe tabel laat maken en a.h.v. deze nieuwe tabel een formulier maak kan ik de inhoud van een bepaald veld op het formulier wijzigen. Ik heb alle eigenschappen van het formulier geprint en bekeken maar kan nergens vinden waar het probleem zit. Wie weet raad?
 
Het probleem ligt (uiteraard, zou ik bijna zeggen) niet aan je formulier want dat is een 'dom' ding dat je bovenop het echte probleem legt. En dat is: de query die je gebruikt. Maak je een formulier op een tabel, dan is er meestal niks aan de hand. In een tabel kun je muteren, dus in het formulier ook. Maak je een selectiequery, dan kunnen er twee dingen gebeuren: ofwel de query is bewerkbaar, ofwel hij is dat niet. In het eerste geval is je formulier ook bewerkbaar, in het tweede geval dus niet.
Ik durf er wel wat geld op te zetten dat je query dus óók niet te bewerken is.

Waarom werkt de workaround wel? Heb ik net antwoord op gegeven :). Hoe los je het op? Heel simpel: zorg ervoor dat je query te bewerken is, dan is je formulier dat ook. Wanneer is een query niet te bwerken? Bijvoorbeeld als je een actiequery maakt. Of een Totalen query met Group By. Of, en daar zou hier wel eens sprake van kunnen zijn, als je een query maakt op basis van meerdere velden, en je gebruikt uit gemakzucht de 4 * om uit alle tabellen alle velden toe te voegen. Geheid dat je query/formulier het dan niet meer doet.

Heb je wél netjes de velden gekozen, dan nog kan het fout gaan. Een query/formulier om records te muteren moet eigenlijk gebaseerd zijn op één tabel, de tabel die je wilt bewerken. De velden die je uit ándere tabellen haalt, moet je alleen gebruiken voor aanvullende gegevens die je alleen wilt zien. Voorbeeldje: een formulier voor bestellingen bevat alle velden voor de bestelling, zoals besteldatum en Klantnummer. Maar van de klant wil je ook de adresgegevens zien/controleren, dus je haalt er ook de tabel Klanten bij om die gegevens toe te voegen. Dan heb je één probleempje: je hebt twee velden voor het klantnummer: Bestellingen.KlantID en Klanten.KlantID. Welke zet je in het formulier? Als je die vraag goed beantwoord (antwoord staat hierboven) dan werkt je formulier prima. Pak je de verkeerde, dan doet je formulier/query het niet.
 
Lukt niet

Octafish,

Ik heb jou oplossing uitgeprobeerd. Ik heb in de query (selectie query) eerst de ID velden uit de hoofdtabel gehaald met aanvullend de bijbehorende gegevens in de diverse andere tabellen. Ik heb dit ook omgekeerd gedaan ID velden uit bijbehorende tabellen gehaald en alleen overige gegevens, zoals jaar,bedrag etc, uit de hoofdtabel. Allebei de methodes werken niet. In eerste instantie heb ik de gegevens in het formulier niet m.b.v. een query opgehaald maar rechtstreeks uit de tabellen. Ook dan treedt het probleem op. Om e.e.a. te verduidelijken heb ik een voorbeeld atabase teogevoegd. Het gaat dan om het formulier frm_Begroting_change. De tabel tbl_begroting_hulptabel is het resultaat van de query qry_begroting als deze query een tabel maakt. Als je van die tabel een formulier maakt werkt het allemaal wel. Maar dit kan nooit de bedoeling zijn naar mijn mening. je gaat dan gegevens dubbel opslaan
 

Bijlagen

  • vb_record wijzigen.zip
    193,2 KB · Weergaven: 24
Laatst bewerkt:
De reden dat je huidige formulier in het voorbeeld niet werkt, is een logische: je gebruikt velden in je formulier die niet in je voorbeeld zitten. Voorbeeldje: het veld [Relatie_id]. Daar heb jij een vermelding staan naar het veld [tbl_RELATIES].[Id]. Dat mag niet (sleutelveld uit verkeerde tabel) en het veld zit dus niet in de onderliggende query. Daarnaast gebruik je in de tabel [tbl_MAANDEN] een ID veld met de eigenschap Dubbele Precisie, terwijl je dat wilt koppelen aan een (terecht) veld met Lange Integer.. Bovendien is het ID veld in [tbl_MAANDEN] geen sleutelveld. Overigens gebruik ik nooit een tabel voor maanden; die zijn zo simpel te herleiden uit een datum!
 
Octafish,

je hebt helemaal gelijk. Mijn dank voor jou reactie. Ik heb mij rot gezocht naar wat ik fout deed, maar door mijn gebrekkige kennis ben ik niet op het idee gekomen te gaan kijken naar de punten die jij hebt aangegeven. ik heb het aangepast en nu werkt het. Mijn dank hier voor.

Groet Albert kleine
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan