Hejsan allihopa :)
Jag har en vanlig SQL-select (mot Access 2000). Nu vill jag göra en sak om WHERE-villkoret uppfylls (dvs poster loopas fram) och en annan om inga poster hittas.
Provade lite olika:
if rs.eof then
hjälper ju inte eftersom SELECTEN blir ju EOF hur som helst.
sen tänkte jag att om count(*)=0 så får jag ju det jag vill, men istället får jag felmeddelande:
SELECT COUNT(*), kol1, kol2 FROM tblX WHERE.. ORDER BY etc
Felmsg:
You tried to execute a query that does not include the specified expression 'kol1' as part of an aggregate function
Om jag tar bort "kol1" så klagar den på "kol2" osv. Varför då? :)
Ännu bättre nästan om nån dessutom vet om det finns något SQL-nyckelord för att kolla om poster finns?
Har för mig att när jag körde stored proc. gick det bra att sätta en flagga som returnerade true/false t.ex men jag vet inte hur man gör det med Access queries. Förslag...? :)
------------------
"Between stimulus and response is a pause wherein our ability to choose lies".
LarsGMedlem sedan dec. 200012 464 inlägg Jag förstår inte vad du menar när du säger att rs.eof inte fungerar?
sql = "select * from ogrish where aleb > 12"
set rs = connect.execute(sql)
if rs.eof then
'inga poster
else
while not rs.eof
'hantera data
rs.movenext
wend
end if
skulle jag skriva.
------------------
essentitia preter non sans multiplicandum
LarsGMedlem sedan dec. 200012 464 inlägg Att du får fel när du lägger count(*) beror på att man inte kan blanda aggregatfunktioner (sum,max etc) med kolumneferenser om man inte har en group by.
------------------
essentitia preter non sans multiplicandum
ehm, jo, det stämmer faktiskt.. jag hade ju en sån konstruktion redan kom jag på, men fick för mig att skriva en ny IF rs.eof någon annanstans.. bland HTML:n (i onödan) tackar ! :)
Jaha ja... hmm.. ang. count, om man inte kan blanda kol.ref/aggregate func. får man köra separata SQL-satser då, eller..? En där man plockar ut data, o en som man har för att räkna poster..?
Tack för hjälpen igen :)
------------------
"Between stimulus and response is a pause wherein our ability to choose lies".
LarsGMedlem sedan dec. 200012 464 inlägg Njae, du behöver inte skriva två satser. Ett alternativ är att skriva
select aleb,caleb,(select count(*) from ogrish where aleb > 12) as antal from ogrish where aleb > 12
och då får man ut antalet värden med rs("antal") om det finns några poster.
Man kan också använda metoden getrows
set rs = connect.execute(sql)
if not rs.eof then
arr = rs.getrows()
antal = ubound(arr) + 1
for i = 0 to ubound(arr,2)
'presentera data från arr
next
getrows returnerar en två-dimensionell array med allt data. Det är effektivare att använda, då man gör färre anrop till databashanteraren.
Det här har diskuterats ganska mycket i ASP-forumet, så om du gör en sökning där så ´hittar du fler exempel.
------------------
essentitia preter non sans multiplicandum
Aha, på det viset.. intressant.. jo, getRows har jag sett inlägg om men inte provat..
Tackar, då ska jag läsa o experimentera lite :)
------------------
"Between stimulus and response is a pause wherein our ability to choose lies".