webForumDet fria alternativet

Hjälp!!!

9 svar · 137 visningar · startad av phazer23

phazer23Medlem sedan feb. 2001256 inlägg
#1

Hej fösöker desperat att få detta att funka!!! kan nån hjälpa mig att se felen!!?? Felet är att den inte vill updatera databasen!!

<% Option Explicit %>
<!-- #include file="adovbs.inc" --> 
<html>
<body bgcolor="#000000" text="white">

<p> <% 
' The first time this page is retrieved and any time it is
' submitted without being completely filled out, the form
' is displayed. If it is submitted and completely filled out
' the form is processed in the Else clause.
If Request("Lag")="" Then

Dim Connect,Blueriders
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\home\B\Blueriders\dbq\blueriders.mdb"
Query = "SELECT * FROM Tabell "
   Query = Query & "ORDER BY ID"

Set Blueriders = Connect.Execute(Query)

%> 
<form method="POST" action="edittabell.asp">
  <table width="560" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td width="157"> 
        <div align="center"> Lag </div>
      </td>
      <td width="50"> 
        <div align="center">Sp</div>
      </td>
      <td width="44"> 
        <div align="center">V</div>
      </td>
      <td width="44"> 
        <div align="center">O</div>
      </td>
      <td width="44"> 
        <div align="center">F</div>
      </td>
      <td width="44"> 
        <div align="center">MF</div>
      </td>
      <td width="44"> 
        <div align="center">MB</div>
      </td>
      <td width="44"> 
        <div align="center">+/-</div>
      </td>
      <td width="44"> 
        <div align="center">P</div>
      </td>
      <td width="44"> 
        <div align="center">Pl</div>
      </td>
    </tr>
  </table>
<%
   Do While Not Blueriders.EOF %>  
<table width="560" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td width="157"> 
        <div align="center"> 
          <input type="text" name="lag" value="<%=Blueriders("Lag")%>">
        </div>
      </td>
      <td width="50"> 
        <div align="center"> 
          <input type="text" name="Spelade" size="5" value="<%=Blueriders("Spelade")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Vunna" size="5" value="<%=Blueriders("Vunna")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Oavgjord" size="5" value="<%=Blueriders("Oavgjord")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Forlust" size="5" value="<%=Blueriders("Forlust")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Malfram" size="5" value="<%=Blueriders("Malfram")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Malbak" size="5" value="<%=Blueriders("Malbak")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Malsk" size="5" value="<%=Blueriders("Malsk")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Poang" size="5" value="<%=Blueriders("Poang")%>">
        </div>
      </td>
      <td width="45"> 
        <div align="center"> 
          <input type="text" name="Siffra" size="5" value="<%=Blueriders("Siffra")%>">
        </div>
      </td>
    </tr>
  </table>
  <%
      Blueriders.MoveNext
   Loop
%> 
  <table width="100" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>
        <div align="center">
          <input type="submit" name="Submit" value="Ändra">
        </div>
      </td>
    </tr>
  </table>
</form>
<p> 
<p> 
<p> <% Else %> <%
Dim Query, Place, Lag, dtNow, SQL, ID, Tabell
dtNow = Now()

'On Error Resume Next
%> 
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\home\B\Blueriders\dbq\blueriders.mdb"

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

SQL = "UPDATE Tabell SET Spelade = '" & Request.Form("Spelade") & "', Vunna = '" & Request.Form("Vunna") & "'"

Blueriders.Execute(SQL)

If Err.Number = 0 Then %> <font size=5><i>Matchen är nu updaterad......</i></font> 
<p> <a href="category.asp?lag=Alaget">Tillbaka till spelarna</a> 
<p> <% Else %> 
  There was an error updating your ad. 
<p> Error #<%=Err.Number%>: 
  <%=Err.Description%> 
<p> <% End If %> 
  <% End If %>
<% Set Blueriders = Nothing %>
</body>
</html>

