• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

parameterquery werkt niet

Status
Niet open voor verdere reacties.

pimjansen

Gebruiker
Lid geworden
21 mei 2013
Berichten
15
Goedemorgen helpmijers,

Ik ben nieuw op het forum, nadat ik al vele malen veel aan een ieders reacties heb gehad. Dank daarvoor.

Mijn vraag gaat over het volgende:
Ik heb een excel bestand waarin ik data importeer met een OBDC-koppeling vanuit een boekhoudsysteem.
Hiervoor maak ik gebruik van MS Query, waarin ik vier tabellen importeer. Deze verbind ik onderling (een zogenaamde join geloof ik).
Normaal gesproken kan ik dan ook altijd een parameterquery maken waarbij de factuurdatum als basis wordt genomen voor het importeren van gegevens. Deze datum zet ik in een cel en dan wijzigen de waarden in de cellen wanneer de datum verandert (bij verversen).
Echter, als ik nu als criterium [datum gister] typ bij het criterium van het veld factuurdatum dan krijg ik de volgende foutmelding:
column 'datum gister' not found.
Tegelijkertijd is het zo dat de parameterquery wel wordt toegestaan wanneer ik uit de SQL de regel count ........ verwijder.
Maar deze regel hanteerde ik juist omdat dit het aantal geimporteerde regels in mijn werkblad verminderde. Het zijn namelijk allemaal orderregels, terwijl ik eigenlijk alleen geïnteresseerd ben in het totaal van die regels (wat ik nu dus heb).

Mijn vraag is dus, hoe ik een parameterquery toe kan passen, zonder veel meer overbodige regels toe te moeten staan.
Waarschijnlijk voor een echte kenner makkelijk op te lossen, maar niet door mij ;)

Alvast bedankt!
 
Laatst bewerkt:
mogelijk moeten er quotes omheen? SQL kan standaard alleen omgaan met enkele woorden. mogelijk zit hier het probleem.
 
[datum gister] wordt nu als een veld in de query gezien, vandaar de melding column 'datum gister' not found. Zet de (tekst van de) hele query hier eens neer. Gezien je opmerking over de COUNT lijkt het dat er iets niet klopt in je Group By
 
Bedankt voor de snelle reacties allebei!

De tekst in de SQL bij MS Query is:

SELECT tabFactuurKop.fkFactuurDatum, tabFactuurKop.fkFactDebNummer, vwKMBDebStam.CAdrNaam1, tabRelatie.RelVolledigeNaam, tabRelatie.RelEmail, vwKMBFacturen.frefOrderNummer, Count(tabFactuurKop.fkFactuurNummer) AS 'Aantal van fkFactuurNummer', tabFactuurKop.fkFactuurNummer
FROM KingSystem.tabFactuurKop tabFactuurKop, KingSystem.tabRelatie tabRelatie, KingSystem.vwKMBDebStam vwKMBDebStam, KingSystem.vwKMBFacturen vwKMBFacturen
WHERE vwKMBDebStam.NawFilNummer = tabFactuurKop.fkFactDebNummer AND tabRelatie.RelNawGID = vwKMBDebStam.NawFilGid AND vwKMBFacturen.fkFactuurNummer = tabFactuurKop.fkFactuurNummer
GROUP BY tabFactuurKop.fkFactuurDatum, tabFactuurKop.fkFactDebNummer, vwKMBDebStam.CAdrNaam1, tabRelatie.RelVolledigeNaam, tabRelatie.RelEmail, vwKMBFacturen.frefOrderNummer, tabFactuurKop.fkFactuurNummer
HAVING (tabRelatie.RelVolledigeNaam='Facturatie') AND (tabFactuurKop.fkFactuurNummer Like ' 5%') AND (tabFactuurKop.fkFactuurDatum='2013-05-16')

Het gaat dus fout volgens jou bij het Group By gedeelte?

Hiervan heb ik echt geen enkel verstand ;)

Count heb ik zelf even rood gemaakt. Daarnaast wil ik dus bij de onderste regel (factuurdatum) de parameterquery toepassen.
 
Laatst bewerkt:
Even voor de duidelijkheid: deze query werkt gewoon? Maar het gaat fout zodra je in plaats van '2013-05-16' de variabele (die dan als veldnaam wordt gezien) [datum gister] plaatst?
 
Beste Frans,

Wanneer ik dat daarin wil aanpassen krijg ik de melding:
Syntax error near '(end of line)' on line 5

Wellicht dat je hier wat mee kunt?
 
Nee, helaas. Mogelijk mag je de parameter niet gebruiken in de Having clause?
Tip: vereenvoudig je probleem. Begin eens met:
SELECT * FROM KingSystem.tabFactuurKop AS tabFactuurKop
WHERE (tabFactuurKop.fkFactuurDatum='2013-05-16')
Als dit werkt vervang dan '2013-05-16' door ?
En zo verder.
 
Het probleem is uiteindelijk opgelost.
Ik heb de count eruit gehaald, en in de SQL gebruik gemaakt van SELECT DISTINCT, waarmee dubbele regels worden gefilterd.
De SQL ziet er nu als volgt uit:

SELECT DISTINCT tabFactuurKop.fkFactuurNummer AS 'tabFactuurKop.fkFactuurNummer', tabFactuurKop.fkFactuurDatum, tabFactuurKop.fkFactDebNummer, vwKMBDebStam.CAdrNaam1, tabRelatie.RelVolledigeNaam, tabRelatie.RelEmail, vwKMBFacturen.frefOrderNummer, tabFactuurKop.fkFactuurNummer
FROM KingSystem.tabFactuurKop tabFactuurKop, KingSystem.tabRelatie tabRelatie, KingSystem.vwKMBDebStam vwKMBDebStam, KingSystem.vwKMBFacturen vwKMBFacturen
WHERE vwKMBDebStam.NawFilNummer = tabFactuurKop.fkFactDebNummer AND tabRelatie.RelNawGID = vwKMBDebStam.NawFilGid AND vwKMBFacturen.fkFactuurNummer = tabFactuurKop.fkFactuurNummer AND ((tabRelatie.RelVolledigeNaam='Facturatie') AND (tabFactuurKop.fkFactuurNummer Like ' 5%') AND (tabFactuurKop.fkFactuurDatum=?))

Een ieder die heeft meegedacht: bedankt!
 
Ik had er nog even na gekeken maar was gisteren in het ziekenhuis, dus nog geen antwoord kunnen geven. Als je alsnog de parameter wilt gebruiken, moet je de datum door een vraagteken vervangen in de MSQuery en dan op de knop Parameters drukken. Hier kun je dan opgeven dat als parameter de waarde in een cel moet worden gebruikt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan