Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Anders (software)

simpele MS Access vraag

juul
10 antwoorden
  • Ooit kon ik redelijk goed overweg met access maar ik ben het wat verleerd.

    Ik heb een prijslijst in excel formaat. Die heb ik geimporteerd in een nieuwe tabel. De velden zijn artikelnr, omschrijving, prijs en vervangsnr. Vervangingsnr staat enkel ingevuld wanneer de prijs van het artikel 0 is. Met een querie kan ik via het artikelnr de prijs van een artikel vinden.

    Hoe kan ik zorgen dat wanneer de prijs 0 is, er automatisch een nieuwe search wordt gedaan naar het vervangingsnr? Als ik me niet vergis was dit iets met IIF of IFF, maar ik weet niet meer hoe het juist werkt en waar het moet ingegeven worden.
  • Zet in je query ipv [code:1:b6f609ba3e]prijs[/code:1:b6f609ba3e] [code:1:b6f609ba3e]Iif(prijs>0;prijs;vervangingsnr)[/code:1:b6f609ba3e]

    Letterlijk vertaald:

    Als Prijs is groter dan 0 dan prijs anders vervangingsnr


    Succes.
  • Deze tabel heb ik in de database:
    [code:1:8073d486a4]artnr omschr prijs refnr
    1111 art1 123
    2222 art2 0 4444
    3333 art3 4236
    4444 art4 325[/code:1:8073d486a4]
    Als ik met een querie zoek naar 1111 (bij criteria onder artnr [welk nummer zoek je?]) krijg ik de juiste omschrijving en de prijs.
    Wanneer ik echter zoek naar 2222, dan krijg ik 0 als prijs, omdat dit artikel niet meer bestaat en vervangen werd door 4444.

    Hoe kan ik wanneer ik 2222 intik automatisch de omschrijving en prijs van 4444 krijgen? Naar het schijnt is het mogelijk in de SQL view van de querie, maar daar heb ik geen ervaring mee.

    Dit is de SQL van mijn huidige querie:
    [code:1:8073d486a4]SELECT prstihl.artikelnr, prstihl.omschrijving, [Prijs]/100*1.21 AS Europrijs
    FROM tabel1
    WHERE (((tabel1l.artnr)=[Welk nummer zoek je?]) AND ((tabel1.omschr) Is Not Null));[/code:1:8073d486a4]
  • De SQL-view heb je dus niet nodig.
  • Tegelijkertijd gepost :D

    Je begrijpt het verkeerd, lees de uitleg van mijn 2de post nog eens.

    Jouw oplossing geeft me het vervangingsnummer i.p.v. de prijs als de prijs nul is.
  • Leuk gevonden om dat met een query te doen.
    Zelf zou ik het dmv een formulier oplossen.

    Ik heb een voorbeeldje gemaakt.
    zie: http://home.hccnet.nl/w.bauhaus/Forums.htm

    Wim
  • OK, ik had je inderdaad verkeerd begrepen.
    Ik zou het nog steeds niet met een SQL-query doen.
    Ik zou wel 2 extra gewone queries maken:

    In query1 zet ik de inhoud van de velden artikelnr en vervangingsnr

    In query2 koppel ik de tabel aan query1 vervangingsnr aan artikelnr. De join-eigenschappen zet ik zo dat alle records van query1 worden meegenomen en alleen de gekoppelde records uit de tabel. De velden: [query1].[artikelnr] en [tabel].[prijs]

    In query3 koppel ik de tabel aan query2 op artikelnr.
    Ik gebruik de velden uit de tabel muv de prijs.
    Daarin zet ik de volgende formule:
    Iif([tabel].[prijs]>0;[tabel].[prijs];[query2].[prijs])

    Succes.
  • HermanH, ik heb geprobeerd wat je uitlegde maar ik raak niet echt uit aan je zinsbouw. :-?

    Het idee van w.bauhus staat me wel aan. Maar hoe zit dat keuzeinvoer vak in elkaar??? Heb je dat stukje VB zelf geschreven, en is het dat wat voor het vervangen van het artikelnr zorgt? Graag wat meer uitleg.
  • Nog een laatste poging:

    Je hebt je tabel al. Dus daar doen we niets aan.

    [b:b3be5050fd]Query1[/b:b3be5050fd]
    Maak een nieuwe query in ontwerpweergave.
    Voeg de tabel toe en sluit het venster tabel/query toevoegen af.
    Sleep Artikelnr vanuit de tabel naar veld in de eerste kolom.
    Sleep Prijs vanuit de tabel naar veld in de tweede kolom.
    Sleep Vervangingsnr vanuit de tabel naar veld in de derde kolom.
    Sla deze query op. Ik had daarvoor de naam query1 gebruikt, maar je kunt een andere kiezen.
    Hiermee is query1 klaar.

    [b:b3be5050fd]Query2[/b:b3be5050fd]
    Maak een nieuwe query in ontwerpweergave.
    Voeg de tabel toe. Ga naar het tabblad Query en voeg query1 (of hoe jij hem genoemd heb) toe. Sluit het venster tabel/query toevoegen af.

    Sleep vanuit de tabel vervangingsnr naar artikelnr in query1. Er wordt een lijn getrokken. Dit is de join. Klik precies op die lijn, dan kan je kiezen voor join-eigenschappen.
    Je hebt 3 keuzes:
    1. Alleen die records opnemen waarvan beide gekoppelde velden gelijk zijn.
    2. Alle records opnemen van de tabel en die records van query1 waarvan het gekoppelde veld gelijk is aan het gekoppelde veld in de tabel
    3. Alle records opnemen van query1 en die records van de tabel waarvan het gekoppelde veld gelijk is aan het gekoppelde veld in query1

    Mogelijk staan bij jou optie 2 en 3 omgedraaid. Ik heb gekozen voor optie 3 zoals die bij mij vermeld is. (alleen de standaard-optie, optie 1 is fout.)

    Sleep vanuit de tabel Artikelnr naar veld in de eerste kolom. Sleep vanuit query1 Prijs naar de 2e kolom.
    Hiermee is Query2 klaar.

    [b:b3be5050fd]Query3[/b:b3be5050fd]
    Maak een nieuwe query in ontwerpweergave.
    Voeg de tabel toe. Ga naar het tabblad Query en voeg query2 (of hoe jij hem genoemd heb) toe. Sluit het venster tabel/query toevoegen af.

    Sleep vanuit de tabel Artikelnr naar Artikelnr in query1. Er wordt een lijn getrokken. Dit is de join. Klik precies op die lijn, dan kan je kiezen voor join-eigenschappen.
    Je hebt 3 keuzes:
    1. Alleen die records opnemen waarvan beide gekoppelde velden gelijk zijn.
    2. Alle records opnemen van de tabel en die records van query1 waarvan het gekoppelde veld gelijk is aan het gekoppelde veld in de tabel
    3. Alle records opnemen van query1 en die records van de tabel waarvan het gekoppelde veld gelijk is aan het gekoppelde veld in query1

    Mogelijk staan bij jou optie 2 en 3 omgedraaid. Ik heb gekozen voor optie 2 zoals die bij mij vermeld is. (alleen de standaard-optie, optie 1 is fout.)

    Sleep vanuit de tabel Artikelnr naar de eerste kolom achter veld.
    Klik in de tweede kolom op de eerste regel.
    Kies voor de wizard (je weet wel, dat icoon dat een toverstokje moet voorstellen)
    Je krijgt nu een invulscherm, met daaronder een reeks dingen die je op kunt nemen.
    Tik in het invulscherm in:
    [code:1:b3be5050fd]Iif([/code:1:b3be5050fd]
    Dubbelklik op het woord Tabel in het scherm Links-onder. Je ziet dan alle tabelen uit je database onder het Woord Tabel.
    Klik op de tabel die we hierboven genoemd hebben.
    In de kolom rechts daarvan zie je de veldnamen verschijnen. Dubbelklik op Prijs.
    In het invulscherm staat nu:
    [code:1:b3be5050fd]Iif([tabel].[Prijs][/code:1:b3be5050fd]
    Als er meer staat moet je overige zaken weghalen.
    Type achter deze regel ">0;"
    Nu staat er:
    [code:1:b3be5050fd]Iif([Tabel].[Prijs]>0;[/code:1:b3be5050fd]
    Dubbel-klik weer op Prijs.
    Nu moet er staan:
    [code:1:b3be5050fd]Iif([Tabel].[Prijs]>0;Tabel].[Prijs][/code:1:b3be5050fd]
    Waarschijnlijk staat er echter meer. Corrigeer dat.
    Typ dan achter deze regel een";".
    Dan staat er:
    [code:1:b3be5050fd]Iif([Tabel].[Prijs]>0;Tabel].[Prijs];[/code:1:b3be5050fd]
    Ga weer naar het scherm rechtsonder. Schuif eventueel met de scroll-balk totdat je het woord Query ziet staan.
    Dubbel-klik op het woord Query.
    Je ziet onder het woord Query een lijst van al je queries.
    Klik op Query2.
    Je ziet rechts daarvan de veldnamen die in Query2 staan.
    Dubbelklik op Prijs.
    Nu moet er staan:
    [code:1:b3be5050fd]Iif([Tabel].[Prijs]>0;Tabel].[Prijs];[Query2].[Prijs][/code:1:b3be5050fd]
    Waarschijnlijk staat er echter meer. Corrigeer dat.
    Typ dan achter deze regel een")".
    [code:1:b3be5050fd]Iif([Tabel].[Prijs]>0;Tabel].[Prijs];[Query2].[Prijs])[/code:1:b3be5050fd]
    Ga naar het begin van deze regel en typ in: "Prijs:"
    Er staat dan:
    [code:1:b3be5050fd]Prijs:Iif([Tabel].[Prijs]>0;Tabel].[Prijs];[Query2].[Prijs])[/code:1:b3be5050fd]
    Sluit nu dit scherm af

    Sla deze query op.

    Wat levert deze excersitie op:
    Uitgaande van de volgende tabel:
    [code:1:b3be5050fd]Artikelnr Prijs Vervangingsnr
    1 6
    2 0 4
    3 0 1
    4 7
    5 8
    6 0 1[/code:1:b3be5050fd]

    Het resultaat van Query1:
    [code:1:b3be5050fd]Artikelnr Prijs Vervangingsnr
    1 6
    2 0 4
    3 0 1
    4 7
    5 8
    6 0 1[/code:1:b3be5050fd]

    Het resultaat van Query2:
    [code:1:b3be5050fd]Artikelnr Vervangingsnr
    1
    2 7
    3 6
    4
    5
    6 6[/code:1:b3be5050fd]

    Het resultaat van Query3:
    [code:1:b3be5050fd]Artikelnr Prijs Vervangingsnr
    1 6
    2 7 4
    3 6 1
    4 7
    5 8
    6 6 1[/code:1:b3be5050fd]

    Als ik het nu goed begrepen heb is dit wat je zocht.
  • Het keuzevak heb ik met de wizzard gemaakt.
    Deze maakt dan al een stuk VBA.
    Die heb ik toen wat aangepast.
    Dat vereist een basiskennis programeren.
    Zie helpfile's en voorbeelden VBA.

    Wim

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.