/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Update af record
Fra : Thomas Møller Nexø


Dato : 22-12-02 14:26

Hejsa. Jeg må indrørre at jeg ikke er så skarp i ASP.
Jeg har forgæves forsøgt at lave en side, der tillader opdatering
af et record set. Altså jeg har en oversigt over de seneste 20
nyheder i en database (access), der så linker til et specifikt id
på en anden side.

Min kode ser ud som følger: (Jeg åbner min database forbindelse i
toppen af siderne vha. en include fil).

<%

Set Rs = Server.Createobject("ADODB.Recordset")
Sql = "Select * From nyheder Where Id = " & Request("Id")

"UPDATE nyheder SET Header = '" & _
request.form("Header") & "', Dato = '" & _
request.form(Dato) & "', Nyhed = '" & _
request.form("Nyhed") & "' WHERE Id =" & Id &"'

Conn.Execute(strSQL)

%>

<form
action="nyheder_update.asp?Id=<%=Request.Querystring("Id")%>"
method="post">

<input type="text" size="50" name="Header" value="<%=
Rs("Header") %>">&nbsp;&nbsp;
<input type="text" size="20" name="Dato" value="<%= Rs("Dato")
%>">

<BR><BR>

<textarea rows="25" cols="50" name="Nyhed">
<%= Rs("Nyhed") %>
</textarea>

<BR><BR>

<input type="submit" name="opdater" value="Opdater nyhed">

</form>

Jeg får følgende fejl så snart jeg klikker ind på
nyheder_update.asp fra nyheder.asp:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0400)
En sætning var ventet
/admin/nyheder_update2.asp, line 18
"UPDATE nyheder SET Header = '" & _

Jeg har forsøgt flere foskellige metoder - både her fra gruppen
og fra forskellige bøger. Måske skulle man bare finde sig en
anden hobby

Kan nogen hjælpe?
På forhånd mange tak.

God Jul,
Thomas

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jonas Skafte Jensen (22-12-2002)
Kommentar
Fra : Jonas Skafte Jensen


Dato : 22-12-02 14:50

Den fejl du får, får du fordi du ikke kan starte en linie uden et
anførselstegn - der mangler et variabelnavn fulgt af et ligmed - eller noget
andet...

Fejlen optræder ellers typisk hvis man kommer til at proppe noget ren HTML
ind i en ASP-kodeblok.

Derudover ser det ud til at du er igang med både at vise din liste og
opdatere din DB. Det kan man godt, men da jeg ikke kan se noget kode der
skal vise listen, går jeg ud fra, at det du her vil er at opdatere...

Jeg har forsøgt at rette lidt i din kode, hvilket forhåbenligt vil bringe
dig videre...

<%
If trim(request.form("opdater")) <> "" then
strUpdateSql = "UPDATE nyheder SET Header = '" & _
request.form("Header") & "', Dato = '#" & _
request.form(Dato) & "#', Nyhed = '" & _
request.form("Nyhed") & "' WHERE Id =" & Id
Conn.Execute(strUpdateSQL)
End if
'Set Rs = Server.Createobject("ADODB.Recordset")
'Sql = "Select * From nyheder Where Id = " & Request("Id")

'Conn.Execute(strSQL)

%>

<form
action="nyheder_update.asp?Id=<%=Request.Querystring("Id")%>"
method="post">

<input type="text" size="50" name="Header" value="<%=
Rs("Header") %>">&nbsp;&nbsp;
<input type="text" size="20" name="Dato" value="<%= Rs("Dato")
%>">

<BR><BR>

<textarea rows="25" cols="50" name="Nyhed">
<%= Rs("Nyhed") %>
</textarea>

<BR><BR>

<input type="submit" name="opdater" value="Opdater nyhed">

</form>




Thomas Møller Nexø (22-12-2002)
Kommentar
Fra : Thomas Møller Nexø


Dato : 22-12-02 20:19

Hej Jonas.
Tak for dit svar.
Jeg har forsøgt at paste din kode ind i stedet for det jeg selv har lavet, men
nu får jeg bare en ny fejl:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0400)
En sætning var ventet
/admin/nyheder_update2.asp, line 32
=

Når man kigger i nogle af de "dyre" bøger, som jo burde kunne give svarerne får
man altid en anden løsningsmodel end af folk i diverse forums. Jeg synes de
løsninger man kan finde i dette forum generelt ser/ er en del mere enkelt
opbygget end i bøgerne. Hvorfor egentlig det?

I min bog om ASP oprettes der et record set, hver gang og der defineres altid
konstanter som adOpenDynamic osv?

Men det kan åbenbart lade sig gøre at lave det meget enkelt. Spørgsmåler er så
bare hvordan?


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jonas Skafte Jensen (22-12-2002)
Kommentar
Fra : Jonas Skafte Jensen


Dato : 22-12-02 20:36

> Fejltype:
> Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0400)
> En sætning var ventet
> /admin/nyheder_update2.asp, line 32

Hvad står der i din linie 32?



Thomas Møller Nexø (22-12-2002)
Kommentar
Fra : Thomas Møller Nexø


Dato : 22-12-02 20:44

Hov. Jeg tilføjede lige en linie, der sætter Rs = med ADODB.Recordset, samt en
SQL linie.

<%

Sql = "Select * From nyheder Where Id = " & Request("Id")
Set Rs = Conn.Execute(Sql)

If trim(request.form("opdater")) <> "" then

strUpdateSql = "UPDATE nyheder SET Header = '" & _
request.form("Header") & "', Dato = '" & _
request.form("Dato") & "', Nyhed = '" & _
request.form("Nyhed") & "' WHERE Id =" & Request("Id")

Conn.Execute(strUpdateSQL)

Response.Write "Nyheden er opdateret..."

End if

%>

Nu virker det sådan halvt om halvt selvom det ser ud til at der automatisk
skubbes en linie ind oven på teksten når man trykker "opdater". Men selve nyheden
ser ikke ud til at have en ekstra linie over sig???

Jeg er jo nødt til at definere min Rs et sted da den bruges til at vise
eksisterende data i formfelterne - eller hvad?
Det var bare appropos det du skrev med at jeg benyttede mere end jeg behøver.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jonas Skafte Jensen (22-12-2002)
Kommentar
Fra : Jonas Skafte Jensen


Dato : 22-12-02 20:50

> Nu virker det sådan halvt om halvt selvom det ser ud til at der automatisk
> skubbes en linie ind oven på teksten når man trykker "opdater". Men selve
nyheden
> ser ikke ud til at have en ekstra linie over sig???

Den må du lige uddybe, hvor sættes der en ekstra linie ind? I basen, eller
hur?

> Jeg er jo nødt til at definere min Rs et sted da den bruges til at vise
> eksisterende data i formfelterne - eller hvad?
> Det var bare appropos det du skrev med at jeg benyttede mere end jeg
behøver.

Kan du ikke vise mig koden til hele siden, så skruer jeg noget sammen til
dig...



Thomas Møller Nexø (23-12-2002)
Kommentar
Fra : Thomas Møller Nexø


Dato : 23-12-02 09:44

Jonas Skafte Jensen wrote in dk.edb.internet.webdesign.serverside.asp:
> > Nu virker det sådan halvt om halvt selvom det ser ud til at der automatisk
> > skubbes en linie ind oven på teksten når man trykker "opdater". Men selve
> nyheden
> > ser ikke ud til at have en ekstra linie over sig???
>
> Den må du lige uddybe, hvor sættes der en ekstra linie ind? I basen, eller
> hur?
>
> > Jeg er jo nødt til at definere min Rs et sted da den bruges til at vise
> > eksisterende data i formfelterne - eller hvad?
> > Det var bare appropos det du skrev med at jeg benyttede mere end jeg
> behøver.
>
> Kan du ikke vise mig koden til hele siden, så skruer jeg noget sammen til
> dig...
>
>

Hejsa.
Min kode ser nu ud som følger og virker som sagt:

<%

Sql = "Select * From nyheder Where Id = " & Request("Id")
Set Rs = Conn.Execute(Sql)

If trim(request.form("opdater")) <> "" then

strUpdateSql = "UPDATE nyheder SET Header = '" & _
request.form("Header") & "', Nyhed = '" & _
request.form("Nyhed") & "' WHERE Id =" & Request("Id")

Conn.Execute(strUpdateSQL)

Response.Write "Nyheden er opdateret..."

End if

%>

<form
action="nyheder_update.asp?Id=<%=Request.Querystring("Id")%>"
method="post">

<input type="text" size="50" name="Header" value="<%= Rs("Header")
%>">&nbsp;&nbsp;
Oprettet af <%= Rs("Forfatter") %>

<BR><BR>

<textarea rows="25" cols="50" name="Nyhed">
<%= Rs("Nyhed") %>
</textarea>

<BR><BR>

<input type="submit" name="opdater" value="Opdater nyhed">

</form>

Selve databaseforbindelsen etableres i toppen af siden vha. en include fil.
Når man retter i nyheden indsættes der dog automatisk et ekstra linieskift i
tesktboxen, men det har åbenbart ikke nogen betydning for selve nyheden - det
ser dog irreterende ud

Den anden side er en side hvor nyhederne listes og linker til den specifikke
nyhed der skal opdateres vha. et Id i databasen.

Selvom det virker nu - forøvrigt tak for det Jonas - vil jeg da meget gerne
have ideer til hvordan det kan gøres mere effektivt/nemmere.

På forhånd tak og god jul,
Thomas


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jonas Skafte Jensen (23-12-2002)
Kommentar
Fra : Jonas Skafte Jensen


Dato : 23-12-02 16:14

> Selve databaseforbindelsen etableres i toppen af siden vha. en include
fil.
> ...
> ideer til hvordan det kan gøres mere effektivt/nemmere.
For at gøre det effektivere, gælder det om at begrænse tiden du har en
forbindelse til basen åben!
Så det er ikke nogen god idè.
Du kan gøre det at du skriver din connectionstreng i en variabel i en
inkluderingsfil og på den måde stadig have mulighed for at rette den
centralt, men .createobject, .open, .close og =nothing, bør være så tætte på
hinanden som muligt.

Lad os sige at du i din inkluderingsfil har en linie der lyder noget i
retning af strConn = "...Din streng..."
Så burde nedenstående køre:




<%

Sql = "Select Id, Header, Forfatter, Nyhed From nyheder Where Id = " &
Request("Id")
set Conn = server.createobject("ADODB.CONNECTION")
Conn.Open strConn
If trim(request.form("opdater")) <> "" then
strUpdateSql = "UPDATE nyheder SET Header = '" & _
request.form("Header") & "', Nyhed = '" & _
request.form("Nyhed") & "' WHERE Id =" & Request("Id")
Conn.Execute(strUpdateSQL)
Response.Write "Nyheden er opdateret..."
End if

set Rs = server.createobject("ADODB.RECORDSET")
Rs.Open Sql, Conn, 1, 3
if not (rs.bof and rs.eof) then
arrResults = rs.getrows
else
bitFail = TRUE
end if
Rs.Close
Set Rs = Nothing
Conn.Close
Set Conn = Nothing

If bitFail then
response.write "Den ønskede record findes ikke!"
response.end
%>

<form
action="nyheder_update.asp?Id=<%=arrResults(0,0)%>"
method="post">

<input type="text" size="50" name="Header" value="<%= arrResults(1,0)
%>">&nbsp;&nbsp;
Oprettet af <%= arrResults(2,0) %>

<BR><BR>

<textarea rows="25" cols="50" name="Nyhed"><%= arrResults(3,0) %></textarea>

<BR><BR>

<input type="submit" name="opdater" value="Opdater nyhed">

</form>




Per Stilling (22-12-2002)
Kommentar
Fra : Per Stilling


Dato : 22-12-02 21:15

Thomas Møller Nexø wrote in
dk.edb.internet.webdesign.serverside.asp:
> Hejsa. Jeg må indrørre at jeg ikke er så skarp i ASP.
> Jeg har forgæves forsøgt at lave en side, der tillader opdatering
> af et record set. Altså jeg har en oversigt over de seneste 20
> nyheder i en database (access), der så linker til et specifikt id
> på en anden side.

> Kan nogen hjælpe?
> På forhånd mange tak.

jeg vil gerne hjælpe, jeg har faktisk lavet noget præcist magen til
der virker upåklageligt. Du kan bare skrive på icq: 165206501 eller
tilføje mig til msn messenger: stillingper@hotmail.com

Så skla jeg give dig koden og hjælp hvis den failer ;)

GOD jul til alle der læser dettte!

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste