Zoeken op meerdere velden in een formulier

Status
Niet open voor verdere reacties.

freewilly1

Gebruiker
Lid geworden
23 aug 2004
Berichten
124
Heb een formulier gekoppeld aan een tabel met daarin meerdere velden, wil nu zoeken op meerdere velden en deze gegevens weergeven in detailweergave van het formulier, op 1 veld zoeken heb ik geen probleem, maar na eerste opzoekveld een tweede en indien nodig een derde en daarvan het resultaat weergeven, dit is mijn eerste probleem, ten tweede, wil nu het resultaat die weergegeven wordt aanvullen en deze data(record) opslaan in een nieuwe tabel, eigenlijk wil ik gegevens uit een tabel gedeeltelijk gebruiken om alles niet te moeten intikken(gaat hier over een orderboek met veel gegevens) om dit vervolgens aan te vullen via een formulier.
hopelijk ben ik duidelijk genoeg
dank bij voorbaat
 
Waarom wil je reeds bestaande gegevens opslaan in een nieuwe tabel? En in hoeverre heb je de verschillende keuzelijsten al kunnen koppelen aan elkaar? Ik heb gisteren nog een voorbeeldje gepost met o.a. keuzelijsten die afhankelijk zijn van elkaar:
Keuzelijst met meerdere keuzes
 
Hallo, moet een lijst opstellen(planning) met zaken die moeten gebeuren, data (orderboek) heb ik, maar wil enkel de orders die ik nodig heb opslaan in een nieuwe tabel, omdat dit gemakkelijker werken is, en moet voor iedereen raadpleegbaar zijn, en om niet alles te hoeven overtikken wil ik die data met verschillende invoervakken alle gegevens die bij die record horen opslaan, dus bijv klant intikken, vervolgens order, mag dan naturlijk enkel de orders te zien krijgen waarvoor in het eerste veld de klant geselecteerd is, maar zal eens naar het voorbeeld zien
 
Je geeft zelf eigenlijk al de reden aan dat je de verkeerde afslag hebt genomen:
omdat dit gemakkelijker werken is, en moet voor iedereen raadpleegbaar zijn, en om niet alles te hoeven overtikken
Niemand hier op het forum zal je een oplossing aandragen waarbij gegevens moeten worden overgetikt... Wel zal iedereen zeggen, dat je moet voorkomen dat je allerlei gegevens die je al hebt, nog een keer gaat opslaan in een andere tabel. Want wat doe je op het moment dat (een deel van) de gegevens veranderen? Dan moet je dat in twee tabellen gaan wijzigen. Dat wil je echt niet in je systeem inbouwen...
Wat je waarschijnlijk wilt, en waar je nu tegenaan loopt, is dat je in je huidige tabel geen onderscheid ziet tussen de verschillende orders. Dat is simpel op te lossen door een veld <Status> (ik noem maar wat) toe te voegen, waarin je bijhoudt in welk deel van het proces een order zich bevindt. Op die manier kun je nog steeds prachtige overzichten maken, want die zijn dan gebaseerd op een bepaalde waarde in het veld Status, en voor mutaties hoef je maar één gegeven te veranderen; plus natuurlijk wat er nog meer bij komt kijken.
Ook houd je de db op deze manier (relatief) klein, en onderhoudbaar.

Kortom: kijk eerst eens naar het normaliseren van je database, voordat je besluit om je probleem met extra tabellen op te lossen, want uiteindelijk maak je het probleem alleen maar groter, en uiteindelijk onbeheersbaar.
 
Ja, ik begrijp dit wel, maar feit is dat die gegevens uit een mainframe komt en 2 x per dag upgedate wordt, is gekoppeld aan een access waarin ik alle gegevens opslag(verschillende tabellen) deze tabellen worden 2 maal per dag leeggemaakt en voorzien van de nieuwe gegevens, mijn access waar ik in werk is gekoppeld aan deze access, vandaar mijn nieuwe tabel met daarin enkel de zaken die ik extra moet opvolgen (problemen, vb te late leveringen) als ik een extra veld toevoeg, en ondertussen verdwijnt deze record uit de mainframe(als bestelling gefactureerd is) dan is deze ook verdwenen uit mijn database, vandaar mijn doel om een nieuwe tabel te maken, in de oorspronkelijke tabel zitten meer dan 5000 records
 
Dat werpt een iets ander licht op de procedure, want we wisten uiteraard niet dat je gegevensbron eigenlijk geen gegevensbron is... Dan gaan we weer terug naar de vraag! Wat is dus het probleem? Als ik het zo teruglees, kun je met een Tabelmaak query de eerste importtabel maken, en vervolgens met een Toevoegquery aanvullen met nieuwe records. Met een Update query kun je dan gegevens muteren/veranderen.

Wat je in eerste instantie nodig hebt, is dus een Tabelmaakquery. Hiermee maak je een tabel aan op basis van de eerste selectie. Ik zou vervolgens alle veldeigenschappen nalopen/aanpassen, omdat die niet altijd goed staan. Ook kun je dan extra velden toevoegen, als dat nodig is.
Vervolgens maak je een kopie van de tabelmaakquery, en maak je daar een Toevoegquery van. Deze koppel je uiteraard aan de nieuwe tabel die je eerder hebt gemaakt. Als het goed is, kun je alle velden dan gelijk op de juiste manier koppelen aan de velden van de nieuwe tabel. Mocht dat nodig zijn, dan kun je nog een selectiecriterium op het sleutelveld zetten, om te voorkomen dat je een record uit de brontabel twee keer importeert, want dat zal uiteraard niet de bedoeling zijn.
Denk ik in de goede richting?
 
Hallo, mijn tabel heb ik al, eveneens mijn formulier,
1: mijn tabel bevat velden van mijn externe gegevens + extra velden (extra input)
2: wil niet alle externe gegev toevoegen in mijn tabel, maar enkel degene die ik via meerdere keuzelijsten selecteer, daar wringt het schoentje, 1 keuzelijst toevoegen in tabel kan ik, maar in elkaar geneste, voorwaarde1 gevolgd door voorwaarde 2 enz lukt me niet
3: na keuzelijst moet de rest van de geslecteerde record(overblijvende velden) automatisch aangevuld worden via mijn formulier
zal hier dus telkens gaan om 1 record te selecteren en toe te voegen, per selectie

hopelijk wordt mijn vraag hiermee duidelijker
 
It is indeed....
Keuzelijsten die afhankelijk van elkaar zijn, moet je via VBA aansturen. Althans, dat vind ik... Je kunt vermoedelijk ook wel met bronverwijzingen iets doen, maar je moet zowiezo de keuzelijst een Refresh geven, dus dan kun je net zo goed de hele handel via VBA regelen.
En wel dit:
Je hebt op je formulier een aantal keuzelijsten staan. Die hebben normaal gesproken een Rijbron, waarin je alle records ziet van die rijbron. Via een keuzelijst maak je een eerste selectie. Dan zou de tweede keuzelijst de records uit zijn eigen rijbron moeten zien die voldoen aan de keuze uit de eerste keuzelijst. Je zult de rijbron van de tweede keuzelijst dus opnieuw moeten opbouwen.
In wezen gebruik je hiervoor dezelfde rijbron, maar met een WHERE uitbreiding. Met deze filtering heb je minder records in de rijbron. Nu nog een commando Me.cboKeuze2.Requery er overheen, en je tweede lijst is bijgewerkt.
En zo verder.
 
Bedankt, zal eens aan de slag gaan, heb 10 jaar terug eens een snelcursus vba gevolgd, eens zien of ik er nog iets van herinner
 
In deze db zitten wat voorbeelden ter inspiratie...
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan