Automatisch gegevens ophalen en deze opslaan in tabel

Status
Niet open voor verdere reacties.

Timba69

Gebruiker
Lid geworden
26 aug 2011
Berichten
5
Ik heb een vraagje over het automatisch ophalen (aanvullen) van gegevens en deze daarna op te slaan in een tabel.

Als voorbeeld gebruik ik bijvoorbeeld een tabel (Polissen) met daarin o.a. de velden : Polisnummer, Relatienummer en Productcode. Deze tabel wordt gebruikt om waarden op te halen.

Daarnaast heb ik een formulier gemaakt die in een 2e tabel (Mutaties) de dagelijkse binnenkomende wijzigingen op polissen bij moet houden.
Ik wil het de gebruiker zo makkelijk mogelijk maken dus zou hij/zij door het typen van het polisnummer automatisch ook het relatienummer en de bijbehorende productcode moeten krijgen.
Het polisnummer is momenteel een keuzelijst (Polisnummer) in de besturingselementbron en werkt prima.

" SELECT Polissen.Polisnummer, Polissen.SoortPolis, Polissen.Productcode, Polissen.Maatschappijnummer, Polissen.Ingangsdatum, Polissen.Relatienummer FROM Polissen;"

Het veld geeft middels een keuzelijst alle beschikbare polissen weer.

Daarna heb ik op de formuliervelden "relatienummer'' en ''Productcode'' in de besturingselementbron een verwijzing naar de keuzelijst gemaakt: vb: "=[Polisnummer].[column](2)''
Ook dit werkt prima.

Maar dan...
Als ik daarna het formulier opsla worden de waarden van de velden relatienummer en productcode niet in de tabel opgeslagen.

Wat doe ik hier fout?
 
En waarom zou je dat willen? In mijn boekje doe je alles perfect, en is elke verandering een behoorlijke achteruitgang!
 
Het gaat om het bijhouden van (aankomende) wijzigingen op polissen. Deze wil ik registreren in de tabel MUTATIES met daarin velden als het polisnummer, productcode en relatienummer zodat ik op deze database rapportages kan loslaten.

Maar op het formulier haalt hij alle gegevens prima op uit de tabel POLISSEN, maar schrijft hij de automatisch opgehaalde gegevens (met de expressie "=[Polisnummer].[column](x)'' niet weg.

Dus perfect werken vind ik wat te ver gaan. :) Het gaat dus specifiek om het wegschrijven van de automatisch opgehaalde velden naar de database MUTATIES.
 
Gegevens die je ophaalt uit een keuzelijst, die is gebaseerd op een opzoektabel, wil je niet kunnen aanpassen. Dat om te beginnen. Het is een Opzoektabel tenslotte. Voor mutaties in die tabel moet je een apart formulier gebruiken.

In jouw geval heb je blijkbaar een tabel Mutaties, waarin je de mutaties vastlegt, wat uiteraard prima is. Je formulier zou gebaseerd moeten zijn op die tabel. Ik neem aan dat je in die tabel ook datumvelden etc hebt, anders is je registratie nog steeds niet echt geschikt voor rapportages. Op basis van de tabel Mutaties maak je dan een formulier, waarin je m.b.v. een opzoeklijst een polis kunt opzoeken.

Nu zit ik totaal niet in het verzekeringswezen, dus voor de juiste procedures moet je zeker niet bij mij zijn, maar ik neem aan dat je in de tabel [Mutaties] de gewijzigde gegevens wilt vastleggen met de datumgegevens van die wijziging, maar dat je in de tabel [Polissen] de correcte polisgegevens bewaart. Want anders heb je een probleem met terugzoeken. Immers: bij het aanmaken van een nieuwe polis leg je de gegevens vast in de tabel [Polissen], en heb je nog geen mutaties, dus om de polis te bekijken moet je in [Polissen] zijn.
Verandert er na een jaar iets, dan wil je in de tabel [Polissen] nog steeds kunnen zien hoe de polis er uitziet; je wilt dan niet moeten switchen naar de tabel [Mutaties], want de persoon die dan in [Polissen] kijkt, ziet dan een verouderde polis. Dus alle mutaties op de polis doe je in [Polissen], en de mutatiegeschiedenis leg je vast in [Mutaties].
Situatie is dan dus: in de [Polissen] zie je de huidige situatie, en de tabel [Mutaties] de voorgaande situaties.

Kortom: wat je nodig hebt, is een knop die van een polis de oude situatie toevoegt aan [Mutaties] waarna je de polis verandert en opslaat. Ik zou daar een subformulier van maken (desnoods op een apart tabblad, zodat hij niet in de weg staat) dat je koppelt aan Polissen, zodat je altijd op een polis de huidige situatie en de voorgaande situaties kunt terugzien.
Wil je een apart formulier voor mutaties, dan heb je nog steeds een vergelijkbare constructie nodig, denk ik. Waarin je dus geen record aanmaakt in Mutaties, maar een wijziging doet in Polissen.
In het
 
Allereerst, bedankt voor de snelle reply. Dat stel ik zeer op prijs.

Ik denk alleen dat we iets langs elkaar praten. Ik zal het proberen zorgvuldiger uit te leggen.

Situatie:

Iedere dag krijgen wij bij de post verzoeken binnen tot afkoop van een polis. Deze worden momenteel geregistreerd in een Excel sheet zodat hier later rapportages op los gelaten kunnen worden. Omdat er een aantal velden (reden, procedure) worden gebruikt die niet in ons reguliere polissysteem verwerkt kunnen worden, is er dus gekozen voor een los sheet. Aan mij is gevraagd hier een betere oplossing voor te bedenken.

Ik heb dus gekozen voor access met een invoer formulier. Achter dit formulier zit dan een tabel MUTATIES waar alle inkomende verzoeken worden opgeslagen. Om het invoeren te vergemakkelijken heb ik er een tabel POLISSEN bijgemaakt, met daarin alle huidige polissen. Op deze manier hoeft de gebruiker alleen het polisnummer (met behulp van een keuzelijst), reden en procedure in te typen en wordt de rest van de polisgegevens (relatienummer, productnummer, etc.) dan automatisch in het formulier aangevuld via de expressies : "=[Polisnummer].[column](x)".

POLISSEN is dus een stilstaande tabel!!! Hier worden geen mutaties in gedaan, maar dient alleen ter ondersteuning.

Nadat het formulier is ingevuld, dienen de gegevens te worden opgeslagen in de tabel MUTATIES. Wat er nu gebeurt als ik op opslaan druk is dat ALLEEN de niet automatisch gevulde velden worden opgeslagen. De velden die via de expressies gevuld zijn blijven leeg.

Wat kan hier de oorzaak van zijn?



Ik heb nog even verder gegoogled en het lijkt te gaan om het feit dat ik in het besturingselement nu de expressie heb gezet, waardoor de koppeling met het database veld niet meer wordt gemaakt.

Voorbeeld:

In het Formulierveld Polisnummer staat bij rijbron nu:

SELECT Polissen.Polisnummer, Polissen.SoortPolis, Polissen.Productcode, Polissen.Maatschappijnummer, Polissen.Ingangsdatum, Polissen.Relatienummer FROM Polissen;

Nu wil ik in het Formulierveld Klant het relatienummer uit de tabel POLISSEN ophalen.
Daarvoor had ik nu de expressie : Polisnummer.column(5) in het besturingselement van Klant gezet. Dit geeft netjes het relatienummer op het formulier weer.
Maar van wat ik nu begrijp verbreek je hiermee de connectie met de tabel MUTATIES?

Waar zet je de expressie nu wel neer dan?

- In een gebeurtenis van het veld polisnummer? Zo ja, wat is de code dan?
- In een gebeurtenis van het veld klant?
 
Laatst bewerkt:
We praten inderdaad een beetje langs elkaar heen, want ik ga nu weer naar mijn eerste antwoord verwijzen, en wel hierom:
POLISSEN is dus een stilstaande tabel!!! Hier worden geen mutaties in gedaan, maar dient alleen ter ondersteuning.
En ik herhaal de vraag: waarom zou je gegevens die niet veranderen willen opslaan in een andere tabel? Als je mijn cursus (en als het om de inhoud daarvan gaat: tientallen artikelen die over normaliseren gaan) er op na leest, dan zul je weten dat je in dit geval met een één-op-veel koppeling tussen [Polissen] en [Mutaties] kunt werken. Daarbij heb je één niet-veranderende polis (overigens denk ik dat die wel verandert, want hij zal heus wel een keer aflopen, en dat lijkt mij een mutatie) en een tabel waarin je mutaties t.o.v. die polis bijhoudt, je tabel Mutaties. In die tabel heb je dus een veld PolisNummer. En een genormaliseerde database heeft daar meer dan genoeg aan, want als je alle (klant)gegevens van een specifieke of alle polissen wilt zien met hun mutaties, dan maak je een query waar alle velden in staan. In het venster <Relaties> heb je de koppeling gemaakt tussen [Polisnummer] in [Polissen] (de één kant, want [Polisnummer] is een sleutelveld) en [Polisnummer] in [Mutaties]. De laatste tabel is dan de veel kant, omdat elk polisnummer meerdere keren kan voorkomen in [Mutaties].
Daarom werkt die keuzelijst ook zo goed, omdat je met die keuzelijst de bij het polisnummer horende velden kunt laten zien. Maar opslaan in mutaties? Nergens voor nodig!
 
Omdat ik de nieuwe tabel buiten ACCESS ga gebruiken in een analyse tool.

Eigenlijk wilde ik daarbij het gebruik van de POLISSEN (grote database) omzeilen en alleen de kleine (MUTATIES) dan te laden in het externe programma.
 
Vervang 'tabel' door 'query' en je kunt exact doen wat je wilt. Het heeft (in mijn ogen) nog steeds geen zin om daar een tabel voor te misbruiken. Je verandert de gegevens in Polissen niet, gebruik dus wat je hebt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan