Avatar billede djsteiner Nybegynder
14. august 2008 - 11:35 Der er 39 kommentarer og
1 løsning

ASP Update

Hej er ny her på siden men håber at der nogle der vil hjælpe mig med dette problem med denne kode.

Fejltype:
Persits.Upload.1 (0x800A0009)
Index out of range.
/portfolio/cases.asp, line 8-9




<%
case "cms_ret"

if request.ServerVariables("CONTENT_LENGTH") > 0 then
 
  'Opret objekt
  Set Upload = Server.CreateObject("Persits.Upload")
 
  Upload.OverwriteFiles = False
 
  Path = Server.MapPath("./upload/original")
 
  'Fang filen til upload
    Set File = Upload.Files(1)
   
    'Tjek filformat


    if File.Ext <> ".jpg" then
      response.write"Forkert fil format"
      response.End()
    end if
   
    'Er det en gyldig billede fil?
    If File.ImageType <> "UNKNOWN" then
      Set Jpeg = Server.CreateObject("Persits.Jpeg")
     
      'Åben den uploadede fil
      Jpeg.Open(File.Path)
     
      'Resize i henhold til scale muligheden
      Jpeg.Width = Jpeg.OriginalWidth * Upload.form("scale") / 100
    Jpeg.Height =Jpeg.OriginalHeight * Upload.form("scale") / 100
     
      PathT = Server.MapPath("./upload/thumbnail")
      'angiv hvor filen skal gemmes
      SavePath = PathT & "\small_" & File.ExtractFileName
     
      'find absolute sti til uplaod mappe
      dbpath =replace (Server.MapPath("./upload"),"\","\\")
     
      'gem filnavn i en variable
     
      filnavn = File.ExtractFileName
     
      rid = upload.form("r_id")
      overskrifrVar = Upload.form("stroverkriftForm")
      infoVar = Upload.form("FCKeditor")
      longtextVar = Upload.form("inhold")
     
      sql = "SELECT * FROM refrencer WHERE r_id="&rid
  set rs = Conn.Execute(sql)
 
  set pic = upload.files("pic")
    if pic is nothing then
      pic1 = rs("pic")
    else
      pic1 = pic.ExtractFileName
      if rs("pic") <> "" then
        'starter slettefunktion af det fysiske billede
        set fso = Server.CreateObject("Scripting.FileSystemObject")
        sti = Server.MapPath("./upload/thumbnail"&rs("pafh")&"")
        'response.Write sti
        'response.End()
        set f1 = fso.GetFile(sti)
        f1.Delete
      end if
     
      end if
     
      end if
   
   
    sqLU ="UPDATE refrencer SET path='"& dbpath & "',filnavn='" & filnavn & "', r_over='" & infoVarInfo & "', r_text='" & longtextVar & "', pic='" & pic1 &  "' WHERE r_id="& rid& " "

conn.execute(sqlU)



Response.Redirect("index.asp?page=cms")



End if

id= request.QueryString("id")



sqlref= "SELECT * FROM refrencer WHERE r_id="& id &" "
set rsref = Conn.Execute(sqlref)



%>

<table width="337" border="0" cellspacing="0" cellpadding="0"> 
<form method="post" action="index.asp?page=cms_ret" name="opdaterref" enctype="multipart/form-data">
  <tr>
  <td width="67" height="24" align="left"><span class="brodskrift">Overkrift:</span></td>
    <td width="5" height="24"></td>
    <td width="222" height="24" align="left"><input type="text" name="stroverkriftForm" value="<%=rsref("r_over")%>"/></td>
    <td width="43" height="24"></td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td colspan="4" height="24" align="left"><span class="brodskrift">Smalltext:</span></td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td colspan="4" height="200" align="left">
  <%
    Set oFCKeditor = New FCKeditor
    oFCKeditor.BasePath = "fckeditor/"
    oFCKeditor.Value = ""&rsref("r_text")&""
    oFCKeditor.Create "FCKeditor"
  %>  </td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td colspan="4" height="24" align="left"><span class="brodskrift">Longtext:</span></td>
  </tr>
  <tr>
    <td colspan="4" height="10"></td>
  </tr>
  <tr>
    <td colspan="4" height="200" align="left">
  <%
    Set oFCKeditor = New FCKeditor
    oFCKeditor.BasePath = "fckeditor/"
    oFCKeditor.Value = ""&rsref("r_longtext")&""
    oFCKeditor.Create "inhold"
  %>  </td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td width="67" align="left"><span class="brodskrift">Billede:</span></td>
    <td width="5"></td>
    <td width="222" align="left"><input type="file" name="myfile" /></td>
    <td width="43"></td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td width="67" align="left"></td>
    <td width="5"></td>
    <td width="222" align="left">
    <select name="scale">
    <option value="75">75% af original st&oslash;rrelse</option>
    <option value="50">50% af original st&oslash;rrelse</option>
    <option value="25">25% af original st&oslash;rrelse</option>
    <option value="10">10% af original st&oslash;rrelse</option>
  </select>  </td>
    <td width="43"></td>
  </tr>
  <tr>
    <td colspan="2" height="24" align="left"><span class="brodskrift">Org.Billede:</span></td>
    <td height="24" width="222"><input type="file" name="pic" /></td>
    <td height="24" width="43" align="left"></td>
  </tr>
  <tr>
    <td height="5"></td>
</tr>   
  <tr>
    <td colspan="4" height="24" align="left"><input type="submit" value="Upload" /></td>
  </tr>
  </form>
</table>
Avatar billede softspot Forsker
14. august 2008 - 11:45 #1
umiddelbart lyder det som om Upload.Files(1) fejler, men det kan jeg ikke få til at passe med linie 8-9...

Prøv umiddelbart at indeksere 0 i stedet for 1, altså

Upload.Files(0)

kontrollér evt. om der er nogen files inden du indekseere. Jeg vil tro der finde en Count på Upload.Files, så du kan gøre således inden du begynder at aflæse filer

if Upload.Files.Count > 0 then
  set file = Upload.Files(0)

end if
Avatar billede djsteiner Nybegynder
14. august 2008 - 12:03 #2
nu kommer den med denne fejl.

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: 'File'
/portfolio/cases.asp, line 643

Det skal lige siges at det her er bare en del af koden af et stort projekt og derfor passer liner ikke men vil tror at den fejl som briskrives her er denner linier her.

if File.Ext <> ".jpg" then
      response.write"Forkert fil format"
      response.End()
    end if
Avatar billede softspot Forsker
14. august 2008 - 12:26 #3
Jeg synes ikke umiddelbart det ville være logisk hvis nogen af de linjer du viser, gav den fejl. Jeg synes mere det lyder som om en tildeling af et objekt ikke benytter "set" foran (jeg er dog ikke helt sikker på dette)...

Eksempelvis at der bruges:

File = Server.CreateObject("Scripting.FileSystemObject")

i stedet for den rigtige måde

Set File = Server.CreateObject("Scripting.FileSystemObject")


Opstår den fejl når du benytter Upload.Files(0)?

Kan du ikke se i din kildekodefil hvilken linje der helt præcis er tale om?
Avatar billede djsteiner Nybegynder
14. august 2008 - 12:42 #4
jeg har prøvet at benytter Upload.Files(0)


Men vil du gerne have hele koden fra projektet
Avatar billede djsteiner Nybegynder
14. august 2008 - 13:02 #5
Men line 643 er i mit tilfælde

if File.Ext <> ".jpg" then
Avatar billede softspot Forsker
14. august 2008 - 13:08 #6
Bruger du også den konstruktion med at tjekke på upload.files.count?

I så fald, har du så lagt alt den kode som er afhængig af, at der er noget i upload.files, ind i den if-sætning som tjekkede om der var nogle filer (for det nytter jo ikke noget bare at lægge den omkring upload.files(0) og så lade resten af koden blive udfør uanset om der er filer eller ej... det vil give nogle problemer med at File ikke er sat til noget).
Avatar billede djsteiner Nybegynder
14. august 2008 - 13:27 #7
ja jeg bruger

'Fang filen til upload
    if Upload.Files.Count > 0 then
  set file = Upload.Files(0)

end if

Koden ser sådan her ud nu


<%
case "cms_ret"

if request.ServerVariables("CONTENT_LENGTH") > 0 then
 
  'Opret objekt
  Set Upload = Server.CreateObject("Persits.Upload")
 
  Upload.OverwriteFiles = False
 
  Path = Server.MapPath("./upload/original")
 
  'Fang filen til upload
    if Upload.Files.Count > 0 then
  set file = Upload.Files(0)

end if
   
    'Tjek filformat


    if File.Ext <> ".jpg" then
      response.write"Forkert fil format"
      response.End()
    end if
   
    'Er det en gyldig billede fil?
    If File.ImageType <> "UNKNOWN" then
      Set Jpeg = Server.CreateObject("Persits.Jpeg")
     
      'Åben den uploadede fil
      Jpeg.Open(File.Path)
     
      'Resize i henhold til scale muligheden
      Jpeg.Width = Jpeg.OriginalWidth * Upload.form("scale") / 100
      Jpeg.Height =Jpeg.OriginalHeight * Upload.form("scale") / 100
     
      PathT = Server.MapPath("./upload/thumbnail")
      'angiv hvor filen skal gemmes
      SavePath = PathT & "\small_" & File.ExtractFileName
     
      'find absolute sti til uplaod mappe
      dbpath =replace (Server.MapPath("./upload"),"\","\\")
     
      'gem filnavn i en variable
     
      filnavn = File.ExtractFileName
     
      rid = upload.form("r_id")
      overskrifrVar = Upload.form("stroverkriftForm")
      infoVar = Upload.form("FCKeditor")
      longtextVar = Upload.form("inhold")
     
      sql = "SELECT * FROM refrencer WHERE r_id="&rid
  set rs = Conn.Execute(sql)
 
  set pic = upload.files("pic")
    if pic is nothing then
      pic1 = rs("pic")
    else
      pic1 = pic.ExtractFileName
      if rs("pic") <> "" then
        'starter slettefunktion af det fysiske billede
        set fso = Server.CreateObject("Scripting.FileSystemObject")
        sti = Server.MapPath("./images"&rs("pic")&"")
        'response.Write sti
        'response.End()
        set f1 = fso.GetFile(sti)
        f1.Delete
      end if
     
      end if
     
      end if
   
   
    sqLU ="UPDATE refrencer SET path='"& dbpath & "',filnavn='" & filnavn & "', r_over='" & infoVarInfo & "', r_text='" & longtextVar & "', pic='" & pic1 &  "' WHERE r_id="& rid& " "

conn.execute(sqlU)



Response.Redirect("index.asp?page=cms")



End if

id= request.QueryString("id")



sqlref= "SELECT * FROM refrencer WHERE r_id="& id &" "
set rsref = Conn.Execute(sqlref)



%>

<table width="337" border="0" cellspacing="0" cellpadding="0"> 
<form method="post" action="index.asp?page=cms_ret" name="opdaterref" enctype="multipart/form-data">
  <tr>
  <td width="67" height="24" align="left"><span class="brodskrift">Overkrift:</span></td>
    <td width="5" height="24"></td>
    <td width="222" height="24" align="left"><input type="text" name="stroverkriftForm" value="<%=rsref("r_over")%>"/></td>
    <td width="43" height="24"></td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td colspan="4" height="24" align="left"><span class="brodskrift">Smalltext:</span></td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td colspan="4" height="200" align="left">
  <%
    Set oFCKeditor = New FCKeditor
    oFCKeditor.BasePath = "fckeditor/"
    oFCKeditor.Value = ""&rsref("r_text")&""
    oFCKeditor.Create "FCKeditor"
  %>  </td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td colspan="4" height="24" align="left"><span class="brodskrift">Longtext:</span></td>
  </tr>
  <tr>
    <td colspan="4" height="10"></td>
  </tr>
  <tr>
    <td colspan="4" height="200" align="left">
  <%
    Set oFCKeditor = New FCKeditor
    oFCKeditor.BasePath = "fckeditor/"
    oFCKeditor.Value = ""&rsref("r_longtext")&""
    oFCKeditor.Create "inhold"
  %>  </td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td width="67" align="left"><span class="brodskrift">Billede:</span></td>
    <td width="5"></td>
    <td width="222" align="left"><input type="file" name="myfile" /></td>
    <td width="43"></td>
  </tr>
  <tr>
    <td colspan="4" height="12"></td>
  </tr>
  <tr>
    <td width="67" align="left"></td>
    <td width="5"></td>
    <td width="222" align="left">
    <select name="scale">
    <option value="75">75% af original st&oslash;rrelse</option>
    <option value="50">50% af original st&oslash;rrelse</option>
    <option value="25">25% af original st&oslash;rrelse</option>
    <option value="10">10% af original st&oslash;rrelse</option>
  </select>  </td>
    <td width="43"></td>
  </tr>
  <tr>
    <td colspan="2" height="24" align="left"><span class="brodskrift">Org.Billede:</span></td>
    <td height="24" width="222"><input type="file" name="pic" /></td>
    <td height="24" width="43" align="left"></td>
  </tr>
  <tr>
    <td height="5"></td>
</tr>   
  <tr>
    <td colspan="4" height="24" align="left"><input type="submit" value="Upload" /></td>
  </tr>
  </form>
</table>
Avatar billede softspot Forsker
14. august 2008 - 15:09 #8
Så er det nok det der er problemet, for du skal jo ikke gøre alt det du gør med File-objektet, hvis der ikke er nogle filer i det aktuelle POST til serveren.

Prøv i stedet med denne kode:

<%
case "cms_ret"

if request.ServerVariables("CONTENT_LENGTH") > 0 then
  'Opret objekt
  Set Upload = Server.CreateObject("Persits.Upload")
 
  Upload.OverwriteFiles = False
 
  Path = Server.MapPath("./upload/original")
 
  'Fang filen til upload
  if Upload.Files.Count > 0 then
    set file = Upload.Files(0)

    'Tjek filformat
    if File.Ext <> ".jpg" then
      response.write"Forkert fil format"
      response.End()
    end if
   
    'Er det en gyldig billede fil?
    If File.ImageType <> "UNKNOWN" then
      Set Jpeg = Server.CreateObject("Persits.Jpeg")
     
      'Åben den uploadede fil
      Jpeg.Open(File.Path)
     
      'Resize i henhold til scale muligheden
      Jpeg.Width = Jpeg.OriginalWidth * Upload.form("scale") / 100
      Jpeg.Height =Jpeg.OriginalHeight * Upload.form("scale") / 100
     
      PathT = Server.MapPath("./upload/thumbnail")
      'angiv hvor filen skal gemmes
      SavePath = PathT & "\small_" & File.ExtractFileName
     
      'find absolute sti til uplaod mappe
      dbpath =replace (Server.MapPath("./upload"),"\","\\")
     
      'gem filnavn i en variable
     
      filnavn = File.ExtractFileName
     
      rid = upload.form("r_id")
      overskrifrVar = Upload.form("stroverkriftForm")
      infoVar = Upload.form("FCKeditor")
      longtextVar = Upload.form("inhold")
     
      sql = "SELECT * FROM refrencer WHERE r_id="&rid
      set rs = Conn.Execute(sql)

      set pic = upload.files("pic")
      if pic is nothing then
        pic1 = rs("pic")
      else
        pic1 = pic.ExtractFileName
        if rs("pic") <> "" then
          'starter slettefunktion af det fysiske billede
          set fso = Server.CreateObject("Scripting.FileSystemObject")
          sti = Server.MapPath("./images"&rs("pic")&"")
          'response.Write sti
          'response.End()
          set f1 = fso.GetFile(sti)
          f1.Delete
        end if
      end if
    end if
   
    sqLU ="UPDATE refrencer SET path='"& dbpath & "',filnavn='" & filnavn & "', r_over='" & infoVarInfo & "', r_text='" & longtextVar & "', pic='" & pic1 &  "' WHERE r_id="& rid& " "

    conn.execute(sqlU)

    Response.Redirect("index.asp?page=cms")
  else
    Response.Write("Der er ikke angivet nogen fil til upload")
    Response.End
  end if
End if

'... OG SÅ RESTEN AF DIN KODE HERUNDER!!
Avatar billede djsteiner Nybegynder
14. august 2008 - 15:43 #9
ja det hjalp da på det men fejl medelsen  "Der er ikke angivet nogen fil til upload"

kommer frem på min index.asp?page=cms side
Avatar billede softspot Forsker
14. august 2008 - 15:54 #10
Jeg antager at du dermed mener at du HAR valgt en fil til upload og at du derfor ikke forventer at den skal vise en fejl... ;-)

Prøv at kalde Upload.Save umiddelbart efter du har oprettet Upload-objektet:

  Set Upload = Server.CreateObject("Persits.Upload")
  Upload.Save
Avatar billede djsteiner Nybegynder
14. august 2008 - 16:21 #11
Du mente sådan her ikke

Set Upload = Server.CreateObject("Persits.Upload")
    Upload.Save


efter den ændring  ja så er vi tilbage til den samme fejl


Fejltype:

Persits.Upload.1 (0x800A0009)
Index out of range.
/portfolio/cases.asp, line 636
Avatar billede softspot Forsker
14. august 2008 - 16:25 #12
OK, så prøv at benytte 1 i stedet for 0...
Avatar billede djsteiner Nybegynder
14. august 2008 - 16:39 #13
sådan her ikke

'Fang filen til upload
  if Upload.Files.Count > 1 then
    set file = Upload.Files(1)
Avatar billede djsteiner Nybegynder
14. august 2008 - 16:54 #14
efter jeg prøvede det kom denne her fejl

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
/portfolio/cases.asp, line 672


line 672 ser sådan her ud

line 671      sql = "SELECT * FROM refrencer WHERE r_id="&rid
line 672    set rs = Conn.Execute(sql)
Avatar billede djsteiner Nybegynder
14. august 2008 - 17:01 #15
så vidt jeg ved skulle der ikke være noget i vejen med den Select sætning.
Avatar billede softspot Forsker
14. august 2008 - 17:05 #16
OK, så lader det i det mindste til at fejlen med upload er løst... :-)

Nu skal du så bare sikre dig at rid indeholder en numerisk værdi inden du kaster den efter din database. Det kan du f.eks. gøre ved at tjekke variablen med funktionen isnumeric. Således:

' tjek om rid er numerisk og ikke indeholder komma eller punktum
if isnumeric(rid) and instr(rid,",")=0 and instr(rid,".")=0 then
  sql = "SELECT * FROM refrencer WHERE r_id=" & rid

  ' ...OG RESTEN AF DIN DATABASEKODE HER

else
  Response.write("Der er ikke angivet noget id, eller en anden fejl er opstået i forbindelse med opslag i databasen.")
end if


ALTERNATIVT er det tabelnavnet der er stavet forkert... ;-)
Avatar billede djsteiner Nybegynder
14. august 2008 - 17:55 #17
Så kommer denne fejl
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens: 'rs'
/portfolio/cases.asp, line 686

line 686 ser sådan ud

line 681      set pic = upload.files("pic")
line 682      if pic is nothing then
line 683        pic1 = rs("pic")
line 684        else
line 685        pic1 = pic.ExtractFileName
line 686        if rs("pic") <> "" then
Avatar billede softspot Forsker
14. august 2008 - 18:19 #18
Jamen, du har da en kaskade af fejl i din kode der... ;-)

Hvilken type er feltet "pic" i databasen? Det lader i det mindste ikke til at det er en streng. Du kan evt. sammensætte med en tom streng, så vil feltet blive konverteret til en streng. Således:

if rs("pic") & "" <> "" then
Avatar billede djsteiner Nybegynder
14. august 2008 - 18:46 #19
"pic" er en af de felter hvor mine billedr  ligger i

min database table refrencer ser sådan ud

r_id      path                            filnavn                    r_over         
22      C:\WEB-BACKUP\portfolio\upload    manhattanNY_edit.jpg      r_longtext pic

r_text    r_longtext        pic
wMEMO      MEMO            New-York_man.jpg
Avatar billede djsteiner Nybegynder
14. august 2008 - 18:51 #20
"pic" er en af de felter hvor mine billedr  ligger i

min database table refrencer ser sådan ud

r_id      path                            filnavn                    r_over         
22      C:\WEB-BACKUP\portfolio\upload    manhattanNY_edit.jpg      r_longtext pic

