Avatar billede jesperwerge Nybegynder
26. marts 2006 - 17:43 Der er 32 kommentarer og
1 løsning

Sub rutine med update af flere poster

Hej eksperter

jeg sidder og udvikler et mindre administrations modul hvor jeg opbygger en side via nogle paragrafer. disse paragrafer bliver vist under hinanden med almindelige html udfyldt fra en Database.

det hele er bygget op via nogle sub rutiner som bliver kaldt ved brug af nogle almindelige submit knapper.

jeg har skrevet en sub rutine som skal update de paragrafer der er vist for den gældende side. det er ikke optimalt at update alle paragrafer, når det måske ikke er alle der er ændret, men det tager jeg ikke højde for nu.

Problemet er at når jeg forsøger at benytte en for each konstruktion kan jeg kun opdatere et felt af gangen, hvor mit mål er at kunne opdatere alle felter for den gældende post.

Håber I kan guide mig igennem hvordan dette skal bygges op.

Her er lidt kode :

sub UpdateRecords
  'Opdater post
   
    Set oDB = Server.CreateObject("ADODB.connection")
    oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../db/CMSText.mdb")

For Each Item In Request.QueryString("hidSubmitted")
strSQL="UPDATE [Paragraphs] SET "
strSQL=strSQL & "OverSkr ='" & Request.QueryString("txtOverskr") &"', "
strSQL=strSQL & "Beskr    ='" & Request.QueryString("txtBeskr") &"', "
strSQL=strSQL & "PaSort ='" & Request.QueryString("txtPaSort") &"',"
strSQL=strSQL & "Billede ='" & Request.QueryString("txtBillede") &"',"
strSQL=strSQL & "Alignment ='" & Request.QueryString("txtAlignment") &"' WHERE AutoID =" & Request.QueryString("hidSubmitted")
oDB.Execute(strSQL)
response.write " = " & request.QueryString("hidSubmitted")
next


oDB.Close
set oRS = Nothing
end sub
%>

Jeg håber der er en bedre måde at gøre dette på.

/Jesper
Avatar billede softspot Forsker
26. marts 2006 - 20:00 #1
Hvordan ser din formular ud? Skal du ikke benytte dig af Request.Form i stedet for Request.Querystring?
Avatar billede jesperwerge Nybegynder
26. marts 2006 - 20:45 #2
Måske jeg kan ikke få det til at virke, her er min form:

<form name="ShowItems" method="get" action="VisParagraph.asp">
<%
Set oDB = Server.CreateObject("ADODB.connection")
  oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../db/CMSText.mdb")
    Set oRS = oDB.execute("SELECT * FROM [Paragraphs] WHERE ID ="& strPageID &" ORDER BY PaSort")
        Set oRS2 = oDB.execute("SELECT Titel FROM [Pages] WHERE AutoID = "& strPageID &"")
            response.write "<font face=Arial size=5>" & oRS2("Titel") & "</B></font><br> "
        Set oRS2 = NOTHING
do while not oRS.EOF
%>
<fieldset><legend><font color="#FF08FF"><%= oRS("OverSkr") %></font></legend>
<input type=hidden name="hidSubmitted" value="<%= oRS("AutoID") %>">
<font face="Arial" size="2">
Titel på afsnit:<br>
<input type="text" name="txtOverSkr" value="<%= oRS("OverSkr") %>"><br>
Brødtekst til afsnitet:<br>
<textarea name="txtBeskr" rows="4"><%= oRS("Beskr") %></textarea><br>
Billede ved afsnittet start: <br>
<%

Dim strFileName, strPhysPath
Dim objFileFSO
Dim objFileTS

    Dim FileSystemObject, Folder, FileCollection, File
    Dim FolderPath

    Server.ScriptTimeOut=1
    FolderPath= Server.Mappath("../../images/")
    Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
    'List All Files
    Set Folder = FileSystemObject.GetFolder(Folderpath)
    Set FileCollection = Folder.Files
%>
      <select size="1" name="txtbillede">
          <option></option> 
<%
    For Each File In FileCollection
            If ucase(Right(File.name,4))=".GIF" or ucase(Right(File.name,4))=".JPG" Then
                TheFile = File.name
            if oRS("Billede") = TheFile then
                response.write "<option value=" & chr(34) & thefile & chr(34) & " selected>" & TheFile & "</option>" & vbcrlf
                else
                response.write "<option value=" & chr(34) & thefile & chr(34) & ">" & TheFile & "</option>" & vbcrlf
            end if
          Else
            End If
    Next
%>
  </select>

<br>Justering:
<select name="txtAlignment" size="1">
          <option></option>
            <option value="Left"    <% if oRS("Alignment") = "Left" then Response.Write " SELECTED" %>>Venstre</option>
            <option value="Right"    <% if oRS("Alignment") = "Right" then Response.Write " SELECTED" %>>Højre</option>
        </select>

<br>
Sortering af afsnit:<br>
<input type="text"  size="3" width="3" name="txtPaSort" value="<%= oRS("PaSort") %>"><br>
Marker for Slet: <input type="Checkbox" name="slet" id="Checks" value="<%=oRS("AutoID")%>"><br>
</font>
</fieldset>
</font>

<%
oRS.Movenext
Loop
oDB.Close
set oRS = Nothing
%>
<input type="submit" value="delete" name="action">  <input type="submit" value="update" name="action">
</form>
<%
end sub
%>
Avatar billede jesperwerge Nybegynder
26. marts 2006 - 20:56 #3
mangler lig en <% sub ShowList %> i toppen af sidste felt
Avatar billede softspot Forsker
26. marts 2006 - 22:32 #4
Umiddelbart ville jeg mene du lettest kommer omkring identificeringen af de enkelte felter ifht. til den paragraf du retter data for, er at udvide feltet med paragraffens id. Det kan du f.eks. gøre således:

<% sub ShowList %>
<form name="ShowItems" method="post" action="VisParagraph.asp">
<%
Set oDB = Server.CreateObject("ADODB.connection")
  oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../db/CMSText.mdb")
  Set oRS = oDB.execute("SELECT * FROM [Paragraphs] WHERE ID ="& strPageID &" ORDER BY PaSort")
  Set oRS2 = oDB.execute("SELECT Titel FROM [Pages] WHERE AutoID = "& strPageID &"")
  response.write "<font face=Arial size=5>" & oRS2("Titel") & "</B></font><br> "
  Set oRS2 = NOTHING

  do while not oRS.EOF
%>
<fieldset><legend><font color="#FF08FF"><%= oRS("OverSkr") %></font></legend>
<input type=hidden name="hidSubmitted" value="<%= oRS("AutoID") %>">
<font face="Arial" size="2">
Titel på afsnit:<br>
<input type="text" name="txtOverSkr<%= oRS("AutoID") %>" value="<%= oRS("OverSkr") %>"><br>
Brødtekst til afsnitet:<br>
<textarea name="txtBeskr<%= oRS("AutoID") %>" rows="4"><%= oRS("Beskr") %></textarea><br>
Billede ved afsnittet start: <br>
<%

Dim strFileName, strPhysPath
Dim objFileFSO
Dim objFileTS

    Dim FileSystemObject, Folder, FileCollection, File
    Dim FolderPath

    Server.ScriptTimeOut=1
    FolderPath= Server.Mappath("../../images/")
    Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
    'List All Files
    Set Folder = FileSystemObject.GetFolder(Folderpath)
    Set FileCollection = Folder.Files
%>
      <select size="1" name="txtbillede<%= oRS("AutoID") %>">
          <option></option> 
<%
    For Each File In FileCollection
            If ucase(Right(File.name,4))=".GIF" or ucase(Right(File.name,4))=".JPG" Then
                TheFile = File.name
            if oRS("Billede") = TheFile then
                response.write "<option value=" & chr(34) & thefile & chr(34) & " selected>" & TheFile & "</option>" & vbcrlf
                else
                response.write "<option value=" & chr(34) & thefile & chr(34) & ">" & TheFile & "</option>" & vbcrlf
            end if
          Else
            End If
    Next
%>
  </select>

