webForumDet fria alternativet

hämta data, item cannot be found

10 svar · 405 visningar · startad av jake

jakeMedlem sedan sep. 2001649 inlägg
#1

hej,
när jag försöker hämta data från en tabell, vinsttips enligt nedan
får jag följande felmeddelande:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/sitetips2004/sitetipswww/siteboard/vinsttips.asp, line 46

där rad 46 är följande rad i utdraget nedan:


<td class="site-lank" onClick=window.open("<%=oRecSet("url")%>"); width="400" align="left"><%=oRecSet("arrangor")%></td>

Jag har hittat info enligt följande....
The error occurs in one of two situations:

You try to access a field in the fields collection that is not in the Recordset
You try to access a field using an ambiguous name.

men tycker att det borde funka eftersom dessa finns med som fält i tabellen vinsttips.


<%

Const NumOfSites = 10

Function ListSites(SQLStmt, NumOfSites, startID)
  Dim olddate
  Dim writtentable

  Set oRecSet = Server.CreateObject("ADODB.Recordset")
  SQLStmt2 = "SELECT COUNT(*) as Antal FROM vinsttips"
  oRecSet.Open SQLStmt2, strConn, 3, 3
  intAntal = oRecSet("Antal")
  oRecSet.Close

  Alla = intAntal / NumOfSites
  Alla = int(Alla) -- 1
  Sida = startID / NumOfSites
  Sida = int(Sida) -- 1

  Set oRecSet = Server.CreateObject("ADODB.Recordset")
  oRecSet.Open SQLStmt, strConn, 3, 1

  If oRecSet.EOF = False Then

	Do While oRecSet.EOF = False
		If olddate <> oRecSet("datum") Then

			writtenTable = 0
		 %>
		
		<table width="570" border="0" cellspacing="0" cellpadding="0">
			
		<%End If  '' olddate <> oRecSet("datum") %>
		  			<tr onMouseOver="this.style.backgroundColor='#F0F0F0';" onMouseOut="this.style.backgroundColor='';">
				<td class="site-ovrigt" width="100" align="left"><%=oRecSet("datum")%></td>
				<td class="site-lank" onClick=window.open("<%=oRecSet("url")%>"); width="400" align="left"><%=oRecSet("arrangor")%></td>
				<td class="site-lank" onClick=window.open("<%=oRecSet("direkturl")%>"); width="400" align="left"><%=oRecSet("uppgift")%></td>
				<td class="site-ovrigt" width="100" align="left"><%=oRecSet("vinst")%></td>
				<td class="site-ovrigt" width="100" align="left"><%=oRecSet("slutdatum")%></td>

			</tr>
jonneMedlem sedan jan. 20011 154 inlägg
#2

Du har inte med dem i din selectsats. Där har du bara count(*) as Antal

jakeMedlem sedan sep. 2001649 inlägg
#3

betyder inte count(*) räkna alla...
hur ska jag skriva istället?

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Det är inte select count(*) som är orsaken

Du skickar med SQLStmt som parameter och det är den som inte innehåller någon resultatkolumn som heter arrangor

jakeMedlem sedan sep. 2001649 inlägg
#5

hur kan jag göra det då?

jonneMedlem sedan jan. 20011 154 inlägg
#6

Vad skickar du in i funktionen då? Hur ser anropet ut

jakeMedlem sedan sep. 2001649 inlägg
#7

ahh bra fråga, jag var så fokuserad på ovanstående att jag inte tittade på det och såg då att det var fel tabellnamn där.

Men nu får jag istället problem när jag från ett formulär ska lägga till uppgifter i databasen.

Formuläret ser ut så här:


    <form method="post" name="addsite" action="siteboard/addvinsttips.asp" target="addsite" onSubmit="window.open('siteboard/addvinsttips.asp','addsite','width=250,height=200,top=150,left=200')">
   
      <input name="arrangor" size="20" maxlength="14" value="Tävlingsarrangör" onFocus="if(this.value=='Ditt namn')this.value='';" onblur="if(this.value=='')this.value='Tävlingsarrangör';">
      <input name="url" size="20" maxlength="249" value="http://" onblur="if(this.value=='')this.value='http://';">*
      <input name="uppgift" size="20" maxlength="65" value="uppgift" onFocus="if(this.value=='Kommentar')this.value='';" onblur="if(this.value=='')this.value='uppgift';">
      <input name="direkturl" size="20" maxlength="249" value="http://" onblur="if(this.value=='')this.value='http://';">
      <input name="slutdatum" size="20" maxlength="65" value="051231" onFocus="if(this.value=='Kommentar')this.value='';" onblur="if(this.value=='')this.value='051231';">
      <input name="vinst" size="20" maxlength="65" value="vinst" onFocus="if(this.value=='Kommentar')this.value='';" onblur="if(this.value=='')this.value='vinst';">

      <input type=submit value="Tipsa!" onClick="return Validate();">
   </form>

och i addvinsttips.asp finns följande kod:


<%
Function DBAddToDatabase(myUrl)

	strUppgift = Trim(Replace(Request.Form("uppgift"), "'", "''", 1, -1, 1))
	strArrangor = Trim(Replace(Request.Form("arrangor"), "'", "''", 1, -1, 1))
	strUrla = Trim(Replace(Request.Form("url"), "'", "''", 1, -1, 1))
	strSlutdatum = Trim(Replace(Request.Form("slutdatum"), "'", "''", 1, -1, 1))
	strVinst = Trim(Replace(Request.Form("vinst"), "'", "''", 1, -1, 1))

	Set oConnect = Server.CreateObject("ADODB.Connection")
	oConnect.Open strConn
	oConnect.Execute("INSERT INTO vinsttips_nonapproved (datum, tid, slutdatum, arrangor, url, uppgift, direkturl, vinst) VALUES ('" & Date & "', '" & Time & "', '" & strSlutdatum & "', '" & strArrangor & "', '" & strUrla & "', '" & strUppgift & "','" & myUrl & "','" & strVinst & "')")

	oConnect.Close
	Set oConnect = Nothing
	
End Function

'''This function looks for a site in the database
Function DBFindInDatabase(myUrl)

	Dim bExist1
	bExist1 = 0
	Dim bExist2
	bExist2 = 0
	Dim bExist3
	bExist3 = 0

	Set oRecSet = Server.CreateObject("ADODB.Recordset")

	SQLStmt = "SELECT * FROM vinsttips where url='" & myUrl & "'"
	oRecSet.Open SQLStmt, strConn, 3, 3
	bExist1 = not oRecSet.eof 
	oRecSet.Close

	SQLStmt = "SELECT * FROM vinsttips_nonapproved where url='" & myUrl & "'"
	oRecSet.Open SQLStmt, strConn, 3, 3
	bExist2 = not oRecSet.eof 
	oRecSet.Close

	Set oRecSet = Nothing

	If(bExist1 Or bExist2) Then bExist3 = True
	DBFindInDatabase = bExist3

End Function
%>

<html>
<head>
<title>Sitetips.nu</title>
<!--#include file="../metatags.asp"-->
</head>

<body bgcolor="#FFE9B9" text="#000000" link="#000000" vlink="#000000" alink="#000000">

<%
	Dim strUrl
	Dim bFinns
	strUrl = Replace(Request.Form("url"), "'", "''", 1, -1, 1)
	bFinns = 0

	If strUrl <> "" Then
	
		bFinns = DBFindInDatabase(strUrl)
		If bFinns = False Then
			Response.write "Tack för ditt tips"
			DBAddToDatabase(strUrl)
		Else
			Response.write "Den siten finns redan med i vår databas!<br>"			
		End If
	End If
%>

tacksom för tips på vad som är fel...

@ndersMedlem sedan juni 200032 969 inlägg
#8

Du använder metoden GET i ditt formulär, det innebär att alla värden skickas som querystrings. Du måste då använda request.querystring för att hämta in värdena.

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Och vad är problemet? (Frånsett att du skriver så långa rader att man måste scrolla i sidled.)

jakeMedlem sedan sep. 2001649 inlägg
#10

var visst med även ett sökformulär i koden ovan som använde get (editerade bort det för att det skulle bli tydligare) men formuläret som ska skicka till databasen använder post...)

problemet är att inget skickas från formuläret till databasen och sidan addvinsttips.asp visas inte så man får inget felmeddelande...

jakeMedlem sedan sep. 2001649 inlägg
#11

hittade efter ett antal timmar att det var url:en i action i formuläret som var felriktad...
kanske bättre att skapa en ny tråd för varje sak man fastnar på istället för att bygga vidare på trådar...

136 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)