Toevoeg query

Status
Niet open voor verdere reacties.

spw

Gebruiker
Lid geworden
18 nov 2016
Berichten
83
Hoi,


Ik heb een toevoeg query gemaakt in Access.

Wanneer men op een knop druk wordt er in verschillende tabellen gekeken of er records moeten toegevoegd worden aan één tabel.
Maar wanneer een "leveranciernummer" al bestaat dan moet het record niet worden toegevoegd.
(leveranciernummer is een voorbeeld. Het gaat om het principe.)

Om te kijken of het leveranciernummer als bestaat gebruik ik deze code.
Code:
Not In (select [leveranciernummer] from tabelnaam)
Dat werkt goed.

Wat ik eigenlijk wil dat als maar een gedeelte van het leveranciernummer bestaat dat het record dan ook niet moet toegevoegd worden.
Hetzelfde principe als
Code:
like "*" &  [leveranciernummer] & "*

Dit omdat een leverancier meerdere nummers kan hebben.
Vb leverancier X heeft nummer 15 en 15a ed

Dus als *15* al bestaat dan niet toevoegen aan de tabel.

Alvast bedankt
 
Laatst bewerkt:
Kan (bijv.) getal 15 exclusief aan een leverancier toegekend worden waar dat getal dan ook maar voorkomt in leverancierscode?
Dus er bestaat niet (en gaat nooit bestaan) een (andere/nieuwe) leverancier met nummer 215 of 159 als er al een leverancier bestaat die 15 *ergens* in zijn leverancierscode heeft?
Want je *15* verhaal geeft dat aan...

Je logica klopt ook niet: "Als maar een gedeelte van het leveranciersnummer bestaat" is in tegenspraak met
Code:
like "*" & [Leveranciersnummer] & "*"
want dat betekent dat Leveranciersnummer in zijn geheel moet voorkomen (met iets (of niets) ervoor en met iets (of niets) er achter).

In eerste instantie dacht ik aan de SUBSTRING functie, maar gegeven wat ik hier boven schreef kan ik er niet (eens) een voorbeeld bij maken zonder verdere toelichting/uitleg/betere voorbeelden van jouw kant.

Tijs.
 
Dit omdat een leverancier meerdere nummers kan hebben.
Dit is natuurlijk vrágen om (hele grote) ellende. Elke leverancier zou in beginsel één unieke code moeten hebben. Daarnaast kan ik mij best voorstellen dat je met onderleveranciers of filialen o.i.d. werkt, waarbij je per leverancier meerdere subleveranciers hebt, maar ook dié zouden een uniek nummer moeten hebben, met een verwijzing naar de hoger gelegen leverancier. Zodat jouw probleem dan ineens niet meer bestaat, omdat je dan kunt checken op hoofdnummer of (bij filialen) op ParentID. En die is dus ook uniek en wijst naar één bedrijf.
Maar laat je db maar zien, zou ik zeggen, wellicht dat er wél logica in jouw opzet zit die wij nog niet zien.
 
Ja, ik snap dat de vraag niet 'in detail' is maar als je alles moet neerschrijven dan ....... ?
Daarom ook ..... als voorbeeld.
Laat ons zeggen van ipv leveranciernummer een factuurnummer.
Dus de tabel wordt opgevuld als factuurnummer nog niet bestaat.
De gebruiker heeft een formulier, en niet dieper nadenken, waar ze twee factuurnummers kan samenvoegen.
Maw met copy/past in het factuurveld maakt ze vb factuurnummer 1 en 2 een samengevoegd factuurnummer nl 1/2.
En op het formulier is een 'recordverwijder' knop. Dus je ziet record voor factuurnummer 1/2 (en niet meer 1 en 2)
Als je dan weer gaat importeren worden 1 en 2 geïmporteerd omdat deze niet bestaan. Maar je hebt wel een record 1/2.
Daarom de vraag : kijken in veld als 1 of 2 bestaat (en het factuurnummer is ingewikkelder als 1 en 2. vb 1383294382) dan niet importeren.
Bestaat er een dergelijke functie ?
 
Laatst bewerkt:
Ja, ik snap dat de vraag niet 'in detail' is maar als je alles moet neerschrijven dan ....... ?
Ja, als je vraag niet duidelijk is. Voor jou is het probleem helder, maar wij hebben niks, dan datgene wat jij ons aanbiedt. En op basis daarvan moeten wij dus een oordeel kunnen vellen. En dat kan nu dus niet. Kijk bijvoorbeeld wat je nu schrijft:

Maw met copy/past in het factuurveld maakt ze vb factuurnummer 1 en 2 een samengevoegd factuurnummer nl 1/2.
Dat is een heel andere vraag dan je oorspronkelijke... En had je dat in het begin gelijk uitgelegd, dan had je een ander antwoord gekregen om te beginnen. Je hebt het dus over een nieuw nummer, dat is opgebouwd uit twee of meer complete andere nummers. En dat is wél mogelijk, zij het met een functie, niet in een query. Je zou dan een functie moeten maken die vanuit de samengestelde string naar de tabel met factuurnummers kijkt op basis van het scheidingsteken. Dus als je factuurnummers combineert, bijvoorbeeld de facturen 2017004 en 2017007 tot 2017004/2017007, dan splitst de functie de string (met SPLIT) en controleert vervolgens in een lus of de nummers al bestaan. Zo ja, dan de boolean op True als uitkomst (niet importeren) en bij nee natuurlijk False, en wel importeren.

Maar jij gaat nu zeggen dat dit óók maar een voorbeeld is, en dat je nog veel meer àndere combinaties kan krijgen...
 
Ik heb al gemerkt dat jullie 'specialisten' zijn en verder nadenken dat de vraag.
Ik ben maar een 'beginner'.
Daarom dat ik, in mijn ogen, een simpele vraag stel maar dan blijkt dat hier meer achter zit.
Sorry hiervoor.
Misschien dat ik in de tweede post het beter heb uitgelegd maar dat is wat er gebeurd.
En wat jij omschrijft zo de oplossing kunnen zijn.
Maar nu de oplossing ? :)
Hoe kan ik kijken bij een toevoeg query en een split en ..... pfff dat gaat mijn petje te boven.

Op welke manier kan ik bij een toevoeg query een split maken .... checken .... ed
Een voordeel zijn max 30 records die per dag moeten toegevoegd worden.
Per dag wordt de tabel leeggemaakt.
Maw performantie ed is hier niet het probleem.

Alvast bedankt.
 
Laatst bewerkt:
Je leert al vrij snel om altijd de vraag achter de vraag te zoeken. Zeker bij HelpMij, waar ik heel vaak vragen zie van mensen die denken dat ze op de goede weg zijn, ergens niet uitkomen en dan op dat specifieke stukje hun vraag stellen. Bij doorvragen blijkt dan vaak dat ze al in een veel eerder stadium een fout hebben gemaakt, en uiteraard geef ik dan altijd oplossingen die het grote probleem aanpakken, nooit de noodoplossing. Een Quick-and-Dirty oplossing is alleen interessant als het grotere probleem niet gelijk op is te lossen.

Maar je hebt mijn antwoord dus niet helemaal begrepen, want je hebt een extra functie nodig die je dan wel in de query kan aanroepen in een extra veld, en die een TRUE of FALSE oplevert. Je filtert dat veld dan op TRUE of FALSE, afhankelijk uiteraard van hoe je de uitkomst genereert. In die functie heb je een parameter, dat is het samengestelde factuurnummer, met dus het gewenste scheidingsteken. Dat zou ik zelf dan nog flexibel houden, zodat je de functie voor meerdere combinaties kan gebruiken (één teken uiteraard per nummer, anders wordt het een zooitje).
Omdat ik dit soort dingen zelf nooit zo zou doen, heb ik hier uiteraard geen voorbeeld van, en je snapt dat ik liever tijd steek in het maken van de functie, dan in het maken van tabellen en het inkloppen van een paar records. Dat mag jij doen. Kortom: kom met een voorbeeld bestand, en je krijgt van ons (mij vermoedelijk ;) ) een functie.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan