webForumDet fria alternativet

Någon

ASP

35 svar · 467 visningar · startad av Kent

Medlem sedan juli 2000355 inlägg
Frågan#1

Någon vänlig själ som skulle kunna fixa till den här koden så den funkar,
kommer ifrån boken Läd dig active server pages 2:0 på 3 veckor.
<%@ Language=VBScript %>
<html>
<%
Dim RSAdd
Dim SQL

<!--#include file="conn.asp"-->
SQL = "Select * from Forum WHERE 1=2"
Set RS = databas.execute(SQL)

RS.Add.Open SQL, Conn, 1, 2

RSAdd.AddNew
RSAdd("Namn") = Request.Form("txtNamn")
RSAdd("Epost") = Request.Form("txtEpost")
RSAdd("Rubrik") = Request.Form("txtRubrik")
RSAdd("Datum") = Date()
If Request.QueryString("Id") > 0 then
RSAdd("Parent") = Request.QueryString("Id")
Else
RSAdd("Parent") = 0
End If

RSAdd("Meddelande") = Request.Form("txtMeddelande")
RSAdd.Update

%>

Medlem sedan dec. 19998 577 inlägg
#2

Visa vad som finns i conn.asp

Så kanske vi kan hjälpa dig... :)

------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Har du gjort lumpen?

Medlem sedan mars 2000263 inlägg
#3

stoppa <!--#include file="conn.asp"--> utan för <% och %>, asså:
<!--#include file="conn.asp"-->
<%
Dim RSAdd
Dim SQL
SQL = "Select * from Forum WHERE 1=2"
Set RS = databas.execute(SQL)

RS.Add.Open SQL, Conn, 1, 2

o.s.v

------------------
/bohlin
kaffe är djävulens dryck
glögg är guds dryck

Medlem sedan juli 2000355 inlägg
#4

Det är inte det som är felet, även om koden ser ur som denna,

<%@ Language=VBScript %>
<html>
<%
Dim RSAdd
Dim SQL

Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("forum.mdb")
Session("dbasepath") = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "Select * from Forum WHERE 1=2"
Set RS = databas.execute(SQL)

	
RS.Add.Open SQL, Conn, 1, 2

RSAdd.AddNew
RSAdd("Namn") = Request.Form("txtNamn")
RSAdd("Epost") = Request.Form("txtEpost")
RSAdd("Rubrik") = Request.Form("txtRubrik")
RSAdd("Datum") = Date()
If Request.QueryString("Id") > 0 then
   RSAdd("Parent") = Request.QueryString("Id")
Else
   RSAdd("Parent") = 0
End If

RSAdd("Meddelande") = Request.Form("txtMeddelande")
RSAdd.Update

%>

så vill den ändå inte funka,
får upp att felet ligger i RSAdd utrycket.

Medlem sedan dec. 19998 577 inlägg
#5

Först initierar du ett recordset med namnet RS, och sedan försöker du att använda RSadd... du får välja ett av namnen...

------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Har du gjort lumpen?

Medlem sedan juli 2000355 inlägg
#6

Lite kod hjälp vore bra.

Medlem sedan mars 20001 266 inlägg
#7

Det är som Vide säger du sätter värde
Set RS = databas.execute(SQL)
och försöker sen hämta det som RSadd
du får sätta
Set RSadd = databas.execute(SQL) isf för att det skall fungera.

Andreas

Medlem sedan juli 2000355 inlägg
#8

Får nu upp ett konstigt felmeddelande,
Recordset is read-only

/insert.asp, line 21

vad är fel då.?

Medlem sedan mars 20001 266 inlägg
#9

Skulle tippa på att katalogen bara har läs rättigheter och inte skrivrättigheter. Se till att katalogen både har skriv och läs rättigheter.

Andreas

Medlem sedan juli 2000355 inlägg
#10

Koden ser nu ut som denna,

<%@ Language=VBScript %>
<html>
<%
Dim Conn
Dim RSAdd
Dim SQL

Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "DSN=konto-data;Password=lösen"
SQL = "Select * from Forum WHERE 1=2"
Set RSAdd = Databas.Execute(SQL)

RSAdd.Open SQL, Databas, 1, 2

RSAdd.AddNew
RSAdd("Namn") = Request.Form("txtNamn")
RSAdd("Epost") = Request.Form("txtEpost")
RSAdd("Rubrik") = Request.Form("txtRubrik")
RSAdd("Datum") = Date()
If Request.QueryString("Id") > 0 then
   RSAdd("Parent") = Request.QueryString("Id")
Else
   RSAdd("Parent") = 0
End If

RSAdd("Meddelande") = Request.Form("txtMeddelande")
RSAdd.Update

%>

får upp fel,
Invalid operation on open object

/insert.asp, line 18

på rad 18 ligger
RSAdd.Open SQL, Databas, 1, 2

[Redigerat av Kent den 05 sep 2000]

Medlem sedan dec. 19996 721 inlägg
#11

SQL = "Select * from Forum WHERE 1=2"

1 kan inte vara 2.

Medlem sedan juni 2000144 inlägg
#12

Ta bort raden:
RSAdd.Open SQL, Databas, 1, 2

Du har redan skapat ett recordset på raden innan.

Set RSAdd = Databas.Execute(SQL)

Medlem sedan juli 20003 825 inlägg
#13

En annan grej som kan vara relevant att veta är skillnaden mellan INCLUDE FILE och INCLUDE VIRTUAL. Med INCLUDE FILE måste filen ligga i samma katalog som sidan den inkluderas med. Du kan inte skriva <!-- INCLUDE FILE="../includes/meny.asp" --> Det blir error.

Men INCLUDE VIRTUAL menas roten av webbplatsen. Man kan skriva <!-- INCLUDE VIRTUAL="/includes/meny.asp" --> men inte <!-- INCLUDE VIRTUAL="../includes/meny.asp" -->

Hajjar du? Själva INCLUDE grejen funkar inte som vanlig html och om man inte känner till det kan till synes lätta problem bli helt omöjliga.

------------------
Life is a bitch... and then you marry one.

Medlem sedan juli 2000355 inlägg
#14

Emission du skrev, 1 kan inte vara 2.?
hur ska det då vara.?

Medlem sedan mars 20002 836 inlägg
#15

Hello,

du kan inte ha en siffra som fältnamn eller variabelnamn. dvs, 1 = 2 borde vara a = 2 tex.

Sedan det med include file=../filnamn.inc funkar visst, beror på hur servern är inställd.

cya,
PatrikB

------------------
=================================
** ZWGdesign **
=================================

Medlem sedan juni 200032 967 inlägg
#16

om man ställer frågan "select * from blaha where 1=2" så får man ett tomt recordset tebaks.

1 och 2 behöver alltså inte alls vara fältnamn.

du kan skriva select "distinct 24/2 from blaha" om du inte orkar plocka fram räknaren.

det jag försöker komma fram till är bara att det behöver inte nödvändigtvis vara fält du selectar från en tabell.

i det här fallet kan jag tänka mig kent vill hämta ett tomt recordset för att kunna lägga till poster med recordset-objektet.

och då torde det enligt mig vara korrekt att skapa ett tomt recordset genom att bara hämta alla poster där 1=2, dvs inga.

vi vill ju spara lite prestanda och inte hämta onödig data, eller hur?

------------------
<A HREF="http://www.cartman.nu" TARGET=_blank>
det man inte minns har inte hänt.
hit med en berka!</A>

Medlem sedan juli 2000355 inlägg
#17

Hur gör jag för att fixa till felet.?

Medlem sedan mars 20002 836 inlägg
#18

Hello,

jepp, stämmer .....

fast då skulle jag ej köra med denna typ av connection:

Set RS = databas.Execute(SQL)

Utan köra denna:

Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SQL, databas, 1, 2

som ger mer "kontroll" över recordsetet ...

cya,
PatrikB

------------------
=================================
** ZWGdesign **
=================================

Medlem sedan dec. 19996 721 inlägg
#19

"om man ställer frågan "select * from blaha where 1=2" så får man ett tomt recordset tebaks."

Det är sant. Tänkte inte på att det inte var så tokigt. :)

Sedan måste jag bara skrika INSERT!!!!!

¨;)

Medlem sedan dec. 19998 577 inlägg
#20

Vi skriker i kör emission...

Läs mer om INSERT här: http://www.webavis.nu/webavis/html/artiklar/asp/asp8.shtml

------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Har du gjort lumpen?

[Redigerat av Vide den 06 sep 2000]

263 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)