Toon posts:

[access] een werkende query die niet werkt?

Pagina: 1
Acties:
  • 638 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi,

Ik heb een query in Access gemaakt:

code:
1
2
SELECT Count(*)
FROM Lied;

oke, simpeler kan niet :o

Wanneer ik in Access op die query dubbelklik (via het beginscherm->objecten->query's->naam van query) dan geeft hij netjes de het resultaat van die query weer.
Wanneer ik echter in een rapport de waarde van die query wil uitlezen, geeft Access de volgende fout: "Het opgegeven veld [Lied] kan naar meer dan een tabel verwijzen in de component FROM van uw SQL-instructie."

Zoals ik in mijn vorige topic ([rml]nosferatu_ in "[ access] met visual basic een record in "[/rml]) al stelde: ik ben echt een n00b wat access betreft, dus ik snap hier werkelijk niets van. Waarom werkt de query wel als ik erop dubbelklik, maar geeft hij in een rapport die fout? Het vreemdste is nog wel dat ik maar één tabel heb die "Lied" heet, dus hoe komt Access erbij dat die query naar meerdere tabellen verwijzen kan? Maar de belangrijkste vraag is nog wel: hoe verhelp ik deze fout?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Hmmm...

Ten eerste: Ook al heb je maar één tabel die lied heet, toch komt deze melding naar voren. En dat klopt, want Access geeft aan dat het VELD lied naar meer dan een tabel kan verwijzen.

Ten tweede: het lijkt mij alsof er ergens in de veldtoewijzing op je rapport iets mis is o.i.d. Je zult wellicht ergens het veld 'LIED' gebruiken op je rapport waarvan Access niet zeker is uit welke tabel dit veld moet komen.

Probeer het eens op te lossen door bij de veldtoewijzing op het rapport keihard alle relevante tabelnamen ervoor te zetten? Dus als je het veld ID uit de tabel LIED nodig hebt verwijs je niet naar ID, maar naar LIED.ID

Misschien dat dit je helpt? Anders hebben we denk ik iets meer info nodig over de opbouw van de database en het rapport waarmee het mis gaat.

My personal website


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
of probeer dit eens:

code:
1
SELECT Count(*) as optelling FROM LIED


De optelsom aan een (tijdelijke) veldnaam toewijzen

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Hmmzz... is een count over * niet onmogelijk? Volgns mij kun je beter een count doen over je Primary Key of zo, dan tel je ook ...

My personal website


Verwijderd

Topicstarter
Ik ben al een stapje verder. Ik ben erachter dat twee velden in het rapport elkaar dwarszitten. Het gaat om het veld waarin ik bovenstaande query in weergeef, [Aantal liedjes], en een veld waarin ik de kolom Lied uit de tabel Lied weergeef: Lied.Lied. Wanneer ik één van beide velden weghaal, dan werkt het wel gewoon, maar dat is uiteraard niet de oplossing.

Ik zal voor de aardigheid even de SQL-instructies van het rapport posten, zoals Access die voor mij heeft verzonnen aan de hand van een query-ontwerp. Misschien kunnen jullie daar wat mee.


SELECT Artiesten.[Artiest/Band], CD.[Titel CD], CD.[Op de markt gebracht in], Artiesten.Opgericht, Lied.Lied, Lied.Lengte, Lied.Live, Artiesten.ArtiestID, [Aantal artiesten].Expr1000, [Aantal CD's].Expr1000, [Aantal liedjes].Expr1000

FROM [Aantal artiesten], [Aantal CD's], [Aantal liedjes], CD INNER JOIN (Lied INNER JOIN (Artiesten INNER JOIN CompositieCD ON Artiesten.ArtiestID = CompositieCD.ArtiestID) ON Lied.LiedID = CompositieCD.LiedID) ON CD.CDID = CompositieCD.CDID;


En inderdaad, het gaat hier om een erg simpel CD-databaseje :)

Edit: code-tags weggehaald ivm het vern**ken van de lay-out.

[ Voor 5% gewijzigd door Verwijderd op 24-03-2003 19:31 ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Met het oog op bijvoorbeeld SQL-server vind ik dat je de namen van je velden toch een beetje verkeerd hebt gekozen. Binnen SQL zou je dit nooit voor elkaar krijgen en dus lijkt het me niet verstandig om het in Access wel zo te doen. Stel je bijvooebeeld voor dat je prog zo goed en groot wordt dat je over wil stappen naar SQL server? :P

Er zitten op diverse plaatsen spaties in je namen, en je hebt zelfs een veld met een slash erin! Zo heb je bijvoorbeeld CD.[op de markt gebracht in] :X

Als je de mogelijkheid hebt om daar nu nog aanpassingen aan te doen, doe dat dan. Zorg ervoor dat je alleen namen gebruikt van 'normale' karakters en zonder spaties o.i.d.. Gebruik als je per sé scheiding wil aanbrengen liever een underscore, zodat de veldnaam bijvoorbeeld CD.op_de_markt_gebracht_in wordt.
Makkelijker zou natuurlijk zijn CD.releasedate ;)

En wellicht dat Access moeilijk doet over het feit dat je een veldnaam hebt die gelijk is aan de tabelnaam? Als je op een rapport dan 'Lied' als datasource opgeeft wordt het zelfs voor Access moeilijk om te begrijpen welke je bedoelt... De tabel of het veld van de tabel.

[ Voor 5% gewijzigd door OZ-Gump op 25-03-2003 11:05 . Reden: tiepvaud ]

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 25 maart 2003 @ 11:00:
En wellicht dat Access moeilijk doet over het feit dat je een veldnaam hebt die gelijk is aan de tabelnaam? Als je op een rapport dan 'Lied' als datasource opgeeft wordt het zelfs voor Access moeilijk om te begrijpen welke je bedoelt... De tabel of het veld van de tabel.
Ondanks dat ik als datasource geen Lied maar toch duidelijk Lied.Lied heb ingevoerd, lag het probleem toch inderdaad aan de tabelnaam en veldnaam die beide dezelfde naam hadden. Ik heb mijn tabel Lied nu omgedoopt naar Liedjes, en nu werkt het gelukkig! Bedankt! _/-\o_

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

OZ-Gump schreef op 24 maart 2003 @ 11:26:
Hmmzz... is een count over * niet onmogelijk? Volgns mij kun je beter een count doen over je Primary Key of zo, dan tel je ook ...
Een count(*) is zeker mogelijk en is zelfs in de gemiddelde database ook zwaar geoptimaliseerd (en daardoor afaik over het algemeen te prefereren boven een count op een veld (PK)).

Today's subliminal thought is:

Pagina: 1