webForumDet fria alternativet

Har Access databas ändrats??

ASPur ASP

10 svar · 412 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Jag är väldigt osäker på om detta är rätt forum men..
Är det någonting som har ändtats i Access databas?
Jag använder mig av Access via gamla hederliga ASP, och har inte
haft några som helst besvär, tvärs om den har fungerat otroligt bra.

Bl a har jag en väldigt inveklad SQL(fick hjälp med den härifrån), som har fungerat klockrent. I dag så får jag ett error (både lokalt och via webservern)

Microsoft JET Database Engine error '80004005' 
At most one record can be returned by this subquery.

Vad har hänt? :q

Medlem sedan feb. 20011 198 inlägg
#2

Du har troligen lagt in data så att en subquery returnerar fler än en rad.

Skicka sql-frågan.

Medlem sedan mars 20011 880 inlägg
#3

Ok, men den är stor och inveklad.

SELECT t_Album.Bild, t_Album.Album, s.songtitel AS Sångtitel, 
(SELECT TOP 1 namn FROM t_songforfattare INNER JOIN t_forfattare ON t_songforfattare.for_id = 
t_forfattare.for_id WHERE ArrNo = s.ArrNo ORDER BY t_songforfattare.for_id ASC) AS Författare, 
(SELECT TOP 1 namn FROM t_songforfattare INNER JOIN t_forfattare ON t_songforfattare.for_id =
 t_forfattare.for_id WHERE ArrNo = s.ArrNo AND t_songforfattare.for_id > 
(SELECT TOP 1 for_id FROM t_songforfattare WHERE ArrNo =
 s.ArrNo ORDER BY for_id ASC) ORDER BY t_songforfattare.for_id ASC) AS Författare2,
(SELECT TOP 1 namn FROM t_songforfattare INNER JOIN t_forfattare ON t_songforfattare.for_id =
 t_forfattare.for_id WHERE ArrNo = s.ArrNo AND t_songforfattare.for_id > 
(SELECT TOP 1 for_id FROM t_songforfattare WHERE ArrNo = 
s.ArrNo AND t_songforfattare.for_id >
(SELECT TOP 1 for_id FROM t_songforfattare WHERE ArrNo = 
s.ArrNo ORDER BY for_id ASC) ORDER BY t_songforfattare.for_id ASC)) AS Författare3 
FROM t_songtitlar AS s INNER JOIN t_Album ON s.Album =
 t_Album.CD_ID

Det märkvärdiga är att den fungerade igår, och jag har inte gjort
några uppdateringar eller insert.

Medlem sedan mars 20011 880 inlägg
#4

Jag har hittat felet, justerat i databasen, så fungerar detta.
Orsaken till dubbleterna blev, att jag inte har fått till det i ett
antal option-listor.
I min SQL så får jag fram namn/en på författaren.
I optionboxen, så loppar jag fram alla namnen i databasen. Det
jag ville ha fram, är om namnet i loopen är samma som i SQL:en
så skall namnet i optionboxen vara selectad.(hoppas att det inte låter för krångligt).

'rst("Författare") är variabel ifrån den stora SQL:en här ovan.
'RS2("Namn") ifrån en SQL som loppar igenom namnen på alla
författarna.
<select  CLASS="SKUGGA" SIZE="1" Style ="width: 120" NAME="Forfattare">
<option></option>
 <% Do While Not RS2.EOF
 on error resume next

 if(RS2("Namn"))=rst("Författare") then
sel="selected"
 err.cleare
 end if
 %>

  <option <%=sel%> value="<% = RS2("For_Id") %>"><% = RS2("Namn") %></option>
 <% RS2.movenext
loop %>
 <option value=""></option>
 </select>

Borde inte detta fungera??(Jag får upp fel namn hur jag än gör.

Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

Vad får du får kod?
Vilken blir vald?
Om du skriver ut dina värden, vad får du då?

Det jag ser direkt, och som man lätt missar, är att du inte nollställer sel, dvs när du väl får en träff, blir alla andra också valda efteråt.

Medlem sedan juni 200032 967 inlägg
#6

Jag förstår inte riktigt meningen med on error resume next heller.

Dessutom heter det err.clear, inte cleare.

Medlem sedan mars 20011 880 inlägg
#7

On error tog jag med för att jag fick ett fel, den är borta nu.
Jag har kommit en bit på vägen, men inte ända fram.

if rst("Författare") = RS2("Namn") then
  response.write RS2("Namn")& "OK<BR>	 	
  else
  response.write RS2("Namn")& "nix<BR>"
  end if

Om jag skriver så här, då ser jag att den välger ut rätt.
Om jag lägger till variablen "sel="selected"" och lägger in den

<option selected="<%=sel%>" value="<%= RS2("For_Id") %>">
<%= RS2("Namn") %></option>

Då markeras inte rätt författare, utan den markerar den sista
förfatareni databasen.

Medlem sedan apr. 20031 660 inlägg
#8

HEJ!

J.N. skrev:

Det jag ser direkt, och som man lätt missar, är att du inte nollställer sel, dvs när du väl får en träff, blir alla andra också valda efteråt.

Citerar mig själv, sätt den till "" i slutet av loopen.

Medlem sedan mars 20011 880 inlägg
#9

De hjälpte inte, den markerar trots allt det sista namnet.

Medlem sedan mars 20011 880 inlägg
#10

Det viktigaste av allt, är att inte ge sig, så här skall det se ut:

<option <% if rst("Författare") = RS2("Namn") then %>
selected<% end if%>  value="<%= RS2("For_Id") %>">
<%= RS2("Namn") %></option>

Jag vill passa på och tacka er alla för att ni har försökt att hjälpa
mig med det här. :bire

Medlem sedan mars 20023 561 inlägg
#11

Lite snyggare... Kanske?

Reponse.Write("<option ")
If rst("Författare") = RS2("Namn") Then
     Response.Write("selected ")
End If
Response.Write("value='" & RS2("For_Id") & "'>" & RS2("Namn") & "</option>")
140 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)