[SQL/Access] In Operator

Pagina: 1
Acties:

  • trekker22
  • Registratie: Maart 2003
  • Laatst online: 08:11
Hoi mensen,

ik zit wat te klooien met In() operator om meerdere records te deleten.

probleem: als ik een stored Query gebruik met parameters dan kan ik maar 1 waarde voor de In operator geven, anders krijg ik geen records terug.

Wat voorbeeldjes:

code:
1
2
3
4
5
6
7
8
9
SELECT tblIMAGE_RELATED.IMAGE_ID, tblIMAGE.IMAGE_EXT, 
tblFOTO.FOTO_BESCHRIJVING, tblIMAGE.IMAGE_WIDTH,
tblIMAGE.IMAGE_HEIGHT, tblIMAGE.IMAGE_ALIGN, tblIMAGE.IMAGE_ALT,
 tblIMAGE.IMAGE_BORDER, tblIMAGE.IMAGE_CSS, tblFOTO.FOTO_ID
FROM tblIMAGE INNER JOIN 
(tblFOTO INNER JOIN tblIMAGE_RELATED ON 
tblFOTO.FOTO_ID = tblIMAGE_RELATED.RELATED_ID) 
ON tblIMAGE.IMAGE_ID = tblIMAGE_RELATED.IMAGE_ID
WHERE (((tblFOTO.GALLERY_ID) In ([geef id])));


indien ik deze gebruik als query en geef als parameter mee "38", dan krijg ik de correct records terug.

maar indien ik deze als query gebruik en geef "38,39" dan krijg ik geen records terug.

maar indien ik deze "38,39" vast in de sql-code zet werkt het wel:

code:
1
2
3
4
5
6
7
8
SELECT tblIMAGE_RELATED.IMAGE_ID, tblIMAGE.IMAGE_EXT,
 tblFOTO.FOTO_BESCHRIJVING, tblIMAGE.IMAGE_WIDTH, tblIMAGE.IMAGE_HEIGHT,
 tblIMAGE.IMAGE_ALIGN, tblIMAGE.IMAGE_ALT, 
tblIMAGE.IMAGE_BORDER, tblIMAGE.IMAGE_CSS, tblFOTO.FOTO_ID
FROM tblIMAGE INNER JOIN (tblFOTO INNER JOIN tblIMAGE_RELATED ON 
tblFOTO.FOTO_ID = tblIMAGE_RELATED.RELATED_ID) 
ON tblIMAGE.IMAGE_ID = tblIMAGE_RELATED.IMAGE_ID
WHERE (((tblFOTO.GALLERY_ID) In (38,39)));


dan werkt het zoals het moet zijn, dan krijg ik zowel records die bij 38 en 39 horen.

Iemand een idee hoe dit komt? Het liefst blijf ik met stored Querys werken, ik vind SQL in de ASP niet zo mooi, en niet handig werken.

Oja: klopt dat in de ontwerpweergave van de Query de In operator er zo uitziet: In (38;39) en kan dit mijn probleem veroorzaken?

EDIT
op Google kwam ik dit er nog over tegen:
http://groups.google.com/...9%40jv-power--puter#link3

en hier legt diezelfde meneer uit waarom het niet zo werken..

http://groups.google.com/...b04.moswest.msn.net#link2

zijn wel oude berichten, maar ik kan er maar beter vanuit gaan dat ik dit niet werkend krijg?

[ Voor 18% gewijzigd door trekker22 op 16-11-2003 19:49 ]


  • guanpedro
  • Registratie: Maart 2002
  • Laatst online: 18-12-2025

guanpedro

Live forever or die trying

Zoals je hebt gemerkt is IN in Stored procedures niet mogelijk. dit is omdat een SP variabele altijd maar een waarde is.

Mijn methode is om de opgeleverde recordset te filteren, hier kan je wel weer IN in gebruiken.

Ik heb ergens een beter linkje voor je met een andere oplossing.

PC: MSI-NEO2FISR P4-2.6HT@2.8 Dual-channel GEIL-PC3500 Intel CSA GB-LAN 9600PRO Pioneer DVR106 Server: Dual Xeon-2GHz 3Ware 7500-12 11x120GB RAID5 GB-LAN RH 9 2.4.22 Digicam: Sony DSC-F717


  • trekker22
  • Registratie: Maart 2003
  • Laatst online: 08:11
hier is er volgens mij ook een oplossing die gebruikt maakt van een Eval:

http://groups.google.com/...2240%40tkmsftngp13#link10

maar het is me niet helemaal duidelijk wat ze aan het doen zijn.

Ik ga de SQL denk ik verhuizen naar mijn asp pagina's, voor dit probleem.

  • guanpedro
  • Registratie: Maart 2002
  • Laatst online: 18-12-2025

guanpedro

Live forever or die trying

Er is een oplossing waar eerst een temp tabel wordt gebouwd en die wordt in de IN gebruikt. Hij is nogal omslachtig maar het zorgt er wel voor dat je de SQL uit de code kan houden.

dit is er ook een:
http://www.sqlmag.com/For...fm?catid=9&threadid=14132

PC: MSI-NEO2FISR P4-2.6HT@2.8 Dual-channel GEIL-PC3500 Intel CSA GB-LAN 9600PRO Pioneer DVR106 Server: Dual Xeon-2GHz 3Ware 7500-12 11x120GB RAID5 GB-LAN RH 9 2.4.22 Digicam: Sony DSC-F717


  • trekker22
  • Registratie: Maart 2003
  • Laatst online: 08:11
ik heb er toch een redelijke makkelijke oplossing gevonden:

de where clausule aanpassen in het volgende:
code:
1
WHERE (((Eval([tblFOTO]![GALLERY_ID] & " In(" & [geef ids] & ")"))=True));


works like a charm!

deze code wordt ook door MS zelf aangegeven als een oplossing:

http://msdn.microsoft.com...baac10/html/acfctEval.asp

EDIT
te vroeg gejuigd, in Access werkt mijn query perfect, maar als ik de Query via een asp pagina aanroep krijg ik deze foutmelding:

Microsoft JET Database Engine (0x80040E14)
Undefined function 'Eval' in expression.

Eval wordt door de JET niet ondersteund?

[ Voor 61% gewijzigd door trekker22 op 16-11-2003 20:49 ]


  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46

ATS

Waarom genereer je niet gewoon een wat langer WHERE statement?
WHERE (tblFOTO.GALLERY_ID = 38) OR (tblFOTO.GALLERY_ID = 39) OR ...

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant

Pagina: 1