20. maj 2006 - 22:11Der er
104 kommentarer og 1 løsning
møg fejl..
ADODB.Field error '80020009'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/tilmelding/holdnavnliste.asp, line
hvorfor?
holdid = Request.Querystring("id")
SQL = "select hold.*, holdnavn.holdnavn from hold inner join holdnavn on hold.holdnavn = holdnavn.holdnavn where holdnavn.id = " & holdid Set rs = Conn.Execute(SQL)
SQL = "select hold.*, holdnavn.holdnavn from hold inner join holdnavn on hold.holdnavn = holdnavn.holdnavn where holdnavn.id = " & holdid Set rs = Conn.Execute(SQL)
Ja, det kan vi kodt konkludere ud fra SQL-sætningen - men det er dataene vi skal kende.
Er det en Access-database du bruger? Hvis det er, så foreslår jeg at du downloader den og så prøver den der SQL-sætning direkte i Access (i stedet fro at gå igennem ASP).
Så har du vel adgang til en phpmyadmin hvor at du kan afprøve den?
Lad være med at fokusere så meget på at der må være en fejl i din ASP-kode. Det er meget mere sandsynligt at fejlen faktisk er i dine data i databasen. Specielt hvis - som du siger - at koden har virket tidligere.
der er kun et felt også kaldet holdnavn og der står pt. peter som holdnavn og når jeg opretter et hold vælger jeg så hvilket holdnavn hold 102 skal være under og her vælger jeg så holdnavn peter der er sådan det hænger sammen
SQL = "select hold.*, holdnavn.holdnavn from hold inner join holdnavn on hold.holdnavn = holdnavn.holdnavn where holdnavn.id = " & holdid Set rs = Conn.Execute(SQL)
i mine øjneser det ud som om du har en fejl i sin SQL sætning :)
du starter med " og slutter med " og så får du ik sidste del med... husk på alt SQL'en skal læse skal være med i ""... ergo prøv at smække & " på til sidst så tror jeg den er der... måske?
her er koden nu og stadig er den sur? æv jeg forstår det ikke begge tabelle har feltet holdnavn og begge felter indeholder det samme "peter"
SQL = "select hold.*, holdnavn.holdnavn from hold inner join holdnavn on hold.holdnavn = holdnavn.holdnavn where holdnavn.id = " & holdid Set rs = Conn.Execute(SQL)
SQL = "select hold.*, holdnavn.holdnavn from hold inner join holdnavn on hold.holdnavn = holdnavn.holdnavn where holdnavn.id = " & holdid Set rs = Conn.Execute(SQL)
Man kunne overveje at lave lidt navne-magi, dvs. kalde id-feltet i hold-tabellen for `hold_id` og i holdnavn-tabellen for `holdnavn_id`. Så kan man måske nemmere se om man rammer det rigtige felt. Bare et forslag ... ;)
SQL = "select hold.*, holdnavn.holdnavn from hold inner join holdnavn on hold.holdnavn = holdnavn.holdnavn where hold.id = " & holdid Set rs = Conn.Execute(SQL)
%> <% Response.write "<table>" Response.write "<tr><td bgcolor='#FFCD32'><b>Holdnummer</td><td bgcolor='#FFCD32'><b>Dag</td><td bgcolor='#FFCD32'><b>Tider</td><td bgcolor='#FFCD32'><b>Instruktør</td><td bgcolor='#FFCD32'><b>antal</td><td bgcolor='#FFCD32'><b>tilmelte</td><td bgcolor='#FFCD32'><b>tilmeld dig holdet</td><td bgcolor='#FFCD32'><b>se tilmeldte til holdet</td><td> <tr>" Do strSQL = "select count(*) as antalTilmeldte from tilmelding where holdnr = " & rs("holdnr") Set rsCount = Conn.Execute(strSQL)
strNavn = rs("holdnr") if rsCount("antalTilmeldte") >= rs("holdantal") then strLink = "Der kan ikke tilmeldes flere til dette hold" else strLink = "<b><a href='tilmelding.asp?id=" & rs("Id") & "' target='_top'>" & strNavn & "</a>" end if
SQL = "SELECT hold.*, holdnavn.holdnavn FROM hold INNER JOIN holdnavn ON hold.holdnavn = holdnavn.holdnavn WHERE hold.id = " & holdid Set rs = Conn.Execute(SQL)
Response.write "<table>" Response.write "<tr><td bgcolor='#FFCD32'><b>Holdnummer</td><td bgcolor='#FFCD32'><b>Dag</td><td bgcolor='#FFCD32'><b>Tider</td><td bgcolor='#FFCD32'><b>Instruktør</td><td bgcolor='#FFCD32'><b>antal</td><td bgcolor='#FFCD32'><b>tilmelte</td><td bgcolor='#FFCD32'><b>tilmeld dig holdet</td><td bgcolor='#FFCD32'><b>se tilmeldte til holdet</td><td> <tr>" Do While Not rs.EOF strSQL = "SELECT count(*) AS antalTilmeldte FROM tilmelding WHERE holdnr = " & rs("holdnr") Set rsCount = Conn.Execute(strSQL)
strNavn = rs("holdnr") If rsCount("antalTilmeldte") >= rs("holdantal") Then strLink = "Der kan ikke tilmeldes flere til dette hold" Else strLink = "<b><a href='tilmelding.asp?id=" & rs("Id") & "' target='_top'>" & strNavn & "</a>" End If
når man tilmelder sig får man en mail: men jeg kan ikke få den til at skrive holdnr tider dag instruktøt den skriver kun holdnavn? i mailen man får
hvordan probber jeg dem ind? id = Request.Form("id") SQL = "select * from hold where id = " & id set rs = Conn.Execute(SQL) holdnavn = rs("holdnavn") holdnummer = rs("holdnr")
SQL = "update hold set tilmeldte = tilmeldte + 1 where id = " & id Conn.Execute(SQL)
'Kode som sender mailen her:
if Request.Form("adresse") <> "" then Dim Mailer Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
' Her sættes afsender navn og e-mail adresse Mailer.FromName = "Afsenders navn" Mailer.FromAddress= "webmaster@slsk.dk"
' Afsenders mailserver RETTES TIL Mailer.RemoteHost = "mail.slsk.dk"
' Her sættes modtager navn og e-mail adresse Mailer.AddRecipient "" & Request.Form("efternavn"), Request.Form("email")
' Her sættes overskriften på mailen Mailer.Subject = "Du er tilmeldt hold " & holdnr
' Her sættes selve teksten til mailen Mailer.BodyText = "Hej med dig" & VbCrLf & "du er tilmeldt hold " & holdnavn
' Send e-mail og skriv status if Mailer.SendMail then Response.Write "Mailen er afsendt..." else Response.Write "Der skete en fejl: " & Mailer.Response end if
' Fjern objekt igen Set Mailer = Nothing end if
response.write "Du er tilmeldt holdet " & holdnavn & " og du modtager en email hvis du har angivet en email adresse."
nu har jeg lidt problemer igen med en tilmeldingsliste..
når jeg klikker på holdnr skal den vise alle dem der har tilmeldt sig hodlnr: 102 f.eks men den laver samme fejl som første problem, jeg kan bare ikke helt finde ud af hvor jeg skal rettet i koden..
strSQL = "Select * From tilmelding Where Id = " & Request.Querystring("id") Set rs = Conn.Execute(strSQL)
Du har nu adskillige gange fået at vide at du ikke skal løbe et resultsæt igennem på den måde - i dette spørgsmål, og i hvert fald i et andet. Hvorfor bliver du ved?
Men dit problem er vel at det ikke er id-feltet i tilmelding, der indeholder holdnummeret.
Hvorfor ikke gøre det rigtigt med det samme, det der med "do while" ? Jeg kunne forestille mig, at de dygtige mennesker, der har brugt tid på at fortælle dig det, kunne blive træt af at hjælpe, når det tilsyneladende ingen forskel gør.
Men til det andet: du må kigge på hvad du har puttet i tabellen tilmelding. Og hvis du vil have os til at hjælpe, så lad os kigge med.
<% Response.write "<table cellpadding='4' cellspacing='0'>" Response.write "<tr><td bgcolor='#FFCD32'><b>Efternavn</td><td bgcolor='#FFCD32'><b>adresse</td><td bgcolor='#FFCD32'><b>postnr</td><td bgcolor='#FFCD32'><b>by</td><td bgcolor='#FFCD32'><b>telefon</td><td bgcolor='#FFCD32'><b>email</td><td bgcolor='#FFCD32'><b>fornavn</td><td bgcolor='#FFCD32'><b>se fødselsdato</td> <td bgcolor='#FFCD32'><b>se holdnr</td><td> <tr>" if rs.bof or rs.eof then response.write "<b><font color='#ff0000'>Der er ingen hold oprettet til dette holdnavn!</b><br><br>" else Do While Not rs.EOF
sorry.. jeg var lige så glad for det virker herre godt på alle de andre sider :-)
strSQL = "Select * From tilmelding Where `holdnr` = " & Request.Querystring("id")
Set rs = Conn.Execute(strSQL)
%>
<FONT SIZE="2" COLOR=""><B>Oversigt over tilmeldinger til holdnr :</FONT> <% Response.write rs("holdnr")%><BR><BR>
<% Response.write "<table cellpadding='4' cellspacing='0'>" Response.write "<tr><td bgcolor='#FFCD32'><b>Efternavn</td><td bgcolor='#FFCD32'><b>adresse</td><td bgcolor='#FFCD32'><b>postnr</td><td bgcolor='#FFCD32'><b>by</td><td bgcolor='#FFCD32'><b>telefon</td><td bgcolor='#FFCD32'><b>email</td><td bgcolor='#FFCD32'><b>fornavn</td><td bgcolor='#FFCD32'><b>se fødselsdato</td> <td bgcolor='#FFCD32'><b>se holdnr</td><td> <tr>" if rs.bof or rs.eof then response.write "<b><font color='#ff0000'>Der er ingen hold oprettet til dette holdnavn!</b><br><br>" else Do While Not rs.EOF
<% Response.write "<table cellpadding='4' cellspacing='0'>" Response.write "<tr><td bgcolor='#FFCD32'><b>Efternavn</td><td bgcolor='#FFCD32'><b>adresse</td><td bgcolor='#FFCD32'><b>postnr</td><td bgcolor='#FFCD32'><b>by</td><td bgcolor='#FFCD32'><b>telefon</td><td bgcolor='#FFCD32'><b>email</td><td bgcolor='#FFCD32'><b>fornavn</td><td bgcolor='#FFCD32'><b>se fødselsdato</td> <td bgcolor='#FFCD32'><b>se holdnr</td><td> <tr>" if rs.bof or rs.eof then response.write "<b><font color='#ff0000'>Der er ingen hold oprettet til dette holdnavn!</b><br><br>" else %> <FONT SIZE="2" COLOR=""><B>Oversigt over tilmeldinger til holdnr :</FONT> <% Response.write rs("holdnr")%><BR><BR> <% Do While Not rs.EOF ... %>
eller:
<% Response.write "<table cellpadding='4' cellspacing='0'>" Response.write "<tr><td bgcolor='#FFCD32'><b>Efternavn</td><td bgcolor='#FFCD32'><b>adresse</td><td bgcolor='#FFCD32'><b>postnr</td><td bgcolor='#FFCD32'><b>by</td><td bgcolor='#FFCD32'><b>telefon</td><td bgcolor='#FFCD32'><b>email</td><td bgcolor='#FFCD32'><b>fornavn</td><td bgcolor='#FFCD32'><b>se fødselsdato</td> <td bgcolor='#FFCD32'><b>se holdnr</td><td> <tr>" if rs.bof or rs.eof then response.write "<b><font color='#ff0000'>Der er ingen hold oprettet til dette holdnavn!</b><br><br>" else response.write "<FONT SIZE='2' COLOR=''><B>Oversigt over tilmeldinger til holdnr :</FONT> " & rs("holdnr") & "<BR><BR>"
ok men "<FONT SIZE='2' COLOR=''><B>Oversigt over tilmeldinger til holdnr :</FONT> " & rs("holdnr") & "<BR><BR>" skal så øverst over tabelen.. hvordan får jeg den der op ?
der er et max af tilmeldte på et hold f.es 5 når tilmeldinger er nået dertil skal den skrive at der ikke er flere der kan tilmelde sig jeg har prøvet med :
if rs.bof or rs.eof then response.write "<b><font color='#ff0000'>Der er ingen hold oprettet til dette holdnavn!</b><br><br>" else Do While Not rs.EOF strSQL = "select count(*) as antalTilmeldte from tilmelding where holdnr = " & rs("holdnr") Set rsCount = Conn.Execute(strSQL)
strNavn = rs("holdnr") if rsCount("antalTilmeldte") >= rs("holdantal") then strLink = "Der kan ikke tilmeldes flere til dette hold" else strLink = "<b><a href='tilmelding.asp?id=" & rs("Id") & "' target='_top'>" & strNavn & "</a>" end if
Response.Write strLink
men som I kan se her kan man sagtens tilmelde flere på holdet .
l_otto> Nu har du falktisk givet dem til mig (20/05-2006 23:26:29), men hvis du gerne vil have dem tilbage så skal jeg da gerne oprette et retur-spørgsmål med dem?
jo man er på venteliste og nu skal man på holdet fordi en har meldt fra.. godt så tager jeg han fra ventelisten og sender en tilmelding.. og i samme huk skal han så slettes fra ventelisten... det ville være smart hvis man kunne sætte noget delete id from venteliste når man trykker på knappen
Din form submitter til scriptet "tilmelding.asp" så det er *der* at personen skal slettes fra ventelisten. Jeg ved ikke om det ovenstende kode er for tilmelding.asp eller om det er noget andet?
Den stump kode der skal udføres i tilmelding.asp ser sådan her ud:
strSQL = "DELETE FROM venteliste WHERE id = " & Request.Form("id") DataConn.Execute(strSQL)
Nu har jeg jo ikke set koden for "tilmelding.asp" så det er lidt svært at svare på det spørgsmål.
Men det skal sættes ind i scriptet sån' nogenlunde lige efter at du har udført den INSERT INTO sætning som indsætter personen i hold-tabellen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.