r_text    r_longtext        pic
MEMO      MEMO            New-York_man.jpg
Avatar billede djsteiner Nybegynder
14. august 2008 - 19:33 #21
jeg har prøvet at ændre line 886 til
if rs("pic") & "" <> "" then
men det hjælper ikke på problemet
Avatar billede softspot Forsker
14. august 2008 - 23:13 #22
Underligt!? Benytter du On Error Resume Next nogen steder? Man kunne næsten have rs mistænkt for ikke at være initieret (fordi conn.execute fejler og ikke får sat variablen rs til noget og den derfor indeholder "værdien" Empty).

Kan du ikke prøve at indsætte nogle debug-linier i koden, som tester nogle forhold omkring variablen og dens typen... bare så vi har noget at forholde os til?

Du kan forsøge at indsætte disse linjer umiddelbart inden linje 681 (og umiddelbart efter linjen med conn.execute):

response.write "Empty: " & isEmpty(rs) & "<br>"
response.write "Null: " & isNull(rs) & "<br>"
response.write "Nothing: " & (rs is nothing) & "<br>"
response.write "Objekt: " & isObject(rs) & "<br>"
response.write "Type: " & typeName(rs) & "<br>"
response.flush

...og fortæl hvad den skrev ud.
Avatar billede djsteiner Nybegynder
15. august 2008 - 00:48 #23
denne fejl kommer så
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk
/portfolio/cases.asp, line 732

line 732 ser sådan ud nu

line 732 response.write "Nothing: " & (rs is nothing) & "<br>"
Avatar billede softspot Forsker
15. august 2008 - 08:16 #24
Se det vidner jo om at rs ikke indeholder det man skulle forvente (nemlig et objekt af typen ADODB.RecordSet).

Hvor har du variablen Conn fra og kan du ikke lige vise hvordan koden ser ud på nuværende tidspunkt?
Avatar billede djsteiner Nybegynder
15. august 2008 - 10:21 #25
Her har du koden som den ser ud nu.

<%
case "cms_ret"

if request.ServerVariables("CONTENT_LENGTH") > 0 then
  'Opret objekt
  Set Upload = Server.CreateObject("Persits.Upload")
  Upload.Save
 
  Upload.OverwriteFiles = False
 
  Path = Server.MapPath("./upload/original")
 
  'Fang filen til upload
  if Upload.Files.Count > 1 then
    set file = Upload.Files(1)

    'Tjek filformat
    if File.Ext <> ".jpg" then
      response.write"Forkert fil format"
      response.End()
    end if
   
    'Er det en gyldig billede fil?
    If File.ImageType <> "UNKNOWN" then
      Set Jpeg = Server.CreateObject("Persits.Jpeg")
     
      'Åben den uploadede fil
      Jpeg.Open(File.Path)
     
      'Resize i henhold til scale muligheden
      Jpeg.Width = Jpeg.OriginalWidth * Upload.form("scale") / 100
      Jpeg.Height =Jpeg.OriginalHeight * Upload.form("scale") / 100
     
      PathT = Server.MapPath("./upload/thumbnail")
      'angiv hvor filen skal gemmes
      SavePath = PathT & "\small_" & File.ExtractFileName
     
      'find absolute sti til uplaod mappe
      dbpath =replace (Server.MapPath("./upload"),"\","\\")
     
      'gem filnavn i en variable
     
      filnavn = File.ExtractFileName
     
      rid = upload.form("r_id")
      overskrifrVar = Upload.form("stroverkriftForm")
      infoVar = Upload.form("FCKeditor")
      longtextVar = Upload.form("inhold")
     
      ' tjek om rid er numerisk og ikke indeholder komma eller punktum
if isnumeric(rid) and instr(rid,",")=0 and instr(rid,".")=0 then
  sql = "SELECT * FROM refrencer WHERE r_id=" & rid
      set rs = Conn.Execute(sql)
     
      else
  Response.write("Der er ikke angivet noget id, eller en anden fejl er opstået i forbindelse med opslag i databasen.")
end if


response.write "Empty: " & isEmpty(rs) & "<br>"
response.write "Null: " & isNull(rs) & "<br>"
response.write "Nothing: " & (rs is nothing) & "<br>"
response.write "Objekt: " & isObject(rs) & "<br>"
response.write "Type: " & typeName(rs) & "<br>"
response.flush


      set pic = upload.files("pic")
      if pic is nothing then
        pic1 = rs("pic")
      else
        pic1 = pic.ExtractFileName
        if rs("pic") & "" <> "" then
          'starter slettefunktion af det fysiske billede
          set fso = Server.CreateObject("Scripting.FileSystemObject")
          sti = Server.MapPath("./images"&rs("pic")&"")
          'response.Write sti
          'response.End()
          set f1 = fso.GetFile(sti)
          f1.Delete
        end if
      end if
    end if
   
   
   
    sqLU ="UPDATE refrencer SET path='"& dbpath & "',filnavn='" & filnavn & "', r_over='" & infoVarInfo & "', r_text='" & longtextVar & "', pic='" & pic1 &  "' WHERE r_id="& rid& " "

    conn.execute(sqlU)

    Response.Redirect("index.asp?page=cms")
  else
    Response.Write("Der er ikke angivet nogen fil til upload")
    Response.End
  end if
End if





id= request.QueryString("id")



sqlref= "SELECT * FROM refrencer WHERE r_id="& id &" "
set rsref = Conn.Execute(sqlref)

response.write "Empty: " & isEmpty(rs) & "<br>"
response.write "Null: " & isNull(rs) & "<br>"
response.write "Nothing: " & (rs is nothing) & "<br>"
response.write "Objekt: " & isObject(rs) & "<br>"
response.write "Type: " & typeName(rs) & "<br>"
response.flush

%>
Avatar billede softspot Forsker
15. august 2008 - 10:48 #26
Hmm... du laver godt nok det check på om rid er numerisk, men desværre lader du bare koden, der forventer et objekt i rs, køre videre selvom den ikke når at blive sat (i det tilfælde at rid rent faktisk ikke er numerisk) - det SKAL give problemer. Du er nød til at lægge den kode, som er afhængig af at rs er et RecordSet-objekt, ind i sammen if-blok som den kode der laver opslaget i databasen. Nogenlunde således:


  if isnumeric(rid) and instr(rid,",")=0 and instr(rid,".")=0 then
    sql = "SELECT * FROM refrencer WHERE r_id=" & rid
    set rs = Conn.Execute(sql)
 
    response.write "Empty: " & isEmpty(rs) & "<br>"
    response.write "Null: " & isNull(rs) & "<br>"
    response.write "Objekt: " & isObject(rs) & "<br>"
    if isObject(rs) then
      response.write "Nothing: " & (rs is nothing) & "<br>"
    end if
    response.write "Type: " & typeName(rs) & "<br>"
    response.flush


    set pic = upload.files("pic")
    if pic is nothing then
      pic1 = rs("pic")
    else
      pic1 = pic.ExtractFileName
      if rs("pic") & "" <> "" then
        'starter slettefunktion af det fysiske billede
        set fso = Server.CreateObject("Scripting.FileSystemObject")
        sti = Server.MapPath("./images"&rs("pic")&"")
        'response.Write sti
        'response.End()
        set f1 = fso.GetFile(sti)
        f1.Delete
      end if
    end if
  end if
   
   
   
  sqLU ="UPDATE refrencer SET path='"& dbpath & "',filnavn='" & filnavn & "', r_over='" & infoVarInfo & "', r_text='" & longtextVar & "', pic='" & pic1 &  "' WHERE r_id="& rid& " "

  conn.execute(sqlU)

  Response.Redirect("index.asp?page=cms")
     
else
  Response.write("Der er ikke angivet noget id, eller en anden fejl er opstået i forbindelse med opslag i databasen.")
end if


DERNÆST skal du, når du kopierer kode, jo sørge for at ændre variabelnavne så de passer til den kontekst de benyttes i. Idet du slår op for at læse data (ved første visning), kalder du din RecordSet-variabel for rsref, så det skal den også hedde i efterfølgende kode. Jeg er klar over at det kun er DEBUG-kode, men ikke desto mindre kan det jo fejle som alt andet kode, derfor skal du rette det således:

id= request.QueryString("id")

sqlref= "SELECT * FROM refrencer WHERE r_id="& id &" "
set rsref = Conn.Execute(sqlref)

response.write "Empty: " & isEmpty(rsref) & "<br>"
response.write "Null: " & isNull(rsref) & "<br>"
response.write "Objekt: " & isObject(rsref) & "<br>"
if isObject(rsref) then
  response.write "Nothing: " & (rsref is nothing) & "<br>"
end if
response.write "Type: " & typeName(rsref) & "<br>"
response.flush


NB: Fejlhåndtering er en STOR del af at programmere, så det kan du ligeså godt vænne dig til, ellers kommer du til at fejl stort som programmør :-)
Avatar billede djsteiner Nybegynder
15. august 2008 - 11:22 #27
okay men nu komer der fejl  i line 739 men den er jo sat til value="<%=rsref


Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens: 'rsref'
/portfolio/cases.asp, line 739

line 739 
<td width="222" height="24" align="left"><input type="text" name="stroverkriftForm" value="<%=rsref("r_over")%>"/></td>
Avatar billede softspot Forsker
15. august 2008 - 11:36 #28
Jeg er ret interesseret i at høre hvad din browser skriver mht. de værdier jeg har fået dig til at skrive ud - det er jo ligesom det der er grundlaget for at bedømme hvor det giver mest mening at lede efter fejlen...
Avatar billede djsteiner Nybegynder
15. august 2008 - 11:48 #29
så er jeg ikke helt sikker på at jeg er helt med, men det er sådan her koden skal se ud ikke

<%
case "cms_ret"

if request.ServerVariables("CONTENT_LENGTH") > 0 then
  'Opret objekt
  Set Upload = Server.CreateObject("Persits.Upload")
  Upload.Save
 
  Upload.OverwriteFiles = False
 
  Path = Server.MapPath("./upload/original")
 
  'Fang filen til upload
  if Upload.Files.Count > 1 then
    set file = Upload.Files(1)

    'Tjek filformat
    if File.Ext <> ".jpg" then
      response.write"Forkert fil format"
      response.End()
    end if
   
    'Er det en gyldig billede fil?
    If File.ImageType <> "UNKNOWN" then
      Set Jpeg = Server.CreateObject("Persits.Jpeg")
     
      'Åben den uploadede fil
      Jpeg.Open(File.Path)
     
      'Resize i henhold til scale muligheden
      Jpeg.Width = Jpeg.OriginalWidth * Upload.form("scale") / 100
      Jpeg.Height =Jpeg.OriginalHeight * Upload.form("scale") / 100
     
      PathT = Server.MapPath("./upload/thumbnail")
      'angiv hvor filen skal gemmes
      SavePath = PathT & "\small_" & File.ExtractFileName
     
      'find absolute sti til uplaod mappe
      dbpath =replace (Server.MapPath("./upload"),"\","\\")
     
      'gem filnavn i en variable
     
      filnavn = File.ExtractFileName
     
      rid = upload.form("r_id")
      overskrifrVar = Upload.form("stroverkriftForm")
      infoVar = Upload.form("FCKeditor")
      longtextVar = Upload.form("inhold")

if isnumeric(rid) and instr(rid,",")=0 and instr(rid,".")=0 then
    sql = "SELECT * FROM refrencer WHERE r_id=" & rid
    set rs = Conn.Execute(sql)
 
    response.write "Empty: " & isEmpty(rs) & "<br>"
    response.write "Null: " & isNull(rs) & "<br>"
    response.write "Objekt: " & isObject(rs) & "<br>"
    if isObject(rs) then
      response.write "Nothing: " & (rs is nothing) & "<br>"
    end if
    response.write "Type: " & typeName(rs) & "<br>"
    response.flush


    set pic = upload.files("pic")
    if pic is nothing then
      pic1 = rs("pic")
    else
      pic1 = pic.ExtractFileName
      if rs("pic") & "" <> "" then
        'starter slettefunktion af det fysiske billede
        set fso = Server.CreateObject("Scripting.FileSystemObject")
        sti = Server.MapPath("./images"&rs("pic")&"")
        'response.Write sti
        'response.End()
        set f1 = fso.GetFile(sti)
        f1.Delete
      end if
    end if
  end if
   
   
   
  sqLU ="UPDATE refrencer SET path='"& dbpath & "',filnavn='" & filnavn & "', r_over='" & infoVarInfo & "', r_text='" & longtextVar & "', pic='" & pic1 &  "' WHERE r_id="& rid& " "

  conn.execute(sqlU)

  Response.Redirect("index.asp?page=cms")
     
else
  Response.write("Der er ikke angivet noget id, eller en anden fejl er opstået i forbindelse med opslag i databasen.")
end if



id= request.QueryString("id")

sqlref= "SELECT * FROM refrencer WHERE r_id="& id &" "
set rsref = Conn.Execute(sqlref)

response.write "Empty: " & isEmpty(rsref) & "<br>"
response.write "Null: " & isNull(rsref) & "<br>"
response.write "Objekt: " & isObject(rsref) & "<br>"
if isObject(rsref) then
  response.write "Nothing: " & (rsref is nothing) & "<br>"
end if
response.write "Type: " & typeName(rsref) & "<br>"
response.flush
end if
Avatar billede softspot Forsker
15. august 2008 - 11:56 #30
Det er disse linier i din browser jeg er interesseret i:

    response.write "Empty: " & isEmpty(rs) & "<br>"
    response.write "Null: " & isNull(rs) & "<br>"
    response.write "Objekt: " & isObject(rs) & "<br>"
    if isObject(rs) then
      response.write "Nothing: " & (rs is nothing) & "<br>"
    end if
    response.write "Type: " & typeName(rs) & "<br>"
    response.flush
Avatar billede djsteiner Nybegynder
15. august 2008 - 12:17 #31
okay her kommer et totalt nybegynder spørgsmål hvordan for jeg vist resultatet af disse linier i browser
Avatar billede softspot Forsker
15. august 2008 - 12:41 #32
De skulle meget gerne komme af sig selv (i og med jeg allerede har kald response.write som udskriver tekst til din browser)... :-)

Det der måske går galt er, at din side når at redirect'e og du derfor ikke får værdierne at se. Du kan evt. prøve at indsætte flg. linie umiddelbart inden Response.Redirect:

Response.End

Så vil der ikke ske mere efter det punkt hvor response.end bliver kaldt, da den stopper al udskrivning til browseren (i en forsimplet udlægning).
Avatar billede djsteiner Nybegynder
15. august 2008 - 13:00 #33
Er det sådan her di mener

Response.End
  end if
  Response.Redirect("index.asp?page=cms")
Avatar billede softspot Forsker
15. august 2008 - 13:03 #34
egentlig umiddelbart før Response.Redirect (altså efter end if i dette tilfælde).
Avatar billede djsteiner Nybegynder
15. august 2008 - 13:11 #35
der kommer stadigvæk ingen resultater

den viser bare siden som den før.
Avatar billede softspot Forsker
15. august 2008 - 14:15 #36
Der er noget andet som slører resultatet, noget som du ikke har med her...

Jeg har desværre ikke tid til at hjælpe længere idag, da jeg har en aftale om lidt, men mit råd er: skaf dig af med alt det overflødige på siden og hav kun det kode der er nødvendigt for at udføre din handling. Du kan evt. POST'e din form til en anden side med dette kode i, og så redirect'e tilbage til formularsiden når det går godt... men jeg fornemmer det vil tilføre en kompleksitet du ikke er klar til at håndtere endnu...(?)
Avatar billede djsteiner Nybegynder
15. august 2008 - 14:20 #37
Ja det vil jeg prøve du  skal have mange tak din indsats.
Tak for Hjælpen
Avatar billede djsteiner Nybegynder
18. august 2010 - 15:08 #38
Hej kom lige med et svar så kan jeg få dette spørgsmål lukket
Avatar billede djsteiner Nybegynder
18. august 2010 - 15:09 #39
Hej Softspot kom lige med et svar så kan jeg få dette spørgsmål lukket :)
Avatar billede softspot Forsker
18. august 2010 - 15:21 #40
Kommer her :-)
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