Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb twee query's met in de eerste query (naam beginvoorraad) de velden : datum, periode, aantal beginvoorraad, artikel; en in de tweede query (naam levering) de velden : datum, periode, aantal geleverd, artikel, bonnummer, naam klant.
Als ik nu een rapport maak van deze twee query's samen, om zo een overzicht te krijgen van de totale voorraad (=beginvoorraad en plus of minus aantal geleverd), krijg ik enkel de artikels te zien die én een aantal beginvoorraad én een aantal geleverd hebben. Dus de artikels waarvan "aantal beginvoorraad" niet ingevuld is
(beginvoorraad is nul) of waarbij "aantal geleverd" niet ingevuld is (werden niet verkocht of geleverd) komen niet voor in het rapport. Deze velden zouden echter moeten voorkomen in het rapport met de waarde 0 (nul). Heb al geprobeerd met de expressie IIf IsNull en IIf IsEmpty, maar dit lukt niet.
Wie weet raad ?

Acties:
  • 0 Henk 'm!

  • Moirraine
  • Registratie: Mei 2008
  • Laatst online: 13-02-2024
Gebruik voor het afbeelden van null waarden als iets anders de functie Nz.

Die 2 queries zijn overigens ook gejoined neem ik aan? Zo ja, kijk eens in de join eigenschappen. Je kunt daar kiezen voor "alle records uit query 1 opnemen en alleen... " blablabla. Dan zeg je feitelijk dat de query ook gegevens moet tonen als er in de gekoppelde query niets staat.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb geprobeerd met de joineigenschappen te wijzigen in optie 2 en optie 3, maar dit geeft niet de juiste resultaten.
Denk dat ik de functie LEFT JOIN moet gebruiken, en heb hiervoor een formule gemaakt, maar krijg deze niet juist :
SELECT («Expr» ([Levering]![Bonnummer] «Expr» [Levering]![Naam] «Expr» [Levering]![Datum] «Expr» [Levering]![Maand / Jaar] «Expr» [Levering]![Aantal] «Expr» [Levering]![Artikelomschrijving]) («Expr» [Beginvoorraad]![Datum] «Expr» [Beginvoorraad]![Periode] «Expr» [Beginvoorraad]![Aantal beginvoorraad] «Expr» [Beginvoorraad]![Artikelomschrijving]))
FROM [LEVERING] LEFT JOIN ([BEGINVOORRAAD] ON ([Beginvoorraad]![Artikelomschrijving] = [Levering]![Artikelomschrijving]))

Help ?

Acties:
  • 0 Henk 'm!

  • Moirraine
  • Registratie: Mei 2008
  • Laatst online: 13-02-2024
Wat doen die «Expr» in hemelsnaam in je SQL statement? :P

Gewoon
code:
1
 SELECT [Levering].[Bonnummer], [levering].[naam], [levering].[datum] ....... FROM ... LEFT JOIN Iets op iets anders


Vergeet niet: [tabelnaam]PUNT[Veldnaam] SCHEIDEN DOOR COMMA [tabelnaam]PUNT[veldnaam]. Access zou dit gewoon moeten genereren voor je als je hem in de visuele query bouwer maakt.

Overigens: de veldnamen "Naam" en "Datum" nooit gebruiken, daarvan gaat Access ook een keer de bietenbrug op ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Die <<Expr>> worden automatisch door Access 2007 ingevuld bij "Opbouwfunctie voor expressies":-~

Heb de expressie aangepast als volgt :


SELECT [Levering]![Bonnummer],[Levering]![Naam],[Levering]![Datum],[Levering]![Maand / Jaar],[Levering]![Aantal],[Levering]![Artikelomschrijving],[Beginvoorraad]![Datum],[Beginvoorraad]![Periode],[Beginvoorraad]![Aantal beginvoorraad],[Beginvoorraad]![Artikelomschrijving]
FROM LEVERING LEFT JOIN [BEGINVOORRAAD] ON [Beginvoorraad]![Artikelomschrijving] = [Levering]![Artikelomschrijving]

maar krijg nu de foutmelding : "Deze expressie bevat een subquery waarvan de syntaxis ongeldig is - Controleer de syntaxis van de subquery en plaats de subquery tussen haakjes "
:-(
Heb de haakjes al een beetje overal gezet, maar de melding blijft....

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Volgens mij gebruik je de query design view (ontwerpweergave) compleet verkeerd. Je druk nu op het toverstafje, zoekt de tabel op, en voegt de velden toe. Deze velden worden dan gescheiden met «Expr» om aan te geven dat je daar nog iets moet gaan typen. In werkelijkheid moet je niet dat toverstafje gebruiken, maar de juiste tabellen in de juiste kolommen slepen. :p Dus op deze manier.

Dan zul je ook geen uitroeptekens krijgen, maar gewoon punten.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Moirraine
  • Registratie: Mei 2008
  • Laatst online: 13-02-2024
<-- eens met pedorus, je gebruikt de query builder waarschijnlijk fout.

Geen expressies of iets dergelijks gebruiken, daar maak je het jezelf alleen maar moeilijk mee. Ik maak al jaren databases, maar ik kan me niet herinneren of/wanneer ik die ooit heb gebruikt.

Als je een functie (bijvoorbeeld die Nz functie) moet gebruiken in queries, dan sleep je het veld in de query bouwer, zet je voor het veldnaam "Kolomnaam:NZ(" en daar achter ";"Blaat")" of iets dergelijks. dan krijg je dus:

Kolomnaam: Nz([begindatum];"Blaat")

De query retourneert dan bij uitvoer in de kolom waar de begindata moeten staan het volgende:

De kolom heet "Kolomnaam"
De waarde is de begindatum die in de tabel staat, als er niets in staat is de waarde "blaat".

Verwijderd

Topicstarter
Dank je, ik heb begrepen wat jullie willen zeggen.

Ik heb hier de expressie aangepast als volgt :

SELECT Levering.Bonnummer, Levering.Naam, Levering.Datum, Levering.Aantal, Levering.Artikelomschrijving, Levering.[Maand / Jaar], Beginvoorraad.[Aantal beginvoorraad]
FROM Levering RIGHT JOIN Beginvoorraad ON Levering.Artikelomschrijving=Beginvoorraad.Artikelomschrijving
WHERE (((Levering.[Maand / Jaar])>=[VAN MAAND/JAAR (in formaat MM/JJJJ)] And (Levering.[Maand / Jaar])<=[TOT MAAND/JAAR (in formaat MM/JJJJ)]))
ORDER BY Levering.Bonnummer, Levering.Datum, Levering.Artikelomschrijving, Levering.[Maand / Jaar]

Ik krijg echter nog altijd niet de resultaten die ik wil :

Ik wil in de query "Levering" zowel alle geleverde artikels als alle artikels met een beginvoorraad zien, ook al is één van deze twee niet bestaand of nul.
Nu krijg ik alleen de artikels te zien die EN een beginvoorraad EN een geleverd aantal hebben.

Wat doe ik fout ?

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Je gebruikt nu 'And' terwijl je een 'Or'-query wil?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zou alle artikels moeten zien in het rapport, ook deze die geen beginvoorraad hebben EN deze die niet geleverd werden.... Nu krijg ik alleen deze te zien die zowel beginvoorraad als geleverd werden.
Normaal gezien zou ik alles moeten zien met de functie RIGHT JOIN. Dit lukt echter niet...
Weet iemand waar de fout zit ??

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb ondertussen de instructie als volgt aangepast, maar ook dit werkt niet....

SELECT Levering.Bonnummer, Levering.Naam, Levering.Datum, Levering.Aantal, Levering.Artikelomschrijving, Levering.[Maand / Jaar]
FROM Levering RIGHT JOIN Beginvoorraad ON Levering.Artikelomschrijving = Beginvoorraad.Artikelomschrijving
WHERE (((Levering.[Maand / Jaar])>=[VAN MAAND/JAAR (in formaat MM/JJJJ)] And (Levering.[Maand / Jaar])<=[TOT MAAND/JAAR (in formaat MM/JJJJ)]))
ORDER BY Levering.Bonnummer, Levering.Datum, Levering.Artikelomschrijving, Levering.[Maand / Jaar]
UNION ALL
SELECT Levering.Bonnummer, Levering.Naam, Levering.Datum, Levering.Aantal, Levering.Artikelomschrijving, Levering.[Maand / Jaar]
FROM Levering LEFT JOIN Beginvoorraad ON Levering.Artikelomschrijving = Beginvoorraad.Artikelomschrijving
WHERE Levering.Artikelomschrijving = Null

Waar zit de fout ????

Acties:
  • 0 Henk 'm!

  • Arcesilaus
  • Registratie: Maart 2000
  • Laatst online: 11-09 07:40
De "= null" moet volgens mij "Is Null" zijn in het tweede deel van je query.

P.s. Ik heb hem even nagebouwd, dus als je me van een e-mail adres kunt voorzien, mail ik je die wel even.
(er staat wel een mail-linkje bij een advertentie die ik heb openstaan O-) )

[ Voor 57% gewijzigd door Arcesilaus op 12-02-2010 09:38 . Reden: Hulpvaardigheid ]

Homo sum: humani nil a me alienum puto


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
_/-\o_ Bedankt Arcelisaus,

Je kan mailen naar harald@petry.be
Pagina: 1