Query leest dubbel uit

Status
Niet open voor verdere reacties.

harolda1980

Gebruiker
Lid geworden
7 aug 2007
Berichten
488
Code:
SELECT tblFabrikant.Fabrikantnaam, tblMerk.Merknaam, tblArtikel.Artikelnrleverancier, tblArtikel.Artikelomschrijving, tblAfname.AfnameJaar, Sum(tblAfname.Afnamecolli) AS SomVanAfnamecolli, Sum(tblAfname.Afnameomzet) AS SomVanAfnameomzet, Sum(tblAfname_1.Afnamecolli) AS SomVanAfnamecolli1, Sum(tblAfname_1.Afnameomzet) AS SomVanAfnameomzet1, tblAfname_1.AfnameJaar
FROM tblAfname AS tblAfname_1, tblFabrikant INNER JOIN (tblMerk INNER JOIN (tblArtikel INNER JOIN tblAfname ON tblArtikel.ArtikelID = tblAfname.ArtikelafnameID) ON tblMerk.MerkID = tblArtikel.Artikelmerkid) ON tblFabrikant.fabID = tblMerk.Merkfabid
GROUP BY tblFabrikant.Fabrikantnaam, tblMerk.Merknaam, tblArtikel.Artikelnrleverancier, tblArtikel.Artikelomschrijving, tblAfname.AfnameJaar, tblAfname_1.AfnameJaar
HAVING (((tblFabrikant.Fabrikantnaam)="Uniq nederland") AND ((tblAfname.AfnameJaar)=2010) AND ((tblAfname_1.AfnameJaar)=2009));
Ik 2 afname boekingen in het systeem staan eentje op 2009 en eentje op 2010.
In deze Query worden ze dubbel telt. terwijl het artikel 1x voorkomt en de boekingen ook.

Wie heeft een idee?
 
Plaats eens een voorbeeld bestand.

Om alvast eens te proberen probeer het volgende:
Code:
SELECT [COLOR="Red"]DISTINCT[/COLOR] tblFabrikant.Fabrikantnaam, hier de rest van de querie string.
 
Een werkende versie van een stand alone bestand of een combi.

Als jij met excel data uit een database uitleest lijkt mij de combi het beste
 
Hierbij het bestand met de schermen waarvan uit hij werkt.

In het artikel scherm kies je een leverancier en die haalt dan de gegevens op en laad deze in het afname formulier!
 

Bijlagen

Je helpt jezelf als je ff in je Access bestand je query opneemt en er voor zorgt dat je probleem in je Access bestand gereproduceerd kan worden.
Met daarbij de vermelding wat jij verwacht dat er gebeurt als je de query draait.

Tardis
 
Daar maak ik alle query's al in! Alleen deze query geeft twee regels terwijl het er maar eentje moet zijn!

met 2 kolommen met de gegevens vorig jaar en 2 kolommen huidige jaar!
 
Met veel gekunstel krijg ik iets aan de pruttel maar op gang komen ho maar.
Wat ik wel zie is dat jij een aantal modules eruit gehaald hebt waardoor de Excel tool niet start.
Vervolgens zie ik een zeer sumiere database welke je net zo makkelijk in Excel zou kunnen plaatsen.
Waarom je überhaupt met Excel data uit Access haalt weet ik niet want Access heeft zeer krachtige functies aan boord en dat is minder complex.

Ik heb de betreffende query in de database geplaatst en gedraaid en er komt 1 resultaat uit.

In je Excel bestand word in iedere functie het pad gedefinieerd waar de database staat.
Waarom werk je niet met public const Pad = "Z:\Applicaties"
Dan hoef je deze maar 1 keer te definieren en mocht het pad wijzigen dan een kwestie van 1 keer aanpassen, zie code.

Code:
Option Explicit

Public BeheerType As String
Public AfnameFabrikantPUB As String
Public AfnameMerkPUB As String
Public AfnameGroepPUB As String
Public MinmaxArtikelnummer As Long
Public MinmaxMinimaal As Long
Public MinmaxMaximaal As Long
Public PLmarkering As Long
 
Public Const Pad = "Z:\Applicaties"

In de functie komt dan:
Code:
strdir = Pad
 
Laatst bewerkt:
Ja klopt heb hem vreselijk moeten in korten dit is dus ook maar een klein deel!
En sommige delen zijn nog niet uitgebouwd.

Waarom acces gezien de hoeveelheid data die dit systeem gaat verwerken. Vandaar acces en dat gecombineerd met de excel rekenkracht.

uit de afname tabel die uiteindelijk data uit 2009 en 2010 gaat bevatten wil ik in 1 query regel de data van 2009 en 2010 uit halen. Als ik dat nu doet telt ie dubbel.
 
uit de afname tabel die uiteindelijk data uit 2009 en 2010 gaat bevatten wil ik in 1 query regel de data van 2009 en 2010 uit halen. Als ik dat nu doet telt ie dubbel.

Niet in je bijlages....
Enfin als jij jezelf niet wilt helpen dan houdt het voor mij op.
Suc6 ermee.

Tardis
 
Ik maak de query's in acces en kopieer de sql code naar VBA. Dus om te beginnen zou het dus zeker opgelost moeten worden in de Query binnen Acces!
 
Rekenkracht van Excel???

Ik zie nergens ook maar ene vorm van formules staan.

Weet je zeker dat je Excel nodig hebt?

Ik denk het namelijk niet en daarbij kan Access ook rekenen.
 
Klopt denk dat ik uiteindelijk wel goed zit ja! Aangezien dat deel nog moet komen en dan alles een kwestie van koppelen is uit een eerder systeem.

De acces ADO koppeling is mijn aangeraden in een open class vba maar aangezien ik nog niet zo kundig ben met queries loop ik daar dus nu op vast!

Uiteindelijk maak ik met dit systeem een Inkoop rekenmodel. Met diverse grafieken en berekeningen.
 
Je geeft aan dat je de query string opbouwt in Access en dan vervolgens kopieert naar Excel.

Vragen:
- Als je de query zoals Tardis heeft aangegeven draait in Access krijg je dan een dubbele waarde?
- Als je dezelfde query draait in Excel krijg je dan een dubbele waarde (1:1 kopie van de string dus geen variabelen opnemen)?
- Kun je de Excel code debuggen om te zien welke variabelen worden toegekend voordat de query gaat draaien?
 
Als ik in acces de waarde met de query opvraag krijg ik in het uitlezen het volgende probleem
Bij het uitlezen geeft hij een kolom(2009) wel goed weer en bij de andere krijg je een verkeerde telling(2010).

Ik heb een voorbeeld van de database meegestuurd.

dbtest.jpg

In de derde kolom staat het jaartal gegeven waarover de afname geld. En in veel gevallen wil ik 2009 en 2010 te gelijk eruit halen.
 
Ik heb je db net gedownload, en constateer dat er nog steeds niet overdreven veel records in staan. Het voorbeeldje is dus niet te reproduceren, en dat maakt het nogal lastig om te snappen wat je probleem precies is, laat staan om er een oplossing voor te verzinnen...
 
Ik heb nu een betere database bijgevoegd. en ook de querie waar ik het nu mee probeer op te halen.
In de totaal querie zie je dat de laatste twee kolommen niet mee tellen(2010)

Hoop dat het zo iets duidelijker is.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan