Avatar billede jpj3 Nybegynder
31. juli 2004 - 13:36 Der er 17 kommentarer og
1 løsning

Indsætte hidden fields i combobox

Jeg har 2 tabeller med følgende indhold.

tabel 1

byggeid
bygsagsid
bygadresse

Tabel 2

BID
BygSagsid
BygAdr
BygTekst
BygBilled

Jeg bruger en combobox til at vise/vælge BygAdr i en form til at oploade billeder, hvordan får jeg lige sat et "hidden field" ind med bygsagsid så den kommer med i tabellen.

  <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="upload.asp">
            <table align="left">
             
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">BygAdr:</font></strong></td>
                <td> 
               
                <select name="BygAdr" size="1" id="BygAdr">
                  <option value="value">Adresse</option>
                <%
                While (NOT drop.EOF)
                %>
                <option value="<%=(drop.Fields.Item("Bygadres").Value)%>"><%=(drop.Fields.Item("Bygadres").Value)%></option>
              <%
            drop.MoveNext()
            Wend
            If (drop.CursorType > 0) Then
              drop.MoveFirst
            Else
            drop.Requery
            End If
            %>
            </select> </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">BygTekst:</font></strong></td>
                <td> <input type="text" name="BygTekst" value="" size="32"> </td>
              </tr>
             
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">Billed:</font></strong></td>
                <td> <input type= FILE size= 30 name="FILE12"> </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">&nbsp;</td>
                <td> <input type="SUBMIT" value="Upload!" name="SUBMIT"> </td>
              </tr>
            </table>
  <p align="left">&nbsp;</p>
</FORM>
Avatar billede jpj3 Nybegynder
31. juli 2004 - 13:37 #1
upload asp ser såleds ud.


<html>
<body>

<%
    Set Upload = Server.CreateObject("Persits.Upload.1")   
    Upload.OverwriteFiles = True
    Upload.SetMaxSize 300000, True
'Mappen billederne bliver uploadet til
    Upload.SaveVirtual("/bygimage/")
   
'For Each item in Upload.Form   

set     Str_BygAdr             = Upload.Form("BygAdr")
Set      Str_BygTekst         = Upload.form("BygTekst")

For Each File in Upload.Files

  Dim FileName
  FileName = File.ExtractFileName

    if Err <> 0 Then

        Response.Write "Der er sket en fejl! : " & Err.Description

    Else
   
        Response.Write "Filen "&FileName&" er uploaded!<br>"
       
    'Databasen
        dbConnection = "Data Source=d:\web\localuser\stconstruction.dk\database\8.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"

    'Database string
        strSQL = "SELECT * FROM Bygbilled"
        Set rs = Server.CreateObject("ADODB.RecordSet")
        rs.Open strSQL, dbConnection, 1, 3

            rs.AddNew
            rs("BygAdr")          = Str_BygAdr
            rs("BygTekst")        = Str_BygTekst
            rs("BygBilled")        = FileName

            rs.Update   
            rs.Close
        Set rs = Nothing
'Den side du bliver sendt tilbage til efter du har uploadet
        Response.Redirect "/admin.asp"
       
    End If
Next


%>



</body>

</html>
Avatar billede para7 Nybegynder
31. juli 2004 - 14:35 #2
Mon ikke det her skulle virke:

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="upload.asp">
            <input type="hidden" name="bygsagsID " value="<%=(drop.Fields.Item("bygsagsid ").Value)%>">
            <table align="left">
             
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">BygAdr:</font></strong></td>
                <td> 
               
                <select name="BygAdr" size="1" id="BygAdr">
                  <option value="value">Adresse</option>
                <%
                While (NOT drop.EOF)
                %>
                <option value="<%=(drop.Fields.Item("Bygadres").Value)%>"><%=(drop.Fields.Item("Bygadres").Value)%></option>
              <%
            drop.MoveNext()
            Wend
            If (drop.CursorType > 0) Then
              drop.MoveFirst
            Else
            drop.Requery
            End If
            %>
            </select> </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">BygTekst:</font></strong></td>
                <td> <input type="text" name="BygTekst" value="" size="32"> </td>
              </tr>
             
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">Billed:</font></strong></td>
                <td> <input type= FILE size= 30 name="FILE12"> </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">&nbsp;</td>
                <td> <input type="SUBMIT" value="Upload!" name="SUBMIT"> </td>
              </tr>
            </table>
  <p align="left">&nbsp;</p>
</FORM>


og upload asp:

<html>
<body>

<%
    Set Upload = Server.CreateObject("Persits.Upload.1")   
    Upload.OverwriteFiles = True
    Upload.SetMaxSize 300000, True
'Mappen billederne bliver uploadet til
    Upload.SaveVirtual("/bygimage/")
   
'For Each item in Upload.Form   

set    Str_BygAdr            = Upload.Form("BygAdr")
Set      Str_BygTekst        = Upload.form("BygTekst")
Set      Str_BygsagsID        = Upload.form("BygsagsID")

For Each File in Upload.Files

  Dim FileName
  FileName = File.ExtractFileName

    if Err <> 0 Then

        Response.Write "Der er sket en fejl! : " & Err.Description

    Else
   
        Response.Write "Filen "&FileName&" er uploaded!<br>"
       
    'Databasen
        dbConnection = "Data Source=d:\web\localuser\stconstruction.dk\database\8.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"

    'Database string
        strSQL = "SELECT * FROM Bygbilled"
        Set rs = Server.CreateObject("ADODB.RecordSet")
        rs.Open strSQL, dbConnection, 1, 3

            rs.AddNew
            rs("BygAdr")          = Str_BygAdr
            rs("BygTekst")        = Str_BygTekst
            rs("BygBilled")        = FileName
            rs("BygsagsID")        = Str_BygsagsID
           
            rs.Update   
            rs.Close
        Set rs = Nothing
'Den side du bliver sendt tilbage til efter du har uploadet
        Response.Redirect "/admin.asp"
       
    End If
Next


%>



</body>

</html>
Avatar billede jpj3 Nybegynder
31. juli 2004 - 17:47 #3
Den kommer med følgende fejl.

ADODB.Fields error '800a0cc1'

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

/bygbilledny.asp, line 19

Dette er linie 19.

<input type="hidden" name="BygsagsID " value="<%=(drop.Fields.Item("Bygadres ").Value)%>">
Avatar billede para7 Nybegynder
31. juli 2004 - 19:15 #4
Jeg gik ud fra at drop.Fields.Item skulle hedde noget i stil med de andre så jeg komponerede linjen som:
<input type="hidden" name="bygsagsID " value="<%=(drop.Fields.Item("bygsagsid ").Value)%>">
PS: Der er sneget sig et mellemrum ind i name.

Du har skrevet Bygadres, men det er nok med vilje? Jeg ved ikke hvad id felterne skal hedde i dit system.
Eller er det noget helt tredje der kan være galt? Jeg tror nu det er let at klare.
Avatar billede jpj3 Nybegynder
31. juli 2004 - 21:21 #5
Det virker næsten, den tager hidden fields med over i db.
Det er bare det forkerte tal.
Jeg vælge nr 2 i combo box og den tager tallet fra nr. 1 med over.
Det skulle være sådan at man vælger bygadresse (fra tabel 1) og den tager bygsagsid (fra tabel 1) med over i hidden fields også lægger det hele ind i tabel 2
Avatar billede para7 Nybegynder
01. august 2004 - 13:51 #6
Hvorfor skulle vi egentlig overføre det id i hidden fields, det kan man alligevel ikke. Vi tager da bare og lader den besøgende vælge byggeteksten og overfører det tilhørende id via formen med denne linje:

                While (NOT drop.EOF)
                %>
                <option name="BygsagsID" value="<%=(drop.Fields.Item("bygsagsid").Value)%>"><%=(drop.Fields.Item("Bygadres").Value)%></option>
              <%
            drop.MoveNext()


Og så vælger vi det pågældende id's data med SQL fra tabel1 og indsætter i tabel2.
Så skal der bare laves om på upload.asp så vi vælger sådan ca:

strSQL = "SELECT * FROM tabel1 WHERE id = '" &  & "'"


Her er så den nye formside:

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="upload.asp">
            <table align="left">
             
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">BygAdr:</font></strong></td>
                <td> 
               
                <select name="BygAdr" size="1" id="BygAdr">
                  <option value="value">Adresse</option>
                <%
                While (NOT drop.EOF)
                %>
                <option value="<%=(drop.Fields.Item("bygsagsid").Value)%>"><%=(drop.Fields.Item("Bygadres").Value)%></option>
              <%
            drop.MoveNext()
            Wend
            If (drop.CursorType > 0) Then
              drop.MoveFirst
            Else
            drop.Requery
            End If
            %>
            </select> </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">BygTekst:</font></strong></td>
                <td> <input type="text" name="BygTekst" value="" size="32"> </td>
              </tr>
             
              <tr valign="baseline">
                <td nowrap align="right"><strong><font size="-1">Billed:</font></strong></td>
                <td> <input type= FILE size= 30 name="FILE12"> </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">&nbsp;</td>
                <td> <input type="SUBMIT" value="Upload!" name="SUBMIT"> </td>
              </tr>
            </table>
  <p align="left">&nbsp;</p>
</FORM>


Hvad siger du til det?
Avatar billede para7 Nybegynder
01. august 2004 - 13:53 #7
Hov, der mangler lige id'et i sQL sætningen:

strSQL = "SELECT * FROM tabel1 WHERE id = '" & Str_BygsagsID & "'"
Avatar billede jpj3 Nybegynder
01. august 2004 - 21:34 #8
Den kommer med følgende fejl.
Filen nj.jpg er uploaded!
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.
/upload.asp, line 34

Jeg tror at det er her at fejlen ligger.
strSQL = "SELECT * FROM Bygbilled WHERE id = '" & Str_BygsagsID & "'"

Billedet bliver oploadet fint nok, men der kommer intet i db´en.
Avatar billede jpj3 Nybegynder
01. august 2004 - 21:39 #9
Str_BygsagsID mangler på formside.
Den bliver ikke flyttet med over på opload siden.
Avatar billede para7 Nybegynder
01. august 2004 - 23:56 #10
Når sådan noget driller plejer jeg at sætte nogen testværdier ind i value="<%=(drop.Fields.Item("bygsagsid").Value)%>" på formsiden:

<option name="BygsagsID" value="<%=(drop.Fields.Item("bygsagsid").Value)%>"><%=(drop.Fields.Item("Bygadres").Value)%></option>

Fx value="Her er BygsagsID">
Avatar billede para7 Nybegynder
02. august 2004 - 00:05 #11
Nå ja det skal nok være et tal fx value="999"> og opsnappe det på upload siden med en stopklods efter udskrivning af SQL strengen:

set    Str_BygAdr            = Upload.Form("BygAdr")
Set      Str_BygTekst        = Upload.form("BygTekst")
Set      Str_BygsagsID        = Upload.form("BygsagsID")
response.write Str_BygsagsID
response.end

Det kan også være at SQL strengen skal se sådan ud. Det plejer jeg at forsøge mig frem med og så udskrive SQL strengen.

strSQL = "SELECT * FROM Bygbilled WHERE id = " & Str_BygsagsID
response.write strSQL
response.end
Avatar billede para7 Nybegynder
02. august 2004 - 09:06 #12
I stedet for rs.AddNew osv. til at tilføje dataene til tabel2 (eller hvad den hedder), kunne du bruge noget om nok er mere efter bogen:

strSQL = " insert into tabel2 ("
strSQL = strSQL & "BygAdr, "
strSQL = strSQL & "BygTekst, "
strSQL = strSQL & "BygBilled, "
strSQL = strSQL & "BygsagsID "
strSQL = strSQL & ") "
strSQL = strSQL & "values("
strSQL = strSQL & "'" & Str_BygAdr & "',"
strSQL = strSQL & "'" & Str_BygTekst & "',"
strSQL = strSQL & "'" & FileName & "',"
strSQL = strSQL & "'" & Str_BygsagsID & "' "
strSQL = strSQL & ") "
conn.execute(strSQL)

rs.Close
Set rs = Nothing


Jeg håber du får sat det sammen og får det til at virke. Det er ikke så let for mig at teste det her, da jeg så skal lave en database også.
Avatar billede jpj3 Nybegynder
02. august 2004 - 23:30 #13
Jeg har ændret koden til dette.

strSQL = "SELECT * FROM Bygbilled WHERE id = " & Str_BygsagsID &""

strSQL = " insert into Bygbilled ("
strSQL = strSQL & "BygAdres, "
strSQL = strSQL & "BygTekst, "
strSQL = strSQL & "BygBilled, "
strSQL = strSQL & "BygsagsID "
strSQL = strSQL & ") "
strSQL = strSQL & "values("
strSQL = strSQL & "'" & Str_BygAdres & "',"
strSQL = strSQL & "'" & Str_BygTekst & "',"
strSQL = strSQL & "'" & FileName & "',"
strSQL = strSQL & "'" & Str_BygsagsID & "'"
strSQL = strSQL & ") "
conn.execute(strSQL)

rs.Close
Set rs = Nothing

Så kommer den med følgende fejl.

Filen jpj.jpg er uploaded!
Microsoft VBScript runtime error '800a01a8'
Object required: ''
/upload.asp, line 48

Line 48 lyder sådan.
conn.execute(strSQL)
Avatar billede jpj3 Nybegynder
02. august 2004 - 23:32 #14
DB ser såden ud
Tabel Bygbilled

BID    BygsagsID    Bygadres    BygTekst    BygBilled
44    1448        Herlev hovedgade    1448 herlev    banner.jpg

Tabel Bygsag
ByggeID    BygsagsID    Bygadres
1    1448        Herlev hovedgade
Avatar billede para7 Nybegynder
03. august 2004 - 08:40 #15
Jeg ser du har sat strSQL = "SELECT * FROM Bygbilled WHERE id = " & Str_BygsagsID &"" ovenpå der hvor der skal indsættes. Som sagt jeg kan ikke køre nogen koder. Jeg håber jeg kan hjælpe, men har begrænset tid. Jeg har tabt tråden. For jeg troede du ville hente fra Tabel Bygbilled og indsætte i Tabel Bygsag?
Avatar billede para7 Nybegynder
03. august 2004 - 09:37 #16
Jeg har selv haft held med, i sådan en situation, at oprette et helt ny spm med en ny klar opgaveformulering. Så kan det være eagleeye eller andre kanoner kommer forbi og smider en mere eller mindre færdig kode, der kan klare problemet.
Avatar billede jpj3 Nybegynder
03. august 2004 - 12:35 #17
Jeg opretter et nyt spørgsmål.
Tak for  hjælpen intil videre.
Avatar billede para7 Nybegynder
03. august 2004 - 21:03 #18
tnx :)
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