<br>Justering:
<select name="txtAlignment<%= oRS("AutoID") %>" size="1">
          <option></option>
            <option value="Left"    <% if oRS("Alignment") = "Left" then Response.Write " SELECTED" %>>Venstre</option>
            <option value="Right"    <% if oRS("Alignment") = "Right" then Response.Write " SELECTED" %>>Højre</option>
        </select>

<br>
Sortering af afsnit:<br>
<input type="text"  size="3" width="3" name="txtPaSort<%= oRS("AutoID") %>" value="<%= oRS("PaSort") %>"><br>
Marker for Slet: <input type="Checkbox" name="slet" id="Checks" value="<%=oRS("AutoID")%>"><br>
</font>
</fieldset>
</font>

<%
oRS.Movenext
Loop
oDB.Close
set oRS = Nothing
%>
<input type="submit" value="delete" name="action">  <input type="submit" value="update" name="action">
</form>
<%
end sub
%>


Og så skal din serverkode spørge i form-collection i stedet for querystring (fordi jeg har ændret method til POST, da du potentielt set skal sende mange data til serveren).

sub UpdateRecords
  'Opdater post
   
    Set oDB = Server.CreateObject("ADODB.connection")
    oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../db/CMSText.mdb")

For Each Item In Request.Form("hidSubmitted")
strSQL="UPDATE [Paragraphs] SET "
strSQL=strSQL & "OverSkr ='" & Request.Form("txtOverskr" & Item) &"', "
strSQL=strSQL & "Beskr    ='" & Request.Form("txtBeskr" & Item) &"', "
strSQL=strSQL & "PaSort ='" & Request.Form("txtPaSort" & Item) &"',"
strSQL=strSQL & "Billede ='" & Request.Form("txtBillede" & Item) &"',"
strSQL=strSQL & "Alignment ='" & Request.Form("txtAlignment" & Item) &"' WHERE AutoID =" & Request.Form("hidSubmitted")
oDB.Execute(strSQL)
response.write " = " & request.Form("hidSubmitted")
next


oDB.Close
set oRS = Nothing
end sub
%>
Avatar billede jesperwerge Nybegynder
27. marts 2006 - 08:19 #5
Hej softspot

tak for dit forslag - jeg tester dette i løbat af i dag.

jeg vender tilbage
Avatar billede softspot Forsker
27. marts 2006 - 09:01 #6
Helt fint! :)

Jeg vil i øvrigt foreslå at du benytter dig af et Command-objekt da du så slipper for at tænke i sikring mod SQL-injection, herunder apostroffer i tekstfelterne, samt datoformater. Det kan gøres således:

<%
sub UpdateRecords
  'Opdater post

  sql = "UPDATE [Paragraphs] SET " & _
        "OverSkr = ?, " & _
        "Beskr = ?, " & _
        "PaSort = ?, " & _
        "Billede = ?," & _
        "Alignment = ? " & _
        "WHERE AutoID = ?"
   
  Set oDB = Server.CreateObject("ADODB.connection")
  oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../db/CMSText.mdb")
 
  ' Forbered Command-objekt
  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = oDB
  cmd.CommandType = adCmdText
  cmd.CommandText = sql

  ' Gennemløb alle feltgrupper og opdater indholdet i databasen
  For Each Item In Request.Form("hidSubmitted")
    ' Overfør parametre til Command-objektet
    cmd(0) = Request.Form("txtOverskr" & Item)
    cmd(1) = Request.Form("txtBeskr" & Item)
    cmd(2) = Request.Form("txtPaSort" & Item)
    cmd(3) = Request.Form("txtBillede" & Item)
    cmd(4) = Request.Form("txtAlignment" & Item)
    cmd(5) = Request.Form("hidSubmitted")
    cmd.Execute(strSQL)
    response.write " = " & request.Form("hidSubmitted")
  next

  oDB.Close
  set cmd = Nothing
end sub
%>

og så skal du lige indsætte denne linie i toppen af den fil hvor du har brug for ADO-konstanterne, for ellers får du sikkert en fejl når du forsøger at køre koden:

<!-- METADATA TYPE="typelib" uuid="00000205-0000-0010-8000-00AA006D2EA4"  -->
Avatar billede jesperwerge Nybegynder
27. marts 2006 - 17:27 #7
det er nogle gode forslag,

jeg får en fejl i update statementet, hvis jeg tillægge Item til felt navne og update statementet.
fejl:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error (comma) in query expression 'AutoID=4, 6'.

/admin/cms/VisParagraph.asp, line 193

fejlen ligger i eksekvering af min update

hr du nogle forslag, jeg har også prøvet med din command version, der for jeg en anden fejl, men jeg vil i første omgang gerne have at det virker på min måde, så vil jeg meget gerne sætte mig ind i din måde at gøre det på, den er meget spændende :)

håber du kan hjælpe
Avatar billede jesperwerge Nybegynder
27. marts 2006 - 17:39 #8
det er som om at for each Item ikke helt splitter records som den skal?

jeg er væk resten af aftenen, men håber du har nogle forslag alligevel, tak :)
Avatar billede softspot Forsker
27. marts 2006 - 18:07 #9
Du kan prøve med denne for...each i stedet for:

Items = Split(Request.Form("hidSubmitted"), ",")
For Each Item In Items
  strSQL = "UPDATE [Paragraphs] SET "
  strSQL = strSQL & "OverSkr ='" & Request.Form("txtOverskr" & Item) &"', "
  strSQL = strSQL & "Beskr    ='" & Request.Form("txtBeskr" & Item) &"', "
  strSQL = strSQL & "PaSort ='" & Request.Form("txtPaSort" & Item) &"',"
  strSQL = strSQL & "Billede ='" & Request.Form("txtBillede" & Item) &"',"
  strSQL = strSQL & "Alignment ='" & Request.Form("txtAlignment" & Item) &"' "
  strSQL = strSQL & "WHERE AutoID =" & Request.Form("hidSubmitted")
  oDB.Execute(strSQL)
  response.write " = " & Item
Next

Du kalder alle id-felterne for hidSubmitted og de vil derfor ligge i form-collection som en kommasepareret liste af id'er. Derfor splitter jeg dem op (og lægger dem i et array) med Split-funktionen, hvorefter jeg gennemløber alle id'erne hver for sig og hente data ud fra de pågældende felter.
Avatar billede jesperwerge Nybegynder
27. marts 2006 - 22:43 #10
Jeg forstår det ikke der er stadig fejl:

<% sub ShowList (strPageID)%>
<form name="ShowItems" method="post" action="VisParagraph.asp">
<%
Set oDB = Server.CreateObject("ADODB.connection")
  oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../db/CMSText.mdb")
  Set oRS = oDB.execute("SELECT * FROM [Paragraphs] WHERE ID ="& strPageID &" ORDER BY PaSort")
  Set oRS2 = oDB.execute("SELECT Titel FROM [Pages] WHERE AutoID = "& strPageID &"")
  response.write "<font face=Arial size=5>" & oRS2("Titel") & "</B></font><br> "
  Set oRS2 = NOTHING

  do while not oRS.EOF
%>
<fieldset><legend><font color="#FF08FF"><%= oRS("OverSkr") %></font></legend>
<input type=hidden name="hidSubmitted" value="<%= oRS("AutoID") %>">
<font face="Arial" size="2">
Titel på afsnit:<br>
<input type="text" name="txtOverSkr<%= oRS("AutoID") %>" value="<%= oRS("OverSkr") %>"><br>
Brødtekst til afsnitet:<br>
<textarea name="txtBeskr<%= oRS("AutoID") %>" rows="4"><%= oRS("Beskr") %></textarea><br>
Billede ved afsnittet start: <br>
<%

Dim strFileName, strPhysPath
Dim objFileFSO
Dim objFileTS

    Dim FileSystemObject, Folder, FileCollection, File
    Dim FolderPath

    Server.ScriptTimeOut=1
    FolderPath= Server.Mappath("../../images/")
    Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
    'List All Files
    Set Folder = FileSystemObject.GetFolder(Folderpath)
    Set FileCollection = Folder.Files
%>
      <select size="1" name="txtbillede<%= oRS("AutoID") %>">
          <option></option> 
<%
    For Each File In FileCollection
            If ucase(Right(File.name,4))=".GIF" or ucase(Right(File.name,4))=".JPG" Then
                TheFile = File.name
            if oRS("Billede") = TheFile then
                response.write "<option value=" & chr(34) & thefile & chr(34) & " selected>" & TheFile & "</option>" & vbcrlf
                else
                response.write "<option value=" & chr(34) & thefile & chr(34) & ">" & TheFile & "</option>" & vbcrlf
            end if
          Else
            End If
    Next
%>
  </select>

<br>Justering:
<select name="txtAlignment<%= oRS("AutoID") %>" size="1">
          <option></option>
            <option value="Left"    <% if oRS("Alignment") = "Left" then Response.Write " SELECTED" %>>Venstre</option>
            <option value="Right"    <% if oRS("Alignment") = "Right" then Response.Write " SELECTED" %>>Højre</option>
        </select>

<br>
Sortering af afsnit:<br>
<input type="text"  size="3" width="3" name="txtPaSort<%= oRS("AutoID") %>" value="<%= oRS("PaSort") %>"><br>
Marker for Slet: <input type="Checkbox" name="slet" id="Checks" value="<%=oRS("AutoID")%>"><br>
</font>
</fieldset>
</font>

<%
oRS.Movenext
Loop
oDB.Close
set oRS = Nothing
%>
<input type="submit" value="delete" name="action">  <input type="submit" value="update" name="action">
</form>
<%
end sub

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

sub UpdateRecords
  'Opdater post
   
    Set oDB = Server.CreateObject("ADODB.connection")
    oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../db/CMSText.mdb")

Items = Split(Request.Form("hidSubmitted"), ",")
For Each Item In Items
  strSQL = "UPDATE [Paragraphs] SET "
  strSQL = strSQL & "OverSkr ='" & Request.Form("txtOverskr" & Item) &"', "
  strSQL = strSQL & "Beskr    ='" & Request.Form("txtBeskr" & Item) &"', "
  strSQL = strSQL & "PaSort ='" & Request.Form("txtPaSort" & Item) &"',"
  strSQL = strSQL & "Billede ='" & Request.Form("txtBillede" & Item) &"',"
  strSQL = strSQL & "Alignment ='" & Request.Form("txtAlignment" & Item) &"' "
  strSQL = strSQL & "WHERE AutoID =" & Request.Form("hidSubmitted")
  oDB.Execute(strSQL)
  response.write " = " & Item
Next


oDB.Close
set oRS = Nothing
end sub

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

Fejl:

WHERE AutoID =...... 4,5,5
Avatar billede softspot Forsker
27. marts 2006 - 22:46 #11
Sorry! jeg har lavet en misser i WHERE-delen :(

Det skal naturligvis være:

strSQL = strSQL & "WHERE AutoID =" & Item

Da Item indeholder id'et for den aktuelle feltgruppe. Jeg undskylder endnu engang.
Avatar billede jesperwerge Nybegynder
28. marts 2006 - 10:52 #12
Det skal du ikke undskylde for, jeg er her for at få hjælp, og alt hjælp er velkom.

jeg kan ikke teste dette i løbet af min arbejdsdag, men vil teste senere i aften.

/Jesper
Avatar billede jesperwerge Nybegynder
28. marts 2006 - 16:31 #13
Hej softspot

det virker halvt :)

den første forekomst bliver gemt men ikke de følgende og så siger dne bare fejl i update statement, underligt???

/jesper
Avatar billede softspot Forsker
28. marts 2006 - 17:57 #14
Hvad siger den fejlen er?
Avatar billede jesperwerge Nybegynder
28. marts 2006 - 22:18 #15
den siger at der er fejl i Update statementet - men ikke nærmere hvor, men den opdatere den første record men ikke de efterfølgende???
Avatar billede softspot Forsker
28. marts 2006 - 22:21 #16
Hmm... prøv at udskrive de update-sætninger den forsøger at udføre, eller måske endda bare request.form("hidSubmitted").
Avatar billede jesperwerge Nybegynder
29. marts 2006 - 07:59 #17
det er meget underligt - jeg har udskrevet Item og request.form("hidSubmitted")og de er korrekte.

der er pt 2 records som skal opdateres, så det er korrekt, men den looper ikke rigtigt fejlen hedder:

Item = 4 - HidSubmitted = 4, 6

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/admin/cms/VisParagraph.asp, line 196

line 196 = oDB.execute(strSQL)
Avatar billede softspot Forsker
29. marts 2006 - 09:35 #18
Prøv lige flg.:

Items = Split(Request.Form("hidSubmitted"), ",")
For Each Item In Items
  strSQL = "UPDATE [Paragraphs] SET "
  strSQL = strSQL & "OverSkr ='" & Request.Form("txtOverskr" & Item) &"', "
  strSQL = strSQL & "Beskr    ='" & Request.Form("txtBeskr" & Item) &"', "
  strSQL = strSQL & "PaSort ='" & Request.Form("txtPaSort" & Item) &"',"
  strSQL = strSQL & "Billede ='" & Request.Form("txtBillede" & Item) &"',"
  strSQL = strSQL & "Alignment ='" & Request.Form("txtAlignment" & Item) &"' "
  strSQL = strSQL & "WHERE AutoID =" & Item
  on error resume next
  oDB.Execute(strSQL)
  if err.number <> 0 then
    response.write "FEJL I UPDATE: " & "<br>"
    response.write strSQL & "<br>"
    response.write "Item: [" & Item & "]<br>"
    response.write "hisSubmitted: [" & Request.Form("hidSubmitted") & "]<br>"
    response.write err.number & ": " & err.description & "<br><br>"
    err.clear
  end if
  on error goto 0
  'response.write " = " & Item
Next
Avatar billede softspot Forsker
29. marts 2006 - 09:37 #19
...og så lige fortæller mig hvad output bliver ;-)
Avatar billede jesperwerge Nybegynder
29. marts 2006 - 10:41 #20
Hej softspot,

endnu engang må jeg vente til i aften, med at teste, jeg har ikke mulighed for at uploade noet fra min arbejdsplads, desværre.
ked af at det er så besværligt.

Jeg vender tilbage

/Jesper
Avatar billede softspot Forsker
29. marts 2006 - 11:03 #21
Ja, det lader til at vi er vågne på forskellige tidspunkter :)

Du vender bare tilbage når du har noget nyt i sagen.
Avatar billede jesperwerge Nybegynder
30. marts 2006 - 08:18 #22
Dette er svaret :

det er som om at data i anden record ikke kommer med?

-------
FEJL I UPDATE:
UPDATE [Paragraphs] SET OverSkr ='', Beskr ='', PaSort ='',Billede ='',Alignment ='' WHERE AutoID = 6
Item: [ 6]
hisSubmitted: [4, 6]
-2147217913: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.


-------
Avatar billede softspot Forsker
30. marts 2006 - 09:48 #23
OK, men så skal du lige checke om felterne i databasen stemmer overens med de typer du forsøger at tildele dem.

Flg. typer forventes:
OverSkr : tekst
Beskr : tekst
PaSort : tekst
Billede : tekst
Alignment : tekst
AutoID : tal (heltal)
Avatar billede jesperwerge Nybegynder
30. marts 2006 - 13:06 #24
det stemmer i databasen - næsten - jeg har ændre SaSort så der ikke er qouts omkring da det er et nummerisk felt. men fejlen er den samme, det som er underligt er at den opdatere den første record fint, men det er den 2. record som går galt??? de er ens på nær indhold af felterne.
min Update SQL ser nu således ud:


Items = Split(Request.Form("hidSubmitted"), ",")
For Each Item In Items
  strSQL = "UPDATE [Paragraphs] SET "
  strSQL = strSQL & "OverSkr ='" & Request.Form("txtOverskr" & Item) &"', "
  strSQL = strSQL & "Beskr    ='" & Request.Form("txtBeskr" & Item) &"', "
  strSQL = strSQL & "PaSort = " & Request.Form("txtPaSort" & Item) & ","
  strSQL = strSQL & "Billede ='" & Request.Form("txtBillede" & Item) &"',"
  strSQL = strSQL & "Alignment ='" & Request.Form("txtAlignment" & Item) &"' "
  strSQL = strSQL & "WHERE AutoID =" & Item
  on error resume next
  oDB.Execute(strSQL)
  if err.number <> 0 then
    response.write "FEJL I UPDATE: " & "<br>"
    response.write strSQL & "<br>"
    response.write "Item: [" & Item & "]<br>"
    response.write "hisSubmitted: [" & Request.Form("hidSubmitted") & "]<br>"
    response.write err.number & ": " & err.description & "<br><br>"
    err.clear
  end if
  on error goto 0
  'response.write " = " & Item
