webForumDet fria alternativet

Öppna access table i ett annat

ASP

25 svar · 354 visningar · startad av Meng

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

Hej jag har gjort en sida som visar specifika info om en post.

Den öppnas vanligt genom förfrågan om vilken id posten har:

<%Set RS=Conn.Execute("Select * From opgave Where id=" & Request.QueryString("ID"))%>

Detta funkar prima men nu vill jag hämta in saker från ett annat table i databasen och också visa detta på den specifika posten.

Det är då svar till posten och ska bli lite forum linknande.
Då har jag gjort så att jag har ett annat table som heter "besvar" som betyder i princip svar på danska. Varje post där har ett datum, ett id från den andra databasen, ett eget id som är helt irrellevant. och en författare.

så mitt i min specifika visning av posten har jag slängt in detta vilket jag inte kan få till att funka, antagligen något stort fel på koden eftersom att jag inte är särkillt haj på sånt här än. Var ligger felet, går det att göra det smartare osv:

	<%SQL = "SELECT * FROM besvar WHERE opgave_id <> " & Request.QueryString("ID") & " Order By dato ASC"
	RecSet.Open SQL, Conn
	If RecSet.EOF Then%>

	 <tr>
        	<td width="120" align="left" valign="top" style="font-size: 12px;"><b>Ingen svar</b></td><td align="left" valign="top" style="font-size: 12px;"></td>
	 </tr>

	<%Else
	Do While Not RecSet.EOF%>
	 <tr>
        	<td width="120" align="left" valign="top" style="font-size: 12px;"><b>Svar</b> af </td><td align="left" valign="top" style="font-size: 12px;"><%=RS("navn")%> </td>
	 </tr>
	 <tr>
        	<td width="120" align="left" valign="top" style="font-size: 12px;">Information: </td><td align="left" valign="top" style="font-size: 12px;"><%=Replace(RS("besvar"),vbCrLf,"<br>")%></td>
	 </tr>

	<%RecSet.MoveNext
	Loop%>	 

	<%End If%>

	<%RecSet.Close
	Set RecSet = Nothing%>
Medlem sedan feb. 2003549 inlägg
#2

Jaja ingen pallar svara, men jag har utveklat det lite, men har fortfarande problem..

Detta fungerar:

	<%Set RecSet = Conn.Execute("SELECT * FROM besvar WHERE [B]id = 308[/B]")%>

	 <tr>
        	<td width="120" align="left" valign="top" style="font-size: 10px;"><%=recset("opgave_id")%></td><td align="left" valign="top" style="font-size: 10px;">Svar af: <b><%=RecSet("navn")%></b> | Oprettet: <b><%=FormatDateTime(RecSet("dato"),2)%> (<%=FormatDateTime(RecSet("dato"),4)%>)</b> <%If RecSet("dato_edit") <> "" Then%>|  Redigeret: <b><%=FormatDateTime(RecSet("dato_edit"),2)%> (<%=FormatDateTime(RecSet("dato_edit"),4)%>)</b><%End If%></td>
	 </tr>
	 <tr>
        	<td width="120" align="left" valign="top" style="font-size: 10px;"></td><td align="left" valign="top" style="font-size: 10px;">Svar: <%=Replace(RecSet("besvar"),vbCrLf,"<br>")%></td>
	 </tr>
	<%RecSet.Close
	Set RecSet = Nothing%>

När jag skriver id = 308 så funkar det men skirver jag WHERE opgave_id = 209 eller att den ska hämta från Querystringen så funkar det ej, får detta felet:

Microsoft JET Database Engine error '80040e07'
Data type mismatch in criteria expression.

/afd/afd-it/opgave.asp, line 166

hämtar jag opgave_id så får jag 209 så det funkar...

Medlem sedan nov. 20017 144 inlägg
#3

För att din querystring inte inehåller något antagligen.
Se till att alltid testa att skriva ut din sql-sats för att kontrollera om värdena följer med.

SQL = "SELECT * FROM besvar WHERE opgave_id <> " & Request.QueryString("ID") & " Order By dato ASC"
Response.write "Debug: "& SQL
Response.end
Medlem sedan feb. 2003549 inlägg
#4

Det är väl rätt: Debug: SELECT * FROM besvar WHERE opgave_id <> 209 Order By dato ASC

Medlem sedan feb. 2003549 inlägg
#5

Nu använde jag din istället.

	<%SQL = "SELECT * FROM besvar WHERE opgave_id <> " & Request.QueryString("ID") & " Order By dato ASC"%>

	 <tr>
        	<td width="120" align="left" valign="top" style="font-size: 10px;"><%=RecSet("opgave_id")%></td><td align="left" valign="top" style="font-size: 10px;">Svar af: <b><%=RecSet("navn")%></b> | Oprettet: <b><%=FormatDateTime(RecSet("dato"),2)%> (<%=FormatDateTime(RecSet("dato"),4)%>)</b> <%If RecSet("dato_edit") <> "" Then%>|  Redigeret: <b><%=FormatDateTime(RecSet("dato_edit"),2)%> (<%=FormatDateTime(RecSet("dato_edit"),4)%>)</b><%End If%></td>
	 </tr>
	 <tr>
        	<td width="120" align="left" valign="top" style="font-size: 10px;"></td><td align="left" valign="top" style="font-size: 10px;">Svar: <%=Replace(RecSet("besvar"),vbCrLf,"<br>")%></td>
	 </tr>
	<%RecSet.Close
	Set RecSet = Nothing%>

Fick fel:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'RecSet'

/afd/afd-it/opgave.asp, line 169

Provade att använda RS iställer och fick type missmatch fel

Medlem sedan nov. 20017 144 inlägg
#6

Se till att datatypen är integer
opgave_id <>
opgave_id =
??????????

Medlem sedan feb. 2003549 inlägg
#7

tänkte väl =)

<> betyder väl "allting annat än" om jag förstått rätt

Medlem sedan feb. 2003549 inlägg
#8

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

Medlem sedan nov. 20017 144 inlägg
#9

Ja, samma som: Where NOT opgave_id = 209

Men då har du säkert ett fel kolumnnamn i sql-satsen.

Medlem sedan feb. 2003549 inlägg
#10

Vad gör jag för fel?

Medlem sedan nov. 20017 144 inlägg
#11

Du skriver förs: WHERE id = 308
sedan skriver du: WHERE opgave_id = 209
Vad gäller?

Medlem sedan feb. 2003549 inlägg
#12

Nä jag har ju kollat och dubbel kollat hur många gånger som hälst..

Databasen:

Tabell namn: besvar
Fält: ID, opgave_id, navn, besvar, dato, dato_edit

Medlem sedan feb. 2003549 inlägg
#13

Alltså ID = 308 är ju id:n svaret få vilken är helt irrelevant..
opgave_id är den id som sparas så jag vet vilken post av opgaverne som svaret tillhör. så opgave_id
= 209 är den som gäller

Medlem sedan nov. 20017 144 inlägg
#14

Visa raderna som du får felmeddelande på då.

Medlem sedan feb. 2003549 inlägg
#15

ADODB.Recordset error '800a0cc1'

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

/afd/afd-it/opgave.asp, line 168

Rad 168: <td width="120" align="left" valign="top" style="font-size: 10px;"><%=RS("opgave_id")%></td><td align="left" valign="top" style="font-size: 10px;">Svar af: <b><%=RS("navn")%></b> | Oprettet: <b><%=FormatDateTime(RS("dato"),2)%> (<%=FormatDateTime(RS("dato"),4)%>)</b> <%If RS("dato_edit") <> "" Then%>| Redigeret: <b><%=FormatDateTime(RS("dato_edit"),2)%> (<%=FormatDateTime(RS("dato_edit"),4)%>)</b><%End If%></td>

Medlem sedan feb. 2003549 inlägg
#16

Har det inget att göra med att funktionen inte är inställd på att lista allt med opgave_id 209 ?

Medlem sedan nov. 20017 144 inlägg
#17

Skapar du ett recordset som heter RecSet så kan du ju knappast använda RS("navn") osv
utan måste då använda RecSet("navn") osv.

Medlem sedan feb. 2003549 inlägg
#18

Det va bara jag som testat mellan RecSet och RS men det har inget med saken att göra, båda gav fel.

jag har ju inget Recset när jag skriver SQL? allså är inte allting jag gjort är fel eller är det kanske att jag överhuvudtaget inte stänger den gamla databas öppningen? jag lägger upp hela sidan som bifogat textdok.

Medlem sedan nov. 20017 144 inlägg
#19

Men det är ju skillnad på de olika felmeddelandena.

Medlem sedan feb. 2003549 inlägg
#20

Okej.. går det att se på textfilen vad som är fel?

272 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)