[Redigerat av phazer23 den 22 feb 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#2

jag tittade på update-delen

<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\home\B\Blueriders\dbq\blueriders.mdb"

SQL = "UPDATE Tabell SET Spelade = '" & Request.Form("Spelade") & "', Vunna = '" & Request.Form("Vunna") & "'"

Connect.Execute SQL

Om man skall göra en update så använder man execute-metoden för connection-objektet. Det behövs inget recordset.
En fundering till, om kolumnerna spelade och vunna är numeriska i databasen så skall det inte vara några '' kring värdet

------------------
essentitia preter non sans multiplicandum

phazer23Medlem sedan feb. 2001256 inlägg
#3

Ok. Tack så mycket . Då skall det alltså se ut ungefär så här??

<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\home\B\Blueriders\dbq\blueriders.mdb"
SQL = "UPDATE Tabell SET Spelade =" ' & Request("Spelade") & "', Vunna = '" & Request("Vunna") & "'"

Connect.Execute SQL %>

När jag provar får jag

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i UPDATE-uttryck. 

/blueriders/edittabell.asp, rad 142

En följdfråga också.. I fall jag vill updater samtliga lag så måste jag väl typ använda koden

<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\home\B\Blueriders\dbq\blueriders.mdb"
SQL = "UPDATE Tabell SET Spelade =" ' & Request("Spelade") & "', Vunna = '" & Request("Vunna") & "'"
SQL = SQL + "WHERE ID = "&ID&" "
Connect.Execute SQL %>
LarsGMedlem sedan dec. 200012 464 inlägg
#4

Om vunna och spelade är numeriska så bör det se ut så här

SQL = "UPDATE Tabell SET Spelade = "  & Request("Spelade") & ", Vunna = " & Request("Vunna")
Connect.Execute SQL

Om du utför den här update-satsen så kommer samtliga rader i tabell att uppdateras. Så om du enbart vill update för ett lag så måste du ha med ett where-villkor som du hade i din andra sats.

SQL = "UPDATE Tabell SET Spelade =" & Request("Spelade") & ", Vunna = " & Request("Vunna")
SQL = SQL + " WHERE ID = " & ID

------------------
essentitia preter non sans multiplicandum

phazer23Medlem sedan feb. 2001256 inlägg
#5

Ok testade med ditt föslag men får följande fel då

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i UPDATE-uttryck. 

/blueriders/edittabell3.asp, rad 140

Koden ser nu ut såhär. jag tycker ju att det borde fungera..

<% Option Explicit %>
<!-- #include file="adovbs.inc" --> 
<html>
<body bgcolor="#000000" text="white">

<p> <% 
' The first time this page is retrieved and any time it is
' submitted without being completely filled out, the form
' is displayed. If it is submitted and completely filled out
' the form is processed in the Else clause.
If Request("Lag")="" Then

Dim Connect,Blueriders
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\home\B\Blueriders\dbq\blueriders.mdb"
Query = "SELECT * FROM Tabell "
   Query = Query & "ORDER BY ID"

Set Blueriders = Connect.Execute(Query)

%> 
<form method="POST" action="edittabell3.asp">
  <table width="560" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td width="157"> 
        <div align="center"> Lag </div>
      </td>
      <td width="50"> 
        <div align="center">Sp</div>
      </td>
      <td width="44"> 
        <div align="center">V</div>
      </td>
      <td width="44"> 
        <div align="center">O</div>
      </td>
      <td width="44"> 
        <div align="center">F</div>
      </td>
      <td width="44"> 
        <div align="center">MF</div>
      </td>
      <td width="44"> 
        <div align="center">MB</div>
      </td>
      <td width="44"> 
        <div align="center">+/-</div>
      </td>
      <td width="44"> 
        <div align="center">P</div>
      </td>
      <td width="44"> 
        <div align="center">Pl</div>
      </td>
    </tr>
  </table>
<%
   Do While Not Blueriders.EOF %>  
<table width="560" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td width="157"> 
        <div align="center"> 
          <input type="text" name="lag" value="<%=Blueriders("Lag")%>">
        </div>
      </td>
      <td width="50"> 
        <div align="center"> 
          <input type="text" name="Spelade" size="5" value="<%=Blueriders("Spelade")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Vunna" size="5" value="<%=Blueriders("Vunna")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Oavgjord" size="5" value="<%=Blueriders("Oavgjord")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Forlust" size="5" value="<%=Blueriders("Forlust")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Malfram" size="5" value="<%=Blueriders("Malfram")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Malbak" size="5" value="<%=Blueriders("Malbak")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Malsk" size="5" value="<%=Blueriders("Malsk")%>">
        </div>
      </td>
      <td width="44"> 
        <div align="center"> 
          <input type="text" name="Poang" size="5" value="<%=Blueriders("Poang")%>">
        </div>
      </td>
      <td width="45"> 
        <div align="center"> 
          <input type="text" name="Siffra" size="5" value="<%=Blueriders("Siffra")%>">
        </div>
      </td>
    </tr>
  </table>
  <%
      Blueriders.MoveNext
   Loop
%> 
  <table width="100" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>
        <div align="center">
          <input type="submit" name="Submit" value="&Auml;ndra">
        </div>
      </td>
    </tr>
  </table>
</form>
<p>&nbsp;
<p>&nbsp;
<p> <% Else %> <%
Dim Query, Place, Lag, dtNow, SQL, ID, Tabell, Spelade, Vunna
dtNow = Now()

'On Error Resume Next
%> 
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\home\B\Blueriders\dbq\blueriders.mdb"
SQL = "UPDATE Tabell SET Spelade = " & Request("Spelade") & ", Vunna = " & Request("Vunna")
Connect.Execute SQL

If Err.Number = 0 Then %> <font size=5><i>Matchen är nu updaterad......</i></font> 
<p> <a href="category.asp?lag=Alaget">Tillbaka till spelarna</a> 
<p> <% Else %> 
  There was an error updating your ad. 
<p> Error #<%=Err.Number%>: 
  <%=Err.Description%> 
<p> <% End If %> 
  <% End If %>
<% Set Blueriders = Nothing %>
</body>
</html>

[

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Jo, missade ju att man skall använda request.form för att plocka upp värdena

SQL = "UPDATE Tabell SET Spelade = " & Request.Form("Spelade") & ", Vunna = " & Request.Form("Vunna")

Du kan ju testa att skriva ut SQL satsen med response.write innan du utför den. Då är det lättare att se eventuella syntaxfel som kan finnas.

Tillägg:
Men som sagt, den satsen kommer att uppdatera alla poster i tabellen.
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 22 feb 2001]

phazer23Medlem sedan feb. 2001256 inlägg
#7

När jag använder response.write får jag detta..

UPDATE Tabell SET Spelade = 10, 11, 10, 10, 11, 9, Vunna = 7, 9, 7, 2, 3, 0
LarsGMedlem sedan dec. 200012 464 inlägg
#8

Ok nu förstår jag vad du menar med att uppdatera samtliga lag. Det går inte att göra i en update-sats utan du måste bygga en updatesats för varje lag. Då måste du också ha med ID i din form så att man får tag på det på updatesidan.

I och med att du har en mängd textfält med samma namn på förstasidan så kommer alla värden för att läggas ihop till kommaseparerade listor där det blir en lista för varje namn.

En möjlig lösning är att man vid update splittar upp varje lista till en array och sedan loopar och bygger och exekverar en update-sats för varje id.


'ungefär
'
  wins = split(request.form("Vunna"),",",-1)
  played = split(request.form("Spelade"),",",-1)
  ids = split(request.form("ID"),",",-1)
  for i = 0 to ubound(ids)
      SqlStr = "update tabell set vunna = " & wins(i) & ", spelade = " & played(i) & " where id = " & ids(i)
      connect.execute SqlStr
'
'felhantering
'
  next

Näe, nu är det dags att gå hem och sova. Hoppas att det här är till någon hjälp.

------------------
essentitia preter non sans multiplicandum

phazer23Medlem sedan feb. 2001256 inlägg
#9

Nån som kan lite mer om arrays som kanske kan hjälpa mig lite???

LarsGMedlem sedan dec. 200012 464 inlägg
#10

En sida om VB-skript finns här
http://msdn.microsoft.com/scripting/

Välj
VB-script
documentation
User's Guide
Variables

i menyn till vänster

------------------
essentitia preter non sans multiplicandum

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