Next
Avatar billede softspot Forsker
30. marts 2006 - 13:19 #25
Tillader alle felterne i databasen at du indsætter tomme strenge? og idet du har ændret PaSort til at være et tal, skal der jo også være validering på om feltet rent faktisk indeholder en numerisk værdi, for ellers fejler den på f.eks. tomme felter for txtPaSort...
Avatar billede jesperwerge Nybegynder
30. marts 2006 - 13:38 #26
Der er taget højde for at der må stå tomme strenge, men alle felter er udfyldt så det burde ikke være et problem,
Avatar billede softspot Forsker
30. marts 2006 - 13:44 #27
Hvis du kører løkken igennem igen, hvad er output så nu, for der var jo ikke noget i PaSort sidst du kørte den...?
Avatar billede jesperwerge Nybegynder
30. marts 2006 - 13:52 #28
der er stadig ingen værdier for andre records end den første, men hidSubmittet vister to ID'er  - det er lidt underligt.

resultat:
FEJL I UPDATE:
UPDATE [Paragraphs] SET OverSkr ='', Beskr ='', PaSort = ,Billede ='',Alignment ='',ID = WHERE AutoID = 6
Item: [ 6]
hisSubmitted: [4, 6]
-2147217900: [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

underligt
Avatar billede softspot Forsker
30. marts 2006 - 13:58 #29
Prøv lige denne kode i stedet for den nuværende løkke (jeg tror det er fordi der er kommet et mellemrum ind foran 6-tallet og det skal lige fjernes først, ellers passer feltnavnene jo ikke :)):

Items = Split(Request.Form("hidSubmitted"), ",")
For Each Item In Items
  Item = trim(Item)
  strSQL = "UPDATE [Paragraphs] SET "
  strSQL = strSQL & "OverSkr ='" & Request.Form("txtOverskr" & Item) &"', "
  strSQL = strSQL & "Beskr    ='" & Request.Form("txtBeskr" & Item) &"', "
  strSQL = strSQL & "PaSort = " & Request.Form("txtPaSort" & Item) & ","
  strSQL = strSQL & "Billede ='" & Request.Form("txtBillede" & Item) &"',"
  strSQL = strSQL & "Alignment ='" & Request.Form("txtAlignment" & Item) &"' "
  strSQL = strSQL & "WHERE AutoID =" & Item
  on error resume next
  oDB.Execute(strSQL)
  if err.number <> 0 then
    response.write "FEJL I UPDATE: " & "<br>"
    response.write strSQL & "<br>"
    response.write "Item: [" & Item & "]<br>"
    response.write "hisSubmitted: [" & Request.Form("hidSubmitted") & "]<br>"
    response.write err.number & ": " & err.description & "<br><br>"
    err.clear
  end if
  on error goto 0
  'response.write " = " & Item
Next
Avatar billede jesperwerge Nybegynder
30. marts 2006 - 14:10 #30
Tja  - så virker det, utroligt at et mellemrum kan gøre så meget :)

det er bare dejligt, tusind tak for hjælpen

vil du smide et svar, så er der points :)

P.S arbejder du meget i ASP.NET ? (nysgerighed)
Avatar billede softspot Forsker
30. marts 2006 - 14:25 #31
Velbekomme :)

Jeg arbejder desværre alt for lidt i ASP.NET i øjeblikket, så det er lidt svært at holde fast i den viden jeg har fået opsamlet... men jeg kommer forhåbentlig til at arbejde med det igen snart :)
Avatar billede jesperwerge Nybegynder
30. marts 2006 - 14:46 #32
ok - endnu engang tak for hjælpen
Avatar billede softspot Forsker
30. marts 2006 - 15:01 #33
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester