Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 12 van 12

Onderwerp: Toevoegquery enkel nieuwe gegevens toevoegen

  1. #1
    Junior Member
    Geregistreerd
    17 april 2018
    Vraag is niet opgelost

    Toevoegquery enkel nieuwe gegevens toevoegen

    Beste forumleden,

    Ik ben al een paar dagen aan het knoeien met een toevoegquery die uit verschillende tabellen gegevens combineert om er een nieuwe tabel van te maken.
    Maar er komen in de eerste tabellen gegevens bij, deze moeten dus ook aan de tabel toegevoegd worden, maar enkel de nieuwe gegevens dus.
    En daar loop ik telkens vast dat hij alles terug invoegt wat niet de bedoeling is.
    Het zou ergens moeten lukken met in de SQL iets aan te passen, maar kan het zo niet direct vinden.
    Hieronder mijn SQL Code:

    INSERT INTO Tbl_VerdelingPlanAdressen ( DossierID, AdresId, Aantal )
    SELECT Tbl_Dossiers.DossierID, Tbl_VastAdressen.AdresId, Tbl_Verdeellijst.Aantal
    FROM (Tbl_VastPlan INNER JOIN Tbl_Dossiers ON Tbl_VastPlan.PlanNr = Tbl_Dossiers.PlanNr) INNER JOIN (Tbl_VastAdressen INNER JOIN Tbl_Verdeellijst ON Tbl_VastAdressen.AdresId = Tbl_Verdeellijst.DienstNaam) ON Tbl_VastPlan.PlanNr = Tbl_Verdeellijst.PlanNr
    ORDER BY Tbl_Dossiers.DossierID, Tbl_VastAdressen.AdresId;

    Kan er iemand mij hierbij helpen, hebben jullie meer gegevens nodig?
    Laat maar weten!
    In bijlage ook nog mijn ontwerpweergave.

    Edit: nog vergeten te zeggen dat er geen unieke gegevens zijn. Per dossier kunnen er wel geen zelfde adressen terugkomen, maar in ander dossier kunnen die wel terugkomen.
    Zie Klik op afbeelding voor grotere versie

Naam:  Toevoegquery2Forum.PNG
Bekeken: 7
Grootte:  16,1 KB


    Alvast bedankt!

    Webster23
    Bijgevoegde kleine afbeeldingen Bijgevoegde kleine afbeeldingen Klik op afbeelding voor grotere versie

Naam:  ToevoegqueryForum.PNG‎
Bekeken: 7
Grootte:  58,2 KB  
    Laatst aangepast door Webster23 : 17 april 2018 om 12:35

  2. #2
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Ik zie geen bijlage, alleen plaatjes. Of is dat wat je bedoelt met bijlage? Leg eens uit welke tabel dan de nieuwe records bevat, want ik snap je probleem wel, maar ik zie niet waar dat ontstaat. Wil je voorkomen dat de combinatie van de velden niet mogelijk is als het record al bestaat? Of gaat het om de records uit een specifieke tabel?
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  3. #3
    Junior Member
    Geregistreerd
    17 april 2018
    Hoi OctaFish,

    Bedankt voor de snelle reactie!
    Ik zal men database misschien toevoegen, is het duidelijker.Verdeling Manuals & ProtocolsV0.4.accdb.zip

    En nog een woordje uitleg...

    Tbl_VastPlan: tabel van de plannen die we gebruiken
    Tbl_VastAdressen: tabel van de diensten naar waar we de plannen dienen op te sturen
    Tbl_Verdeellijst: tabel van hoeveelheid plannen en welke plannen er naar welke dienst gestuurd dienen te worden
    Tbl_Dossiers: om de zoveel tijd kunnen er plannen aangepast worden, deze krijgen dan versienummers en datum wanneer ze in voege gaan, dit zet ik dan in een dossier met een dossiernummer en is gebasseerd op Tbl_VastPlan.

    Tot zover geen probleem, maar nu wil ik een tabel maken (Tbl_VerdelingPlanAdressen), deze gegevens komen uit de toevoegquery Qry_VerdelingPlanAdressen.
    Dus per dossier dienen de plannen via de verdeellijst naar verschillende diensten opgestuurd te worden, als ik de eerste keer de toevoegquery uitvoer is er geen probleem, maar de volgende keer als ik uitvoer komen de eerste dossiernummers ook bij in de Tbl_VerdelingPlanAdressen, en dit is niet de bedoeling, het zou enkel maar de nieuwste gegevens mogen zijn.

    Eigenlijk is het moeilijker uitgelegd dan het is, maar weet niet goed hoe ik het anders moest doen

    Bedankt!

  4. #4
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Quote Origineel gepost door Webster23 Bekijk Bericht
    Tbl_Dossiers: om de zoveel tijd kunnen er plannen aangepast worden, deze krijgen dan versienummers en datum wanneer ze in voege gaan, dit zet ik dan in een dossier met een dossiernummer en is gebasseerd op Tbl_VastPlan. Tot zover geen probleem
    Ik snap niet zoveel van je db, en de gegevens die je opslaat, en wellicht hoeft dat ook niet, maar toch even een vraagje over bovengaande zin. Je hebt zowel in de tabel [Tbl_Dossiers] als in de tabel [Tbl_VastPlan] een veld [Specialiteit] zitten, en dat veld moet m.i. in in ieder geval één tabel weg. [Specialiteit] is ofwel een eigenschap van een vastplan, ofwel een eigenschap van een dossier. In het eerste geval zal het veld in dossier nooit veranderen, in het andere geval kan het gedurende het werken met de dossiers wél veranderen, en dan is het dus geen status van het vastplan. Door het dubbel in te voeren vergroot je de kans op fouten, en heb je sowieso nodeloze dataredundantie (voor zover dataredundantie niet altijd nodeloos is natuurlijk). Daarnaast zie ik in Dossiers dat de versienummers niet logisch oplopen, wat ik wel zou verwachten. Als ik naar Plannr "SBP FLV" kijk, lopen de versienummers als volgt: 42-43-20. Dat is niet echt logisch. Dat kan natuurlijk met een testversie te maken hebben, maar toch.

    Of het moeilijker uitgelegd is dan het is weet ik nog niet, want echt snappen doe ik het niet . Ik zie in de tabel Dossiers maar één uniek veld, en dat is het DossierID. Een nieuw dossier is dus, als dat het criterium is, te filteren op basis van het niet-aaanwezig zijn van de dossierID's in de tabel [Tbl_VerdelingPlanAdressen]. Wat mij ook verbaast is dat het veld [DossierID] in [Tbl_Dossiers] numeriek is, en in [Tbl_VerdelingPlanAdressen] tekst. Dat kan natuurlijk niet, een getalveld moet een getalveld blijven.

    Ik heb eerst een testje gedaan met een aantal dossiers, omdat ik niet in één keer alle dossiers wilde toevoegen. In de bijlage vind je nu 3 queries waarmee je kan spelen.
    1. Qry_VerdelingPlanAdressen_0 maakt de tabel leeg
    2. Qry_VerdelingPlanAdressen_1 vult de tabel met dossiers t/m dossier 10
    3. Qry_VerdelingPlanAdressen_2 vult de tabel met 'nieuwe' dossiers (nummers hoger dan 10).

    De derde query kun je dus gebruiken om de nieuwe dossiernummers toe te voegen. Overigens heb ik in je voorbeeldje wat aanpassingen gedaan, zodat a) de relaties weer kloppen en b) alle keuzelijsten in je tabellen er uit zijn. Dat laatste moet je in mijn ogen dus nooit doen; in een tabel horen geen keuzelijsten (op basis van tabellen) te staan.
    Attached Files Attached Files
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  5. #5
    Junior Member
    Geregistreerd
    17 april 2018
    Quote Origineel gepost door OctaFish Bekijk Bericht
    Je hebt zowel in de tabel [Tbl_Dossiers] als in de tabel [Tbl_VastPlan] een veld [Specialiteit] zitten, en dat veld moet m.i. in in ieder geval één tabel weg. [Specialiteit] is ofwel een eigenschap van een vastplan, ofwel een eigenschap van een dossier. In het eerste geval zal het veld in dossier nooit veranderen, in het andere geval kan het gedurende het werken met de dossiers wél veranderen, en dan is het dus geen status van het vastplan. Door het dubbel in te voeren vergroot je de kans op fouten, en heb je sowieso nodeloze dataredundantie (voor zover dataredundantie niet altijd nodeloos is natuurlijk).
    Is inderdaad een eigenschap van vastplan. Maar omdat ik in het formulier om Dossiers aan te maken, met "Keuzelijst met invoervak" werkte om de lijst van PlanNr de beperken stond dit erbij, kan ik dit anders oplossen? Of hoe moet ik die keuzelijsten invoeren?

    Quote Origineel gepost door OctaFish Bekijk Bericht
    Daarnaast zie ik in Dossiers dat de versienummers niet logisch oplopen, wat ik wel zou verwachten. Als ik naar Plannr "SBP FLV" kijk, lopen de versienummers als volgt: 42-43-20. Dat is niet echt logisch. Dat kan natuurlijk met een testversie te maken hebben, maar toch.
    Komt inderdaad door testversie, normaal lopen die logisch op.

    Quote Origineel gepost door OctaFish Bekijk Bericht
    Wat mij ook verbaast is dat het veld [DossierID] in [Tbl_Dossiers] numeriek is, en in [Tbl_VerdelingPlanAdressen] tekst. Dat kan natuurlijk niet, een getalveld moet een getalveld blijven.
    Moet ik de velden AdresID en Aantal ook veranderen in numeriek?

    Quote Origineel gepost door OctaFish Bekijk Bericht
    Ik heb eerst een testje gedaan met een aantal dossiers, omdat ik niet in één keer alle dossiers wilde toevoegen. In de bijlage vind je nu 3 queries waarmee je kan spelen.
    1. Qry_VerdelingPlanAdressen_0 maakt de tabel leeg
    2. Qry_VerdelingPlanAdressen_1 vult de tabel met dossiers t/m dossier 10
    3. Qry_VerdelingPlanAdressen_2 vult de tabel met 'nieuwe' dossiers (nummers hoger dan 10).

    De derde query kun je dus gebruiken om de nieuwe dossiernummers toe te voegen.
    De derde query werkt idd uitstekend! Dat was wat ik zocht, enkel de nieuwe dossiers toevoegen.
    Eerste kan ik niet gebruiken omdat ik tabel altijd moet bijhouden...

    Quote Origineel gepost door OctaFish Bekijk Bericht
    b) alle keuzelijsten in je tabellen er uit zijn. Dat laatste moet je in mijn ogen dus nooit doen; in een tabel horen geen keuzelijsten (op basis van tabellen) te staan.
    Dan zit er ergens iets mis in mijn denkwijze om in een formulier keuzelijsten in te voeren, die tot doel hebben een tabel aan te vullen.
    Hoe zit dit dan?

    Alvast hartelijk bedankt!

  6. #6
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Quote Origineel gepost door Webster23 Bekijk Bericht
    Dan zit er ergens iets mis in mijn denkwijze om in een formulier keuzelijsten in te voeren, die tot doel hebben een tabel aan te vullen. Hoe zit dit dan?
    Je denkwijze die je híer etaleert klopt als een bus. Keuzelijsten horen in mijn optiek thuis op formulieren, nergens anders. Daarbij kun je in de keuzelijst meerdere velden tonen om de selectie makkelijker te maken, maar de overige waarden uit die keuzelijst sla je dus níet op in de tabel. Vanwege de dataredundantie. Enige uitzondering: gegevens die variabel zijn. Denk aan artikelprijzen, die nog wel eens veranderen. Met alleen een verwijzing naar het ArtikelID kun je de prijs wel ophalen uit de tabel Artikelen, maar je krijgt dan altijd de actuele prijs, niet de prijs op het moment van de transactie. Dus in dat geval sla je de prijs wél op in de gekoppelde tabel. In een tabel horen geen keuzelijsten, omdat je in de tabel altijd moet kunnen zien wat er daadwerkelijk is opgeslagen. Met een keuzelijst zie je doorgaans een naam, en sla je een ID op.

    Quote Origineel gepost door Webster23 Bekijk Bericht
    Maar omdat ik in het formulier om Dossiers aan te maken, met "Keuzelijst met invoervak" werkte om de lijst van PlanNr de beperken stond dit erbij, kan ik dit anders oplossen?
    Dat verklaart nog niet waarom je in de tabel [tbl_Dossiers] óók dat veld hebt staan. Zie uitleg hierboven wat betreft de keuzelijsten en variabele velden.

    Quote Origineel gepost door Webster23 Bekijk Bericht
    Moet ik de velden AdresID en Aantal ook veranderen in numeriek?
    Overal waar je identieke velden gebruikt, die aan elkaar gekoppeld kunnen zijn, moeten de gegevenstypen ook hetzelfde zijn. Dus getalvelden matchen met getalvelden, en tekstvelden met tekstvelden.

    Quote Origineel gepost door Webster23 Bekijk Bericht
    De derde query werkt idd uitstekend! Dat was wat ik zocht, enkel de nieuwe dossiers toevoegen. Eerste kan ik niet gebruiken omdat ik tabel altijd moet bijhouden...
    De eerste query (en de tweede dus ook) zijn alleen bedoeld om de werking van de derde query te demonstreren. Als je namelijk een toevoegquery draait met alle gegevens, geberut er daarna niet zoveel meer. Daarom maak ik dus eerst de tabel leeg, vul hem met de tweede query voor een deel, en gebruik de derde query om het gewenste effect te laten zien. En dat kan je dan een paar keer uittesten door weer overnieuw te beginnen .
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  7. #7
    Junior Member
    Geregistreerd
    17 april 2018
    Quote Origineel gepost door OctaFish Bekijk Bericht
    Dat verklaart nog niet waarom je in de tabel [tbl_Dossiers] óók dat veld hebt staan. Zie uitleg hierboven wat betreft de keuzelijsten en variabele velden.
    Kan je in een formulier via die specialiteit de keuzelijst verkleinen in PlanNr? Zonder specialiteit ook als veld staan te hebben? Had veld specialiteit eens weg gedaan en toen werkte het niet meer.


    In formulier dossiers zouden ook twee keer Username moeten geselecteerd kunnen worden, één keer als mail ontvangen is en één keer als plan ontvangen is. U had in de relaties 1 weggedaan, is dit gewoon terug toe te voegen?
    Of is er een andere oplossing voor?

    Bedankt!

  8. #8
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Er is geen enkele noodzaak om die relatie überhaupt te leggen, laat staan twee keer. Relaties zijn bedoeld om in gekoppelde tabellen af te dwingen dat er geen ‘weduwen en wezen’ ontstaan. Dat je dus in de tabel [Verkopen] records hebt van niet-bestaande klanten. Keuzelijsten gebruik je op een formulier om specifieke gegevens in te vullen in een tabel, zoals in jouw geval medewerkers die ofwel een mailactie hebben uitgevoerd, ofwel een plan hebben ontvangen. Daarvoor gebruik je een keuzelijst, die is gebaseerd op de tabel [Medewerkers]. Het feit dat die medewerkers in de keuzelijst voorkomen betekent automatisch dat die personen zijn ingevoerd; je kunt immers geen personen kiezen die niet in de tabel staan. Door dus keuzelijsten te gebruiken op je formulier, heb je al de garantie dat die personen bestaan. Relaties maken die zekerheid, die dus al 100% is, niet groter of kleiner. Vandaar dat die relaties echt wel weg kunnen. Of je dat proces zo moet vastleggen is een heel andere vraag, maar daar gaat het hier niet om.

    Je eerste vraag snap ik niet helemaal; wil je de keuzelijst kunnen filteren?
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  9. #9
    Junior Member
    Geregistreerd
    17 april 2018
    Nu kan ik idd beter volgen, ga ik een beetje oefenen met die namen van medewerkers in mijn formulier te krijgen.
    En anders kom ik hier nog wel eens vragen als we vastlopen


    Quote Origineel gepost door OctaFish Bekijk Bericht
    Je eerste vraag snap ik niet helemaal; wil je de keuzelijst kunnen filteren?
    Er zijn voorlopig (komen er nog bij) 4 soorten plannen, SBP, SIP, SSP en MAN , die zijj nog onderverdeeld in verschillende zones vb SBP FLV, SBP FN,...
    En om niet in de grote lijst met de zones te moeten zoeken had ik eerst op SBP, SIP,... gefilterd om in tweede keuzelijst minder opties te hebben.
    Kan dit dan ook anders dan dit ook in de tabel te laten komen?

  10. #10
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Dat moet je natuurlijk niet vanuit de tabel doen, maar vanuit een extra keuzelijst. Nogmaals: waarden dubbel opslaan doe je normaal gesproken niet. Dus in dit geval maak je een niet-afhankelijke keuzelijst met de plansoorten en die gebruik je vervolgens als filter om de tweede lijst samen te stellen. Daar zijn verschillende manieren voor, waarvan de makkelijkste bijna geen code nodig heeft; één regel om de tweede keuzelijst bij te werken (Me.TweedeKeuzelijst.Requery). En die actie hang je aan de gebeurtenis <Bij klikken> van de eerste keuzelijst (die met de plannen) zodat bij een klik op een type (SBP) de tweede wordt bijgewerkt.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  11. #11
    Junior Member
    Geregistreerd
    17 april 2018
    Blijkbaar was mijn cursus Access toch maar heel basis.
    Ik kan nog volgen met het maken van niet-afhankelijke keuzelijst, en dan ook nog waar ik die code moet ingeven.
    Maar dan geeft hij foutmelding over die Me, of moet ik daar ook nog iets aan veranderen? Shoot me...

    Heb dankzij u wel al meer inzicht gekregen in hoe tabels best opgebouwd worden.
    Ik was ook meer vanuit een oplossing aan het terugwerken, maar blijkbaar is dat niet de goede weg...

  12. #12
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Ik ga er vanuit dat je de keuzelijsten op een formulier gebruikt en niet vanuit een tabel. Met Me. verwijs je naar een object op het actieve formulier, dus als de naam van het object klopt, dan moet de code ook werken. Je krijgt sowieso als je dit typt dankzij de IntelliSense een lijst met objecten die aan de beginletters voldoen, zodat je het juiste object (=keuzelijst) makkelijk kan vinden.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Aanbiedingen