Just nu i M3-nätverket
Jump to content

Problem med att redigera gb-inlägg


hellomoto

Recommended Posts

  • Replies 50
  • Created
  • Last Reply

UPDATE tblDeltagare SET strFornamn='karl', strEfternamn='kalle', strAdress='kalle', strPostnr='kalle', strPostort='kalle', strTelehem='kalle', strMobil='kalle', strEpost='mail@mail.se', strOvrigt='', WHERE deltID =3

Microsoft JET Database Engine error '80040e14'
Syntax error in UPDATE statement.
redigera.asp, line 98 

 

98:

conn.Execute(strSQL)

 

Link to comment
Share on other sites

Ah, eftersom jag inte kan testa så blir det lätt lite småmissar när man skriver frihand...

"strOvrigt='"&strovrigt&"', "&_

ska vara

"strOvrigt='"&strovrigt&"' "&_

(kopiera uppdaterad kod från länken ovan om du vill)

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Link to comment
Share on other sites

Skulle behöva lite mer hjälp till samma sida, om ni orkar *pust*

 

På sidan där man skriver i formuläret första gången (alltså inte redigerar) har jag följande kod för att kunna lista de danser som är inlagda i databasen, i en rullgardinsmeny. Jag vill ju självklart att det ska gå att ändra detta när man redigerar, men hur gör jag?

 

[log]<%

Dim strSQL, Connect, RecSet

 

Set Connect = Server.CreateObject("ADODB.Connection")

Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("/db/anmalan.mdb")

 

strSQL = "SELECT id, strAntal, strPlatser, strKursnamn, strPris FROM tblKurs ORDER BY id ASC"

Set RecSet = Connect.Execute(strSQL)

%>[/log]

 

[log]<select name="dans" id="dans" onchange="MM_jumpMenu('parent',this,0)">

<% RecSet.MoveFirst() %>

<% Do Until RecSet.Eof %>

<option value="<% =RecSet("id") %>"><% =RecSet("strKursnamn") %> (<%=RecSet("strPris")%> kr)</option>

<% RecSet.MoveNext

Loop

RecSet.Close

Set RecSet= nothing

Connect.Close

Set Connect = nothing

%>

</select>

[/log]

 

Link to comment
Share on other sites

Tråden handlar om redigera-sidan till min gästbok. På sidan där man skriver i den har jag en funktion som gör att man kan välja olika alternativ från en databas. Om man skulle behöva ändra något vill jag att den funktionen ska funka på redigera-sidan också. Men jag vet inte hur jag ska lägga in koden på den sidan. Oj nu blev det rörigt, är du med?

 

Link to comment
Share on other sites

först och främst förstår jag inte varför du inte använder variablarna när du deklarerat dem...

går det först och främst, se fältet förnamn

 

[log]

If Request("action") = "edit" Then

strSQL="SELECT strFornamn,strEfternamn,strAdress,strPostnr,strPostort,strTe
lehem,strMobil,strEpost,strOvrigt,kursid,deltID FROM tblDeltagare WHERE deltID =" & deltID

Set conn = Server.CreateObject("ADODB.Connection")
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/db/anmalan.mdb")
conn.open connStr
Set RS=conn.Execute(strSQL)
If Not RS.EOF Then
fornamn=RS("strfornamn")
efternamn=RS("strefternamn")
adress=RS("stradress")
postnr=RS("strpostnr")
postort=RS("strpostort")
telehem=RS("strtelehem")
mobil=RS("strmobil")
epost=RS("strepost")
ovrigt=RS("strovrigt")

%>

<form method="post" action="?action=update">
<input type="hidden" name="deltID" value="<%=deltID%>">
F&ouml;rnamn: <input type="text" name="fornamn" value="<%=fornamn%>"> 
Efternamn: <input type="efternamn" name="rubrik" value="<%=RS("strEfternamn")%>"><br>
Adress: <input type="text" name="adress" value="<%=RS("strAdress")%>"><br>
Postort: <input type="text" name="postort" value="<%=RS("strPostort")%>"><br>
Postnr: <input type="text" name="postnr" value="<%=RS("strPostnr")%>"><br>
Telehem: <input type="text" name="telehem" value="<%=RS("strTelehem")%>"><br>
Mobil: <input type="text" name="mobil" value="<%=RS("strMobil")%>"><br>

Dans:<select name="dans" id="dans">
<% strSQL = "SELECT id, strAntal, strPlatser, strKursnamn, strPris FROM tblKurs ORDER BY id ASC"
Set RecSet = Connect.Execute(strSQL) %>
<% Do Until RecSet.Eof %>
<option value="<% =RecSet("id") %>"><% =RecSet("strKursnamn") %> (<%=RecSet("strPris")%> kr)</option>
<% RecSet.MoveNext
Loop
RecSet.Close
%>
</select><br>


E-post: <input type="text" name="epost" value="<%=RS("strEpost")%>"><br>
Övrigt:<textarea name="ovrigt"><%=RS("strOvrigt")%></textarea>
<br />
<input name="submit" type="submit" id="submit" value="Spara &auml;ndringar">
</form>

[/log]

 

I SQL på redigera får du lägga till "dans"

 

Link to comment
Share on other sites

Det beror på bristande kunskaper...

 

Nu har jag iaf fått in den där koden som visar de olika värdena (man väljer kurs) i databasen. När jag sen ska uppdatera har jag testat att lägga till det under det andra som ska uppdateras

 

[log] Set conn = Server.CreateObject("ADODB.Connection")

connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/db/anmalan.mdb")

conn.open connStr

strSQL = "UPDATE tblDeltagare SET "&_

"strFornamn='"&strfornamn&"', "&_

"strEfternamn='"&strefternamn&"', "&_

"strAdress='"&stradress&"', "&_

"strPostnr='"&strpostnr&"', "&_

"strPostort='"&strpostort&"', "&_

"strTelehem='"&strtelehem&"', "&_

"strMobil='"&strmobil&"', "&_

"strEpost='"&strepost&"', "&_

"strOvrigt='"&strovrigt&"' "&_

"WHERE deltID =" & deltID

 

strSQL = "UPDATE tblDeltagare SET "&_

"kursid='"&kursid&"' "&_

"WHERE deltID =" & deltID

 

Response.Write(strSQL)

conn.Execute(strSQL)

conn.close

Set conn=Nothing[/log]

 

men istället för att byta kurs så försvinner det värdet. hur ska jag skriva?

 

Link to comment
Share on other sites

jag tror att du glömde lägga till en till "conn.Execute(strSQL)"

jag markerade men blå text där du ska lägga till

 

Set conn = Server.CreateObject("ADODB.Connection")
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/db/anmalan.mdb")
conn.open connStr
strSQL = "UPDATE tblDeltagare SET "&_
"strFornamn='"&strfornamn&"', "&_
"strEfternamn='"&strefternamn&"', "&_
"strAdress='"&stradress&"', "&_
"strPostnr='"&strpostnr&"', "&_
"strPostort='"&strpostort&"', "&_
"strTelehem='"&strtelehem&"', "&_
"strMobil='"&strmobil&"', "&_
"strEpost='"&strepost&"', "&_
"strOvrigt='"&strovrigt&"' "&_
"WHERE deltID =" & deltID
[color="#0000ff"]conn.Execute(strSQL)[/color]
strSQL = "UPDATE tblDeltagare SET "&_
"kursid='"&kursid&"' "&_
"WHERE deltID =" & deltID

Response.Write(strSQL)
conn.Execute(strSQL)
conn.close
Set conn=Nothing

 

jag såg också att du skrev ut var det står i strSQL

är det tomt efter "kursid=" när du skriver ut?

 

Link to comment
Share on other sites

He he, det beror ju på att du ändrar om hela strängen (strSQL)...

 

Dvs. strSQL="bla bla bla" skapar ju bara en sträng. Det är sedan i conn.Execute(strSQL) som denna sträng körs som ett databasanrop.

Som du har skrivit så kommer den bara att köra:

UPDATE tblDeltagare SET kursid=NÅGONTING WHERE deltID=NÅGONTING och inte det som du angett strax innan.

 

Hänger du med?

 

Du skall alltså ändra så att:

[log]

[color="#0000ff"]Set[/color] conn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
connStr = [GRÅ]"Provider=Microsoft.Jet.OLEDB.4.0; Data Source="[/GRÅ] & [b]Server[/b].MapPath([GRÅ]"/db/anmalan.mdb"[/GRÅ])
conn.open connStr
strSQL = [GRÅ]"UPDATE tblDeltagare SET "[/GRÅ]&_
   [GRÅ]"strFornamn='"[/GRÅ]&strfornamn&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"strEfternamn='"[/GRÅ]&strefternamn&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"strAdress='"[/GRÅ]&stradress&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"strPostnr='"[/GRÅ]&strpostnr&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"strPostort='"[/GRÅ]&strpostort&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"strTelehem='"[/GRÅ]&strtelehem&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"strMobil='"[/GRÅ]&strmobil&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"strEpost='"[/GRÅ]&strepost&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"strOvrigt='"[/GRÅ]&strovrigt&[GRÅ]"', "[/GRÅ]&_
   [GRÅ]"kursid='"[/GRÅ]&kursid&[GRÅ]"'  "[/GRÅ]&_
   [GRÅ]"WHERE deltID ="[/GRÅ] & deltID
conn.[color="#0000ff"]Execute[/color](strSQL)
conn.close
[color="#0000ff"]Set[/color] conn=[color="#0000ff"]Nothing[/color]

[/log]Codlers förslag att köra två frågor käns klart onödigt då det gäller samma post i samma tabell. Dock har han rätt i att du nu kan ta bort utskriften av sql-strängen.

 

[edit:]hmm... det blev så stökigt här så jag svarade på fel inlägg :-)

 

[edit2:]Varför har du för övrigt en jumpmenu på kursvalet?

Det skall väl postas tillsammans med resten av formuläret.

(se uppdaterad exempel på samma adress som tidigare)

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

[inlägget ändrat 2006-11-21 21:51:57 av Cluster]

Link to comment
Share on other sites

Jag tänkte mig att det enklaste var att presentera kurserna i en jumpmeny. Det blir visserligen en ganska lång lista men hur gör jag annars på smidigaste sätt?

 

När jag testar med ditt kodexempel

Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression ''kalle' strEfternamn='kalle' strAdress='kalle' strPostnr='kalle' strPostort='kalle' strTelehem='kalle' strMobil='kalle' strEpost='elin.welander@yahoo.se' kursid='2' strOvrigt='''.
redigera.asp, line 113 

 

113:

conn.Execute(strSQL)

 

Link to comment
Share on other sites

Ok, men varför jumpmenu? Du hade en Dreamweaver-funktion för att ladda om sidan/gå till annan vid val i dropdownlistan, alltså en sk. jumpmenu.

En vanlig dropdown-lista (som i min exempelkod) är ju så klart helt ok,om det var det som var tanken.

 

Har uppdaterat koden, testa igen.

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Link to comment
Share on other sites

Nu funkar det! Då kommer nästa grej. Det ska inte gå att välja en kurs som är fullbokad. Till det har jag

 

Dim bKursFull
 If CInt(RecSet("strAntal")) = CInt(RecSet("strPlatser")) Then
   bKursFull = True
 Else
   bKursFull = False
 End If

 

<%
If bKursFull = True Then
 %>
 <b>Kursen som du har valt är full</b>
 <br />
 <%
End If
%>

 

Detta är inte med på sidan där man skriver in sig, utan det kontrolleras på nästa sida, där man kontrollerar att ens info stämmer innan man skickar det. Hur får jag in det på redigera-sidan?

 

Link to comment
Share on other sites

Du gör ungefär på samma sätt fast du kan disabla de kurser (som är fullbokade) i dropdown-listan.

 

Betänk att eftersom man kanske redan var inbokad på en kurs som nu blivit full så bör man kunna behålla samma värde...

 

Du kan testa den uppdaterade koden och se om det funkar för dig.

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Link to comment
Share on other sites

Vill mycket men kan för lite...
Då föreslår jag att du kollar på tex:

http://www.w3schools.com/html/

http://www.w3schools.com/css/

http://www.w3schools.com/asp/

http://www.w3schools.com/sql/

 

:)

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.




×
×
  • Create New...