webForumDet fria alternativet

Antalet räknas inte

ASP

23 svar · 1 031 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

varför räknas inte antalet bilder som varje medlem har laddat upp

[B][I]count=objConn.Execute("select Count(*) as Antal from tblUsers_Galleri where agare="& varUID)[/I][/B]
Set show=objConn.Execute("Select count(clicks) as Antal From tblUsers_Galleri where agare="&Session("userID"))
Set katRS=objConn.Execute("SELECT DISTINCT kategori FROM tblUsers INNER JOIN tblUsers_Galleri ON tblUsers.userID = tblUsers_Galleri.agare WHERE agare ="& varUID &" ORDER BY tblUsers_Galleri.bildID DESC")
Set katRS1=objConn.Execute("SELECT bildID, kategori, agare FROM tblUsers_galleri WHERE agare ="& varUID &" and kategori=0")
if vipCheck.eof then
   response.write "finns ej"
else
 if vipCheck("vip") = 1 then
       sqlStr = "limit 5"
   else
       sqlStr = "limit 10"
   end if

End If

if( isnumeric( bildRS( "vip" ) ) ) then
  intVIP = cint( bildRS( "vip" ) )
else
  intVIP = 0
end if

[B][I]if( isnumeric( count( "Antal" ) ) ) then
  intCount = cint( count( "Antal" ) )
else
  intCount = 0
end if[/I][/B]

ID=request.querystring("userID")
set varID=objConn.Execute("SELECT * FROM tblUsers WHERE userID ="& ID &"")
if (varID("vip") = 1) then
  intVIP = 10
else
  intVIP = 5
end if

[B][I]strText = "Du har " & intCount & " bilder uppladdade av max " & intVIP[/I][/B]
%>

+--------+--------+-----------------------------------+---------------------+------------------------------+--------------------------------------------------------------+--------+----------+--------+
| bildID | agare  | bild                              | inlagd              | rubrik                       | kommentar                                                    | privat | kategori | clicks |
+--------+--------+-----------------------------------+---------------------+------------------------------+--------------------------------------------------------------+--------+----------+--------+
|      1 |      1 | jag(1).jpg                        | 2009-01-16 20:06:09 | jag                          | detta 􏻤r jag                                                |      0 |        1 | 2      |
+--------+--------+-----------------------------------+---------------------+------------------------------+--------------------------------------------------------------+--------+----------+--------+
Medlem sedan okt. 2007446 inlägg
#2

1
testa först att skriva ut den där SQL-frågan

strSQL="select Count(*) as Antal from tblUsers_Galleri where agare="& varUID
Response.write(strSQL)
Response.End()
count=objConn.Execute(strSQL)

då ser du om den ens borde returnera något

2
om frågan som skrivs ut ser ut nånting i stil med
select Count(*) as Antal from tblUsers_Galleri where agare=1
ser den inte ut så så innebär det att det är varUID som saknas/är tom/har fel värde.
Sen kollar du om det verkligen finns poster i databasen för den användaren. Jag antar att det gör det så vi går vidare

3
du vill bara ha ut ett värde, och det kommer i vara numeriskt varje gång (antar jag). så din kontroll känns onödig

' vi hämtar ETT värde istället för ett helt Recordset
intCount =objConn.Execute("select Count(*) as Antal from tblUsers_Galleri where agare="& varUID).fields(0).value 

strText = "Du har " & intCount & " bilder uppladdade av max " & intVIP
%>

mina asp-kunskaper är lite rostiga pga att jag gått över till .net (vilket jag rekommenderar dig att kolla på)

Medlem sedan feb. 20032 027 inlägg
#3

den verkar fela här nedan, när jag skriver ut sql-en får jag 3 vilket är antalet bilder medlemmen har laddat upp
if (isnumeric( count( "Antal" ) ) ) then
intCount = cint( count( "Antal" ) )
else
intCount = 0
end if

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'Count'

/Gallery/Default.asp, line 46

Medlem sedan okt. 2007446 inlägg
#4

Type mismatch tyder ju på att du inte har nån variabel som heter Count
kör min kod rakt av istället

intCount =objConn.Execute("select Count(*) as Antal from tblUsers_Galleri where agare="& varUID).fields(0).value 

strText = "Du har " & intCount & " bilder uppladdade av max " & intVIP

En "select count(*) bla bla bla" returnera NOLL om det inte finns några poster, för det är ju det man frågar efter
"hur många poster med villkor X finns det i tabellen Y"

Medlem sedan feb. 20032 027 inlägg
#5

Microsoft VBScript runtime error '800a01a8'

Object required: 'objConn.Execute(...).fields(...).value'

/Gallery/Default.asp, line 20

Medlem sedan okt. 2007446 inlägg
#6

Har du öppnat en databasanslutning som heter objConn ?

Medlem sedan feb. 20032 027 inlägg
#7

objConn använder jag på alla anslutningar och även denna

Medlem sedan feb. 20032 027 inlägg
#8

nån som har ett bra förslag på hur jag löser detta lilla problem?

Medlem sedan juni 20019 519 inlägg
#9
count=objConn.Execute("select Count(*) as Antal from tblUsers_Galleri where agare="& varUID)(0)
Medlem sedan dec. 200012 464 inlägg
#10
SET count=objConn.Execute("select Count(*) as Antal from tblUsers_Galleri where agare="& varUID)
Medlem sedan feb. 20032 027 inlägg
#11

Antalet visas nu men jag får type mismatch på följande 2 satser

<%'If intCount < intVIP then
'Response.Write "<a class=""menu"" href=""/pictureupload/gallery/"">Ladda upp ny bild</a> |"
'Else
'Response.Write "<span class=""brodtext"">Ladda upp ny bild |</span>"
'End If%>

<%'If intCount < vipCheck then
'Response.Write "<span class=""brodtext"">"& strText &"</span>"
'Else
'Response.Write "<br><span style=""font:Arial, Helvetica, sans-serif; color:#FF0000; font-weight:bold;"">"
'Response.Write "Du har för många uppladdade bilder i galleriet var vänlig radera en del, max är "& intVIP &", du har "& intCount &" bilder"
'Response.Write "</span>"
'End If%>

Märkte nu att den inte heller visar alla bilder, vissa medlemmar som har bilder i galleriet visaratt det inte finns några

<%Set viewRS=objConn.Execute("SELECT * FROM tblUsers t INNER JOIN tblUsers_Galleri g ON t.userID = g.agare WHERE agare ="& varUID &" and kategori='"& request.form("galleriKategori") &"' ORDER BY g.bildID DESC")
with response
If not viewRS.EOF Then

.Write "<table width=""800"" border=""0"" bgcolor=""#EEEEEE"">" & vbCrLf
.Write "<tr>" & vbCrLf
Do
If x mod 3=0 and x>1 Then .Write "</tr><tr>" & vbCrLf
.Write "<td align=""left"" valign=""middle"" width=""60"">" & vbCrLf
.Write "<a href=""JavaScript: Pic("& viewRS("bildID") &","& varUID &");"">" & vbCrLf
.Write "<img class=""presentation"" border=""0"" width=""60"" height=""60"" src=""/images/gallery/"& viewRS("bild") &" ""></a>" & vbCrLf
.Write "</td>" & vbCrLf
.Write "<td class=""linkpresentation"" align=""left"" valign=""top"" width=""350"">" & vbCrLf
.Write "<b> "& viewRS("rubrik") &" </b> <br> "& right(replace(viewRS("inlagd"),"-",""),15) &""
.Write "<br />"  & vbCrLf%>
<%if viewRS("kommentar") <> "" Then%>
<%=replace(viewRS("kommentar"),vbCrLf,"<br>")%> 
<%End If%>
Medlem sedan juni 20019 519 inlägg
#12

Första koden, du har ju kommenterat ut all kod.
Sen din Do-sats, hur ser den egentilgen ut? du ge bara en liten del av koden.

Medlem sedan feb. 20032 027 inlägg
#13

voigtann1 skrev:

Första koden, du har ju kommenterat ut all kod.
Sen din Do-sats, hur ser den egentilgen ut? du ge bara en liten del av koden.

Första koden, om jag inte kommenderar bort den så ser man bara felmeddelande på sidan, måste kommentera bort för at ens kunna visa resten av innehållet :-)

Del 2, lite mer av koden

<%Set viewRS=objConn.Execute("SELECT * FROM tblUsers t INNER JOIN tblUsers_Galleri g ON t.userID = g.agare WHERE agare ="& varUID &" and kategori='"& request.form("galleriKategori") &"' ORDER BY g.bildID DESC")
with response
If not viewRS.EOF Then

.Write "<table width=""800"" border=""0"" bgcolor=""#EEEEEE"">" & vbCrLf
.Write "<tr>" & vbCrLf
Do
If x mod 3=0 and x>1 Then .Write "</tr><tr>" & vbCrLf
.Write "<td align=""left"" valign=""middle"" width=""60"">" & vbCrLf
.Write "<a href=""JavaScript: Pic("& viewRS("bildID") &","& varUID &");"">" & vbCrLf
.Write "<img class=""presentation"" border=""0"" width=""60"" height=""60"" src=""/images/gallery/"& viewRS("bild") &" ""></a>" & vbCrLf
.Write "</td>" & vbCrLf
.Write "<td class=""linkpresentation"" align=""left"" valign=""top"" width=""350"">" & vbCrLf
.Write "<b> "& viewRS("rubrik") &" </b> <br> "& right(replace(viewRS("inlagd"),"-",""),15) &""
.Write "<br />"  & vbCrLf%>
<%if viewRS("kommentar") <> "" Then%>
<%=replace(viewRS("kommentar"),vbCrLf,"<br>")%> 
<%End If%>	
<hr />
<%if clng(request("userID")) = clng(session("userID")) then%>
<b><a class="menu" href="/gallery/delPic.asp?pID=<%=viewRS("bildID")%>"">¤ Radera ¤</a></b><br>
<%end if%>
<%if clng(request("userID")) = clng(session("userID")) then%>
<%set rs=objConn.Execute("SELECT tblUsers_Galleri_kommentar.bildID, tblUsers_Galleri_kommentar.agare, -Sum(tblUsers_Galleri_kommentar.nytt) AS SumNytt FROM tblUsers_Galleri_kommentar WHERE agare=1 and nytt=1 GROUP BY bildID,agare")%>
<a class="menu" href="JavaScript:viewComment(<%=viewRS("bildID")%>);"> 
<br>
¤ Visa kommentarer</a> 
<br>
Visad <%=viewRS("clicks")%> gånger
<br>
<a class="menu" href="changekat.asp?bildID=<%=viewRS("bildID")%>&catID=<%=viewRS("kategori")%>">Ändra kategori</a>

<%Else%>

<%'If UserID = 1 then%>
<!--<br>
<a href="setPrivate.asp?bildID=<%=viewRS("bildID")%>&usr=<%=request.querystring("usr")%>&usrID=<%=request.querystring("userID")%>" class="menu">Markera privat</a>
<br>-->
<%'End If%>
<%if request.querystring("kat") <> "" then%>
<a class="menu" href="JavaScript:placeComment(<%=viewRS("kategori")%>, <%=viewRS("bildID")%>,<%=viewRS("agare")%>,'<%=viewRS("username")%>','<%=viewRS("rubrik")%>','<%=viewRS("bild")%>');"> ¤ Kommentera ¤</a> 
<%else%>
<span class="brodtext">Kategori saknas</span>
<%end if
end if%>

<%if viewRS("privat") = 1 then
response.write "<img src=""/images/icons/warning.gif"">"
end if%>
<%.Write "</td>" & vbCrLf
x=x+1
viewRS.MoveNext
Loop  Until viewRS.EOF
.Write "</tr>" & vbCrLf
.Write "</table>" & vbCrLf
.Write "<hr>"
End if
end with%>
Medlem sedan juni 20019 519 inlägg
#14

1. Vad får du för felmeddelande då?
1.1 - Vad innehåller variablerna?
2. Hur många träffar får du i ditt recordset viewRS? (viewRS.RecordCount) ? - Är du säker(brukar vara så att du inte har gjort fel, bara glömt att det skall fungera som det gör).

Medlem sedan feb. 20032 027 inlägg
#15

voigtann1 skrev:

1. Vad får du för felmeddelande då?
1.1 - Vad innehåller variablerna?
2. Hur många träffar får du i ditt recordset viewRS? (viewRS.RecordCount) ? - Är du säker(brukar vara så att du inte har gjort fel, bara glömt att det skall fungera som det gör).

fråga 1
Microsoft VBScript runtime error '800a000d'

Type mismatch

/Gallery/Default.asp, line 175

Fråga 2 fungerade, fick bara hjärnsläpp :-)

Medlem sedan juni 20019 519 inlägg
#16

Och vad innehåller dina variabler (vilken rad är 175)?
Och vad är dom för typer?

För om man tar din kod rakt upp och ner så får man inga fel.

vad är:
intCount, intVIP, vipCheck
För typer jag gissar att det är vipCheck som är problemet för dig, eftersom det verkar vara ett objekt (Recordset). och inte en sträng.

Medlem sedan feb. 20032 027 inlägg
#17

voigtann1 skrev:

Och vad innehåller dina variabler (vilken rad är 175)?
Och vad är dom för typer?

För om man tar din kod rakt upp och ner så får man inga fel.

vad är:
intCount, intVIP, vipCheck
För typer jag gissar att det är vipCheck som är problemet för dig, eftersom det verkar vara ett objekt (Recordset). och inte en sträng.

Det stämmer att båda är RecordSet så det går ju inte jämföra så som du säger......frågan är hur man gör då

sen säger den att det inte finns kategorier när man själv kollar sitt bildgalleri men går man in på en annan medlems galleri så ser man kategorierna

<%Set viewRS1=objConn.Execute("SELECT * FROM tblUsers_galleri g INNER JOIN tblUsers_Galleri_kategori k ON g.agare = k.agare WHERE g.agare ="& varUID &" group by k.katID")
if viewRS1.eof then
response.write "Ingen kategori finns"
Else%>
<form action="?userID=<%=Request.Querystring("userID")%>&kat=<%=viewRS1("katID")%>" method="post">
<select class="textbox" name="galleriKategori">
<option value=""> == Välj här == </option>
<%Do Until viewRS1.Eof
  Selected = ""
  If cStr(viewRS1("katID")) = Request.Form("katID") Then Selected = "selected"
  Response.Write("<option value=""" & viewRS1("katID") & """ " & Selected & ">" &  viewRS1("kategori") & "</option>")
  viewRS1.MoveNext
  Loop%>
</select>
<input class="button" type="submit" value="Ok"
</form>
<%End If%>

säg bara till om jag är jobbig :-)

Medlem sedan juni 20019 519 inlägg
#18

Vilket fält i Recordsetet är det du skall gemföra? Gör det för att få ut ett objekt man kan jobba med i strängen.

Och en INNER JOIN kollar bara matchningar på fält som stämmer överens eller existera.
En Left eller Right OUTER JOIN får du använda dig av om du vill hämta ut alla kategorier, eller bara hämta ut alla kategorier utan join satsen om du bara ändå skall lista dom.

Medlem sedan feb. 20032 027 inlägg
#19

intCount kunde jag inte ha set framför eftersom det gav felmeddelande, utan set är det en sql i en variabel och inte ett recordset, vipCheck kunde jag inte lägga i variabel utan den måste vara ett recordset och då kan jag inte jämföra dem för att se när nån medlem har laddat upp för många bilder

set vipCheck=objConn.Execute("SELECT * FROM tblUsers WHERE userID ="& varUID &"")
intCount=objConn.Execute("select Count(*) as Antal from tblUsers_Galleri where agare="& varUID)(0)

när det gäller kategorierna så verkade det funka med en vanlig sql

set viewRS1=objConn.Execute("select * from tblusers_galleri_kategori g WHERE g.agare ="& varUID)
Medlem sedan juni 20019 519 inlägg
#20

Det stämmer att båda är RecordSet

Det är bara vipCheck som är ett Recordset, de andra är INT.
byt ut:

If intCount < vipCheck then

Med rätt fält i vipCheck.

intCount är ett tal(eller varchar), inte ett Recordset objekt

var i vipCheck(".....") har det du skall gemföra med intCount?

265 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)