Jag igen. ;-) Hmm, det är risk för att ID är ett reserverat ord... Hej hopp! Hej. Ok. Hade jag läst lite noggrannare så hade jag svarat rätt med en gång. Hej hopp snabbläsare där ;-) Hej igen ;-) Du ska bara sortera RecSet, inte RecSet2... Hej igen! Hmmm, det verkar ju vara ett rätt så konstigt problem, men jag tror att problemet sitter i databasen... Hmmm, såg att du har satt sorteringskoden på en annan sida... Om jag skulle vara du skulle jag dela upp prat.asp i två delar... Hej hopp! Puh, nu fungerar de första sidan, med sista inlägget överst *glad*, det blev ju mycket trevligare att koda när man delar upp det lite, nu ska jag ge mig på den andra sidan. :-) Det låter bra =) Hej! Vet inte om det kan vara det, men du har skrivit: Japp, jag hade skrivit fel där, men det blir ändå error msg, jag tycker att denna raden borde stämma nu, och vad jag än provar så blir det "mismatch", kanske försöker jag jämföra två olika datortyper? Måste jag deklarera någon av dessa för att det ska fungera? Så här ser den omgivande koden ut. De andra värdena åker smidigt in i databasen. Jag använder bara INSERT INTO för jag tycker den är bäst... Hej hopp! Hej! Testa med att ta bort Cint helt... Hej hopp igen, det här börjar nli en följetong :-) Här är även <form>:en på sidan innan som visar hur QueryStringen blir. Jag har nog hittat ditt fel... Hrrrrmmm...*host* *skäms lite* Det var ju bra klantigt av mig...., tänkte när jag kodade att jag skulle byta, då id kanske var reserverat eller så, så misade jag att ändra. Konstigt dock att prg inte skriker till då den inte hittar en Query.String. hm.det var svårt att slita sig ändå *s* alla "idnummer" verkar vara rättstavade nu. Finn ett fel: =) *Puh*, nu fungerar det som det ska. Jaha =) De ska prova en ny tentaform faktiskt, datasalstenta, innan har vi jämt skrivit på papper på tentorna(programera på papper....*suck*.), men denna gång har vi en dator var med en lokal webserver(PWS hoppas jag), vi får ha med boken, vi ska få ett antal uppgifter som vi ska få att fungera. Sen sparar man filerna i en viss mapp, som läraren tittar på efteråt när vi gått hem. Jaha, det låter ju spännande =)vända på RS?
I mitt forum vill jag göra så att de senaste medelandena kommer först, som det är nu så kommer det sist inlagda längst ned i listan.
Men när jag lägger till <code> & " ORDER BY ID desc" </code>i sql satsen så för jag följande felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the
specified expression 'ID' as part of an aggregate function.
Mvh Klas
<%
Set RecSet2 = Server.CreateObject("ADODB.Recordset")
%>
<h6>
<%Do While Not RecSet.EOF
SQL = "SELECT COUNT(*) AS antalsvar FROM inlagg WHERE SvarsID = " & RecSet("ID")
RecSet2.Open SQL, Databas, adOpenStatic, adLockOptimistic
%>
<tr>
<td width="80"><% =RecSet("Datum")%></td>
<td width="200"><% =RecSet("Namn")%></a></td>
<td width="300">')">
<% =RecSet("Rubrik") %></td>
<td width="42"><center><% = RecSet2("antalsvar") %></center></a></td>
</tr>
<%RecSet2.Close
RecSet.MoveNext %>
<% Loop %> Sv: vända på RS?
Testa skriva "ORDER BY [ID] DESC".
Om jag inte är ute och cyklar nu så ska det fungera... =)
MvH ThomasSv: vända på RS?
Nej, det ville sig inte ändå.
Samma felmed.
Här hela kodsnutten för den intresserade(trodde jag la in den i orginalet, men jag måste ha missat det). Att få den att sortera i "fel" ordning är inga problem, då fungerar det.
Jag fick förslaget:(på irc)
Your not selecting ID thats why it isn't working, you will get only a number in response.
Men det förstår jag mig inte på riktigt. :-)
<%
Set RecSet2 = Server.CreateObject("ADODB.Recordset")
%>
<h6>
<%Do While Not RecSet.EOF
SQL = "SELECT COUNT(*) AS antalsvar FROM inlagg WHERE SvarsID = " & RecSet("ID") & " ORDER BY [ID] desc"
RecSet2.Open SQL, Databas, adOpenStatic, adLockOptimistic
%>
<tr>
<td width="80"><% =RecSet("Datum")%></td>
<td width="200"><% =RecSet("Namn")%></a></td>
<td width="300">')">
<% =RecSet("Rubrik") %></td>
<td width="42"><center><% = RecSet2("antalsvar") %></center></a></td>
</tr>
<%RecSet2.Close
RecSet.MoveNext %>
<% Loop %> Sv: vända på RS?
Det kommer bara finnas ett fält i recordsetet: 'antalsvar'
Därför kan du inte sortera på 'ID'
Testa det här:
SELECT * FROM inlagg WHERE SvarsID = " & RecSet("ID") & " ORDER BY [ID] desc" Sv: vända på RS?
Den frågan går ju inte att sortera. Ger ju en rad, en kolumn.
Sidan borde väl funka som den skall utan 'ORDER BY...'??Sv: vända på RS?
Japp, det stämmer att det fungerar hur bra som helst utan ORDER BY, men kruxet är att det senaste inlägget då kommer längst ned. ;-(
Om det kan vara till ledning så ligger forumet på:
http://www25.brinkster.com/receptsidan/
Mvh KlasSv: vända på RS?
Kom på att jag nog tänkt fel innan(men att det inte påverkat frågeställningen tror jag), för att vända upp o ner på rubrikerna, så är det ju RecSet, inte Rec2 jag ska göra om, men då siffrorna för "antal olästa svar" står till höger om rubriken, ska ju även de(RecSet2) vändas på samma sätt.
Så jag lade till detta tidigare i koden.
<code>
<% Hamta = "SELECT * FROM inlagg WHERE ID = " & Request.QueryString("id") & "ORDER BY [ID] desc"
RecSet.Open Hamta, Databas, adOpenStatic, adLockOptimistic %>
</code>
Samt det som ovan föreslogs:
<code>SQL = "SELECT * FROM inlagg WHERE SvarsID = " & RecSet("ID") & " ORDER BY [ID] desc"
RecSet2.Open SQL, Databas, adOpenStatic, adLockOptimistic </code>
Detta gav dock error msg det med. ;-(
Mvh KlasSv: vända på RS?
Eftersom du bara räknar med RecSet2 går den inte att sortera utan genererar ett fel...
Lösningen är så simpel att du endast lägger till "ORDER BY [ID] DESC" efter strängen som öppnar databasen, i det här fallet i strängen hamta om jag har förstått rätt =)
"SQL=..." strängen behöver du inte göra något åt för den ger automatiskt det rätta antalet svar till varje rubrik...
MvH ThomasSv: vända på RS?
Hm...det vill sig ändå inte. :-(
Detta ger att det sist postade(samt dess antal) kommer längst ned, istället för längst upp, såsom det nu ser ut på http://www25.brinkster.com/receptsidan/
Provade även att skriva ASC istället för DESC, men det gjorde inte heller någon skillnad.
Jag börjar tro att det är något i den omgivande koden som strular till det, jag ska titta vidare o se om jag kan komma på något.
Funderar även på att låta den söka på datum istället.
Vänligen KlasSv: vända på RS?
Har du ett fält med AutoNumber i den?
Om så är så är det ju bara att sortera efter den, men jag antar att ID är just det fältet, men då ska det fungera...
Efterom DESC tar det största talet först så ska den ju hamna högst upp...
Kanske hjälper om du postar SQL strängen du öppnar RecSet med...
Det kan ju vara något fel i den, och kolla i databasen att det verkligen är olika nummer på varje inlägg...
Mer än så kan jag inte hjälpa dig just nu, men jag hjälper dig gärna!
MvH ThomasSv: vända på RS?
Ska den inte vara på "prat.asp"?
Om du vill sortera svaren måste du ju ha ett id för dem också, men jag vet inte riktigt hur du gör när du loggar svaren...
Så ta en titt på vilken sida du har koden på, och så måste du lägga till ett mellanslag mellan "ID = " & RecSet("ID") & " ORDER BY [ID] DESC"...
Så ska det se ut, men som det nu är tror jag att det saknas ett mellanslag "ID = " & RecSet("ID") & "[HÄR]ORDER BY [ID] DESC"
MvH ThomasSv: vända på RS?
En som sköter om upplistningen av inläggen, och en som visar dem när man klickar på rubriken...
Tex, "prat.asp" för att lista upp och "pratlas.asp?id=##" för att läsa den...
Det borde nog lösa problemet efterom du skiljer på finktionerna...
MvH ThomasSv: vända på RS?
Kände att jag var tvungen att låta det vila ett tag då jag bara blev så trött på det, det om att dela upp det hela i 2 sidor var riktigt smart, det bler ju mer överblickbart och trevligt då, ska prova det idag.
Mvh KlasSv: vända på RS?
KlasSv: vända på RS?
Jag brukar försöka undvika att kladda dit allt på en enda sida för det blir ju så "kladdigt"...
Och om jag ska ha någon funktion som jag ska posta till lägger jag den också i en egen fil för att inte blanda ihop koden på den vanliga sidan och funktionskoden...
Hoppas allt löser sig nu!
Mvh ThomasSv: vända på RS?
(Forumsnickrande)
Nu är det sågott som klart, men får inte det allra sista att fungera, för att svar på inlägg skal kunna sökas ut så får varje svarsinlägg ett SvarsID med orginalmedellandets ID, det är tanken iallafall....
Långa filnamn, jag vet....*s*
På en sida har jag:
<form method="POST" action="prattackfordittsvarsinlagg.asp?idnummer=<%trim(Request.QueryString("idnummer"))%>" >
Och på prattackfordittsvarsinlagg.asp :
RecSet("SvarsID")=RecSet("SvarsID")=CLng(Request.QueryString("idnummer"))
Felmded : Type mismatch
Jag har även provat att lägga till Cint och CLng
Då med Type mismatch: 'Cint', respetive Type mismatch: 'CLng'
Mvh KlasSv: vända på RS?
RecSet("SvarsID")=RecSet("SvarsID")=CLng(Request.QueryString("idnummer"))
Det ska väl stå:
RecSet("SvarsID") = CLng(Trim(Request.QueryString("idnummer")))
Mvh ThomasSv: vända på RS?
RecSet("SvarsID") = CLng(Trim(Request.QueryString("idnummer")))
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'CLng'
RecSet("SvarsID") = Request.QueryString("idnummer")
Microsoft VBScript runtime error '800a000d'
Type mismatch.
Mvh KlasSv: vända på RS?
Mvh Klas
<%
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("\receptsidan\db\prat.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset") %>
<% Laggtill = "SELECT * FROM inlagg"
RecSet.Open Laggtill, Databas, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("Namn") = Request.Form("namn")
RecSet("Datum") = Request.Form("datum")
RecSet("Inlagg") = (Replace(Request.Form("text") , vbCrLf, "<br>"))
RecSet("SvarsID") = CLng(Trim(Request.QueryString("idnummer")))
RecSet.Update
RecSet.Close %>Sv: vända på RS?
Koden nedan lägger till ett nytt fält i din databas...
Var det så att du ville lägga till en ny eller ville du uppdatera en befintlig?
Säg till om jag är ute och cyklar just nu =)
Men den här koden ska fungera...
<code>
Dim strNamn, strDatum, strInlagg, lngID, strSQL
strNamn = Replace(CStr(Trim(Request.Form("namn"))), "'", "''")
strDatum = CDate(Trim(Request.Form("datum")))
strInlagg = Replace(CStr(Trim(Request.Form("text"))), "'", "''")
lngID = CInt(Trim(Request.QueryString("idnummer")))
strSQL = "INSERT INTO inlagg SET (Namn, Datum, Inlagg, SvarsID) VALUES ('" & strNamn & "','" & strDatum & "','" & strInlagg & "','" & lngID & "')"
Set conNy = Server.CreateObject("ADODB.Command")
conNy.ActiveConnection = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("\receptsidan\db\prat.mdb")
conNy.CommandText = strSQL
conNy.Execute
conNy.ActiveConnection.Close
Set conNy = Nothing
</code>
Sen när du hämtar ut inläggen till dina sidor skriver du <%=Replace([Texten], vbCrlf, "<br>")%> om du vill få med radbrytningarna...
De sparas alltid i databasen...
Nu har jag ju inte testat att den här koden fungerar men du kan ju göra det och se vad den ger för svar, förutsatt att det är just lägga till en ny du vill i databasen...
Fråga om du undrar över något mer...
Mvh ThomasSv: vända på RS?
Tack för att du orkar engagera dig. :-)
Med koden du skrev(snygg lösning dock :-) får jag ändå :
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'CInt'
/receptsidan/prattackfordittsvarsinlagg.asp, line 46
rad 46 är:
IngID = CInt(Trim(Request.QueryString("idnummer")))
dvs samma fel, så felet ligger nog utanför koden du skrev och kodsnutten jag postade sist ändå. Kan det bero på att Query.String som den läser av ligger i frames och inte skrivs ut i adressfältet, fast det ska väl fungera ändå, har för mig att det gjort det förut för mig.
I början av koden har jag
<% Response.Buffer = True %>
<!-- #include file="adovbs.inc" -->
Mvh KlasSv: vända på RS?
Kom på att inställningarna för fältet SvarsID i Access kan vara relevant(tror jag....)
Fältnamn : SvarsID
Datatyp : Tal
Fältstorlek :Långt heltal
Decimaler : Automatisk
Standardvärde : 0
Obligatorisk : Nej
Indexerat : Ja - dubbletter tillåtna
Övriga inställningsrutor är tomma, jag kör Access 97
Mvh KlasSv: vända på RS?
Skriv då IngID = Trim(Request.QueryString("idnummer"))
Sen kan du skriva följande kod just efter lngID får sitt värde...
För om det blir fel med cint då är det troligen så at det inte blir något värde, eller ett värde som inte är numreriskt...
Men hjälp av denna kod ser du vad värdet blir...
<code>
Response.Write lngID
Response.End
</code>
Och i frågeuttrycket (adressfältet) måste du ju ha sidan.asp?idnummer=..........
Annars går det inte...
Mvh ThomasSv: vända på RS?
Jag körde med din kod, och den gick igenom utan att ge error, och skrev sedan ut "Tack för ditt svarsinlägg" *glad* och det verkade ju jättebra. Dock märkte jag att svarsinlägget inte noterades när jag kollade på websidan igen, ,korrigerade sedan din kod till nedstående, då jag förstår den koden bättre men innebörden ska ju vara densamma. Det superduperskumma är att det inte läggs till något alls(varken med din eller min kod) till databasen(och den borde ju ge error om den inte hittar db:n eller ngt annat konstigt), jag har laddat ner prat.mdb flera gånger från servern också o kollat vad indata kan ha blivit av, men prat.mdb är helt intakt, dvs inga nya data alls, jag har även sparat filnamet prat.mdb som andra namn för att vara säker på att jag verkligen kollar i rätt fil/databas.
Sen då sidan ligger i Frames, så synns ju inte en QueryString för blotta ögat, men som jag har förstått det så ska det gå ändå.
Nu skriver den alltså bara ut "Tack för ditt svarsinlägg", och inte ens Response.Write lngID , koll1 och koll2 , det är bara tomt där den borde skriva ngt om det.
Postar hela koden här, om den får plats.
Ps, jag tar inte det minsta illa upp om du ger upp på detta, du har ju hjälp mig jättemycket redan.
Mvh Klas
<% Response.Buffer = True %>
<!-- #include file="adovbs.inc" -->
<html>
<head>
<title>Diskussionsforum</title>
<link rel=stylesheet href="mall.css" type="text/css">
<style type="text/css">
<!--
a {text-decoration: none }
-->
</style>
</head>
<BODY bgcolor="#ffffcc">
<center><h1>Matprat</h1></center>
<p>
<h2>Tack för ditt svarsinlägg </h2>
<p>
<% '===================================================================================================================== %>
<% 'Öpnna databasen %>
<% '===================================================================================================================== %>
<%
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("\receptsidan\db\prat.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset") %>
<% Laggtill = "SELECT * FROM inlagg"
RecSet.Open Laggtill, Databas, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("Namn") = Request.Form("namn")
RecSet("Datum") = Request.Form("datum")
RecSet("Inlagg") = (Replace(Request.Form("text") , vbCrLf, "<br>"))
IngID = Trim(Request.QueryString("idnummer"))
Response.Write lngID
Response.End
RecSet("SvarsID") = IngID
RecSet.Update
RecSet.Close
koll1 = Request.Form("namn")
koll2 = (Replace(Request.Form("text") , vbCrLf, "<br>"))
Response.Write koll1
Response.End
Response.Write koll2
Response.End
%>
<% '=================================================================================== %>
<% ' Stänga databasen %>
<% '=================================================================================== %>
<% Databas.Close %>
</Body>
</html>Sv: vända på RS?
Mvh Klas
<form method="POST" action="prattackfordittsvarsinlagg.asp?idnummer=<%trim(Request.QueryString("idnummer"))%>" >
Skriv nytt inlägg i forumet <br>
Namn:<br>
<input type="text" size="30" name="namn" style="font-family: tahoma, verdana, arial; font-size: 8pt"><p>
Inlägg:<br>
<textarea cols="50" rows="10" name="text"></textarea><p>
<input type="hidden" size="30" name="datum" value="<% =Date %>" style="font-family: tahoma, verdana, arial; font-size: 8pt"><p>
<td>
<p><p> <h2><input type="submit" value=" Skicka " style="font-family: tahoma, verdana, arial; font-size: 8pt"></h2>
</td>
</tr>
</table>
</form>Sv: vända på RS?
När du länkar till pratskrivutinlagg.asp så har du QueryStringen "idnummer"...
Men sen när du länkar vidare från den sidan till pratnyttsvarsinlagg.asp så har du QueryString "id", som borde vara QueryString "idnummer" för att det ska fungera med koden på nästa sida...
Så det är där felet sitter, alltså på sidan pratnyttsvarsinlagg.asp...
Byter du ut "id" mot "idnummer" så ska det fungera perfekt...
Och jag vill bara tillägga att "min" kod är nog lite snabbare än din kod, men du använder ju den du trivs med...
Mvh ThomasSv: vända på RS?
Men, men ändrade nu, det ville sig ändå inte, (inget hoppar in i databasen etc.)
Jag ska skriva ut all kod imorgon o kolla igenom, kanske har jag gjort samma fel på fler ställen, så nu ska det nog lösa sig ändå.
Tack för all hjälp o receptet. :-)
Mvh KlasSv: vända på RS?
Jag tog bort:
IngID = Trim(Request.QueryString("idnummer"))
RecSet("SvarsID") = IngID
För att se vad som hände, men det blev ingen skillnad, dvs varken namn, datum eller inlagg hoppade in i databasen, Nu stämmer det nog med QueryStringen iallafall.
Jag kommer att testa o jämföra nuvarnde kod mot den jag hade innan då allt utom just "SvarsID" åkte in i databasen, o se om jag kan hitta felet, men det blir nog senare idag ändå.
Mvh KlasSv: vända på RS?
<form method="POST" action="prattackfordittsvarsinlagg.asp?idnummer=<%trim(Request.QueryString("idnummer"))%>" >
Ska stå:
<form method="POST" action="prattackfordittsvarsinlagg.asp?idnummer=<%=Trim(Request.QueryString("idnummer"))%>" >
Och lägg till lngID sen så ska du se att det borde fungera...
Tror att det är indexeringen i databasen som ställer till det att du inte får in något eftersom den vill ha ett id nummer av dig...
Brukar inte skrika till med fel vid sådana tillfällen och koden verkar flyta på utan problem, men all kod efter ett sånt fel slutar liksom fungera...
Alla Response.Write i alla fall =)
Men testa med att fixa till actiontaggen i form och lägg till lngID igen så ska vi se om det fungerar...
Men om jag vore du skulle jag lägga idnummret i en hidden field istället och bara ha sidan som en action och hämta in id med Request.Form...
Och receptet var så lite så =)
Måste ju dela med mig av mitt bästa mattips ;)
Mvh ThomasSv: vända på RS?
Ett stort *TACK* för all hjälp, verkligen.
Jag gör sidan som övning till en ASP, SQL, Javascript etc 5p tenta nu på torsdag, får väl se hur det går.
Mvh KlasSv: vända på RS?
Lycka till på tentan!
Och jag hjälper gärna till om jag kan...
Det har bara varit kul!
Mvh ThomasSv: vända på RS?
Tyvärr är de inte anslutna till nätet, annars hade du gärna fått hjälpa till *s* *skojar*
KlasSv: vända på RS?
Och jag håller med dig; programmera på papper *suck*
Undrar om jag skulle kunna få uppgifterna att fungera... *hmmm*
Kan inte allt men en hel del kan man nog...
Men javascript är jag inte alls haj på...
Mvh Thomas