Avatar billede weis Nybegynder
25. november 2005 - 18:41 Der er 11 kommentarer og
1 løsning

tjek om felter er udfyldt og om datoen er brugt

Jeg har fået god hjælp til en uploadform (hjælpen kan ses her http://www.eksperten.dk/spm/666591 ) men nu har jeg forgæves forsøgt, at få scriptet til at tjekke om der er indhold i begge forme og og datoen i datofeltet allerede eksistere i min database...?

Jeg kan ikke greje den ;-)
Avatar billede eagleeye Praktikant
28. november 2005 - 21:46 #1
Jeg ved ikke om du har fundet en løsning, men du skal lave tjekket efter denne linie:

  'Upload filerne til memory
  upload.Upload


Da upload.upload funktionen fylder upload komponenten form-collection. Så det kan laves i stil med dette:

  'Upload filerne til memory
  upload.Upload
  'Tjek form felterne
  if upload.form("dato") = "" or MyUpLoad.Files("fil1").Name = "" then
    response.Write "Der mangler fil eller dato"
    response.End
  end if
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db.mdb")
  SQL = "select * from tablenavn where dato = '" & upload.Form("dato") & "'"
  set rs = Conn.Execute(SQL)
  if not rs.EOF then
    response.Write "Dato'en finden i forvejen i databasen
    response.End
  end if
  Conn.Close
  set Conn = Nothing
Avatar billede weis Nybegynder
29. november 2005 - 18:45 #2
så får jeg en fejl:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

i linjen:

if upload.form("dato") = "" or MyUpLoad.Files("fil1").Name = "" then
Avatar billede eagleeye Praktikant
29. november 2005 - 19:06 #3
Det er enten upload.form("dato") eller  MyUpLoad.Files("fil1").Name  som giver fejlen det skal i begge dele være navnet på dit upload object så hvis det er MyUpLoad så skal if sætningen se sådan her ud:

if MyUpLoad.form("dato") = "" or MyUpLoad.Files("fil1").Name = "" then
Avatar billede eagleeye Praktikant
29. november 2005 - 19:09 #4
arh... min fejl i det kode jeg har vist :)

Objektet hedder jo upload hvis det er samme kode som i det andet spørgsmål så if sætningen skal være sådan her, men det har du måske selv rettet:

if upload.form("dato") = "" or upload.Files("fil1").Name = "" then
Avatar billede weis Nybegynder
29. november 2005 - 19:19 #5
Nu får jeg ikke fejlen mere, men den er stadig ligeglad med om jeg har valgt en fil... jeg har også problemer med at få den til at skrive en fejl når man forsøger at uploade en fil man ikke må... Min kode ser sådan her ud nu

<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  ' Object creation
  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  ' Max størrelse i bytes
 
  upload.AllowedFilesList = "doc,rtf,pdf,jpg"

  'Upload filerne til memory
  upload.Upload
  'Tjek form felterne
  if upload.form("dato") = "" or UpLoad.Files("fil1").Name = "" then
    response.Write "Der mangler fil eller dato"
    response.End
  end if
  Set ConnTjek = Server.CreateObject("ADODB.Connection")
  ConnTjek.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db/filer.mdb")
  SQL = "select * from styrelse where dato = '" & upload.Form("dato") & "'"
  set rs = ConnTjek.Execute(SQL)
  if not rs.EOF then
    response.Write "Dato'en finden i forvejen i databasen"
    response.End
  end if
  ConnTjek.Close
  set ConnTjek = Nothing

  For each file In upload.Files
    If not file.IsMissing Then
      filnavn = "/filer/" & upload.Form("dato") &"-tekst" & "." & file.FileExt
      filtype = file.FileExt
      storrelse = Request.ServerVariables("CONTENT_LENGTH")
      file.SaveAs Server.Mappath(filnavn)
    end if
  next

  'Gem filnanvet i databasen
  if filnavn <> "" then
    Set ConnFil = Server.CreateObject("ADODB.Connection")
    ConnFil.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db/filer.mdb")

    SQL = "INSERT INTO styrelse (dato, link, filnavn, navn, udato, kl, storrelse) VALUES ('" & upload.Form("dato") & "', '" & filnavn & "', '" & filtype & "', '" & rs("navn") & "', '" & FormatDateTime(Now, vbLongDate) & "', '" & FormatDateTime(Now, vbLongTime) & "', '" & storrelse & "')"
    ConnFil.Execute(SQL)
    ConnFil.Close
    Set ConnFil = Nothing
        end if
response.Write("filen er uploaded")
end if
%>
                  <form method="post" action="download.asp?mode=up-styr" ENCTYPE="multipart/form-data" name="styrelse">
                    <p>
                      <input name="fil1" type="file" size="30" width="100" >
                      <br>
                      <br>
                      <input name="dato" type="text" id="dato" size="15" readonly="on">&nbsp;<img src="img/kalender.gif" width="16" height="14">&nbsp;<a href="java script:showCal('Calendar1')">Vælge
                      datoen for mødet</a><br>
                      <br>
                      <input type="submit" name="Upload" value="Upload referat">
                    </p>
                  </form>
Avatar billede eagleeye Praktikant
29. november 2005 - 19:43 #6
Jeg kiggede lidt på deres hjemmeside og prøv at rette det til dette:



<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  On Error Resume Next

  ' Object creation
  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  ' Max størrelse i bytes
 
  upload.AllowedFilesList = "doc,rtf,pdf,jpg"

  'Upload filerne til memory
  upload.Upload

'  Trap errors
'  ***********
  If Err Then
      Response.Write("<b>Wrong selection : </b>" & Err.description)
  end if

  'Tjek form felterne
  if upload.form("dato") = "" or upload.files("fil1").IsMissing then
    response.Write "Der mangler fil eller dato"
    response.End
  end if
  Set ConnTjek = Server.CreateObject("ADODB.Connection")
  ConnTjek.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db/filer.mdb")
  SQL = "select * from styrelse where dato = '" & upload.Form("dato") & "'"
  set rs = ConnTjek.Execute(SQL)
  if not rs.EOF then
    response.Write "Dato'en finden i forvejen i databasen"
    response.End
  end if
  ConnTjek.Close
  set ConnTjek = Nothing

  For each file In upload.Files
    If not file.IsMissing Then
      filnavn = "/filer/" & upload.Form("dato") &"-tekst" & "." & file.FileExt
      filtype = file.FileExt
      storrelse = Request.ServerVariables("CONTENT_LENGTH")
      file.SaveAs Server.Mappath(filnavn)
    end if
  next

  'Gem filnanvet i databasen
  if filnavn <> "" then
    Set ConnFil = Server.CreateObject("ADODB.Connection")
    ConnFil.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db/filer.mdb")

    SQL = "INSERT INTO styrelse (dato, link, filnavn, navn, udato, kl, storrelse) VALUES ('" & upload.Form("dato") & "', '" & filnavn & "', '" & filtype & "', '" & rs("navn") & "', '" & FormatDateTime(Now, vbLongDate) & "', '" & FormatDateTime(Now, vbLongTime) & "', '" & storrelse & "')"
    ConnFil.Execute(SQL)
    ConnFil.Close
    Set ConnFil = Nothing
        end if
response.Write("filen er uploaded")
end if
%>
                  <form method="post" action="download.asp?mode=up-styr" ENCTYPE="multipart/form-data" name="styrelse">
                    <p>
                      <input name="fil1" type="file" size="30" width="100" >
                      <br>
                      <br>
                      <input name="dato" type="text" id="dato" size="15" readonly="on">&nbsp;<img src="img/kalender.gif" width="16" height="14">&nbsp;<a href="java script:showCal('Calendar1')">Vælge
                      datoen for mødet</a><br>
                      <br>
                      <input type="submit" name="Upload" value="Upload referat">
                    </p>
                  </form>
Avatar billede weis Nybegynder
29. november 2005 - 20:06 #7
nu begynder det at ligen noget, men den tilføjer ikke længere noget info til min database - kan det være fordi den bliver åbnet og lukket to gange???
Avatar billede eagleeye Praktikant
29. november 2005 - 20:13 #8
Som det er lavet skulle det ikke give et problem prøv at fjerne denne linie:

On Error Resume Next

men den skal ind igen når scriptet virker.
Avatar billede weis Nybegynder
29. november 2005 - 20:17 #9
så kommer fejlen:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

i linjen:

SQL = "INSERT INTO styrelse (dato, link, filnavn, navn, udato, kl, storrelse) VALUES ('" & upload.Form("dato") & "', '" & filnavn & "', '" & filtype & "', '" & rs("navn") & "', '" & FormatDateTime(Now, vbLongDate) & "', '" & FormatDateTime(Now, vbLongTime) & "', '" & storrelse & "')"
Avatar billede eagleeye Praktikant
29. november 2005 - 20:20 #10
Det er nok:  rs("navn")  som giver problemet den tror rs er et recordset og den kan ikke finde kolonnen navn i det. Hvor skal navn komme fra?
Avatar billede weis Nybegynder
29. november 2005 - 20:23 #11
jeps der er den... Det er fordi jeg har en anden database der er åben, hvor den skal hente brugerinfo fra, og den bruger rs - men det er rettet nu

1000-tak for hjælpen - og så må du gerne ligge et svar
Avatar billede eagleeye Praktikant
29. november 2005 - 20:26 #12
Ok her er et svar ;)
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