Avatar billede rimulu Nybegynder
05. november 2001 - 16:46 Der er 17 kommentarer og
1 løsning

Hvordan updater man en post/id i acces db.....

Jeg har et script der uploader et binary billed + formfelter, det funker også ok. Men nu vil jeg gerne have det til at gemme en bestemt rettet post/id, som så retter det pågældende id. Hvordan gør jeg det ???
Dette script er vist skrevet som en blanding af ASP og VBscript, hvilket jeg ikke har meget forstand på.

Her er scriptet som det ser ud når det skal skrive en ny post ind i access db:

Insert.asp ( Scriptet kan ses i funktion på http://stardeveloper.com:8080/articles/033101-1.shtml ):
-----------------------------------------------------

<!--#include file=\"Loader.asp\"-->
<%
    Response.Buffer = True

    \' load object
    Dim load
        Set load = new Loader
       
        \' calling initialize method
        load.initialize
       
    \' File binary data
    Dim fileData
        fileData = load.getFileData(\"file\")
    \' File name
    Dim fileName
        fileName = LCase(load.getFileName(\"file\"))
    \' File path
    Dim filePath
        filePath = load.getFilePath(\"file\")
    \' File path complete
    Dim filePathComplete
        filePathComplete = load.getFilePathComplete(\"file\")
    \' File size
    Dim fileSize
        fileSize = load.getFileSize(\"file\")
    \' File size translated
    Dim fileSizeTranslated
        fileSizeTranslated = load.getFileSizeTranslated(\"file\")
    \' Content Type
    Dim contentType
        contentType = load.getContentType(\"file\")
    \' No. of Form elements
    Dim countElements
        countElements = load.Count
    \' Value of text input field \"fname\"
    Dim fnameInput
        fnameInput = load.getValue(\"fname\")
    \' Value of text input field \"lname\"
    Dim lnameInput
        lnameInput = load.getValue(\"lname\")
    \' Value of text input field \"profession\"
    Dim profession
        profession = load.getValue(\"profession\")
    \' Value of text input field \"nyhed\"
    Dim nyhed
        nyhed = load.getValue(\"nyhed\")
       
    \' destroying load object
    Set load = Nothing
%>

    <%
        \' Connection string
        Dim connStr
            connStr = \"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\" & Server.MapPath(\"FileDB.mdb\")
       
        \' Recordset object
        Dim rs
            Set rs = Server.CreateObject(\"ADODB.Recordset\")
           
            rs.Open \"Files\", connStr, 2, 2
           
            \' Adding data
            rs.AddNew
                rs(\"File Name\") = fileName
                rs(\"File Size\") = fileSize
                rs(\"File Data\").AppendChunk fileData
                rs(\"Content Type\") = contentType
                rs(\"First Name\") = fnameInput
                rs(\"Last Name\") = lnameInput
                rs(\"Profession\") = profession
                rs(\"nyhed\") = nyhed

            rs.Update
           
            rs.Close
            Set rs = Nothing
           
        If Err.number = 0 Then
            Response.Write \"Indsætning i Database fuldført ...<br>\"
            Else
            Response.Write \"Could not insert into Database. Errors occured ...<br>\"
        End If
    %>
Avatar billede pepsi2 Nybegynder
05. november 2001 - 17:00 #1
SQL = \"Update FileDB Set file name = \'noget\' , file size = \'noget andet\'  Where id = \'1\'
connstr.execute(SQL)
Og sådan kan du så blive ved, men husk at adskille med komma
Avatar billede rimulu Nybegynder
05. november 2001 - 17:20 #2
Tak for dit hurtige svar.....

Siden \"insert.asp\" skal gerne kunne Requeste id fra forgående side se her \"ret_i_data.asp\":

Ret i data.asp
-------------------------------------

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"FileDB.mdb\")
SQLstmt = \"SELECT * FROM files WHERE id = \" & Request(\"id\")

Conn.Execute (SQLstmt)
Set rs = conn.Execute(SQLstmt)
  %>
<form method=\"POST\" action=\"insert.asp?id=<%=rs(\"id\")%>\">

Hvordan gør jeg så...du er nok nød til at skære det lidt ud i pap, da jeg ikke er så stærk i dette ..... :-)
Avatar billede pepsi2 Nybegynder
05. november 2001 - 17:38 #3
Jeg ved ikke om jeg har forstået det rigtigt
Du vil opdatere en tabel hvor id skal svare til det requestede, i den tabel skal der så indsættes data fra en form???

SQL = \"Update TABEL Set file name = \'\" & Request.Form(\"file name\") & \"\' , file size = \'\" & Request.Form(\"File size\") & \"\' Where id = \'\" & Request.Querystring (\"id\") & \"\'\"
connStr.execute(SQL)

Så bytter du TABEL ud med tabellens navn i databasen, og Request.Form med navnet fra html filen

f. eks. <Input type=\"text\" Name=\"File name\"> Bliver til Request.Form(\"file name\")
Avatar billede rimulu Nybegynder
05. november 2001 - 17:42 #4
Korrekt....Men hvordan sætter jeg det sammen med scriptet insert.asp (se øverst på siden)
Avatar billede pepsi2 Nybegynder
05. november 2001 - 17:55 #5
hvad er det i databasen du skal opdatere
Avatar billede rimulu Nybegynder
05. november 2001 - 18:00 #6
Hele rækken ud for et tilfældigt requestet id feks.:

                rs(\"File Name\") = fileName
                rs(\"File Size\") = fileSize
                rs(\"FileData\").AppendChunkfileData
                rs(\"Content Type\") = contentType
                rs(\"First Name\") = fnameInput
                rs(\"Last Name\") = lnameInput
                rs(\"Profession\") = profession
                rs(\"nyhed\") = nyhed
Avatar billede pepsi2 Nybegynder
05. november 2001 - 18:07 #7
\'Vi starter med at lave en forbindelse til databasen
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath (\"FileDB.mdb\")
Conn.Open DSN
strSQL = \"Select * from bruger
Set rs = Conn.Execute(strSql)

\'hvis der er en Querystring så opdaterer vi databasen
select case Request.Querystring (\"id\")
Case \"rs (\"id\")\"
SQL = \"Update TABEL Set file name = \'\" & Request.Form(\"file name\") & \"\' , file size = \'\" & Request.Form(\"File size\") & \"\' Where id = \'\" & Request.Querystring (\"id\") & \"\'\"
conn.execute(SQL)
End Select
Avatar billede rimulu Nybegynder
05. november 2001 - 18:18 #8
  Korrekt....Men hvordan sætter jeg det sammen med scriptet insert.asp (se øverst på siden), det er jo det der er problemet, der skal oxo uploades et nyt billed samtidigt.

Hvad betyder denne feks: rs.Open \"Files\", connStr, 2, 2
Avatar billede pepsi2 Nybegynder
05. november 2001 - 18:27 #9
har vist ikke lige set ordenligt efter, var vist en lidt for hutig løsning

Denne her burde virke, men jeg har ikke tjekket den

------------------Insert.asp-------------------

<!--#include file=\"Loader.asp\"-->
<%
    Response.Buffer = True

    \' load object
    Dim load
        Set load = new Loader
       
        \' calling initialize method
        load.initialize
       
    \' File binary data
    Dim fileData
        fileData = load.getFileData(\"file\")
    \' File name
    Dim fileName
        fileName = LCase(load.getFileName(\"file\"))
    \' File path
    Dim filePath
        filePath = load.getFilePath(\"file\")
    \' File path complete
    Dim filePathComplete
        filePathComplete = load.getFilePathComplete(\"file\")
    \' File size
    Dim fileSize
        fileSize = load.getFileSize(\"file\")
    \' File size translated
    Dim fileSizeTranslated
        fileSizeTranslated = load.getFileSizeTranslated(\"file\")
    \' Content Type
    Dim contentType
        contentType = load.getContentType(\"file\")
    \' No. of Form elements
    Dim countElements
        countElements = load.Count
    \' Value of text input field \"fname\"
    Dim fnameInput
        fnameInput = load.getValue(\"fname\")
    \' Value of text input field \"lname\"
    Dim lnameInput
        lnameInput = load.getValue(\"lname\")
    \' Value of text input field \"profession\"
    Dim profession
        profession = load.getValue(\"profession\")
    \' Value of text input field \"nyhed\"
    Dim nyhed
        nyhed = load.getValue(\"nyhed\")
       
    \' destroying load object
    Set load = Nothing
%>

    <%

Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath (\"FileDB.mdb\")
Conn.Open DSN
strSQL = \"Select ID from Tabel Where ID = \" & Request.Querystring(\"id\")
Set rs = Conn.Execute(strSql)

If rs.EOF Then

Set Conn = Nothing
Set rs = Nothing

        \' Connection string
        Dim connStr
            connStr = \"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\" & Server.MapPath(\"FileDB.mdb\")
       
        \' Recordset object
        Dim rs
            Set rs = Server.CreateObject(\"ADODB.Recordset\")
           
            rs.Open \"Files\", connStr, 2, 2
           
            \' Adding data
            rs.AddNew
                rs(\"File Name\") = fileName
                rs(\"File Size\") = fileSize
                rs(\"File Data\").AppendChunk fileData
                rs(\"Content Type\") = contentType
                rs(\"First Name\") = fnameInput
                rs(\"Last Name\") = lnameInput
                rs(\"Profession\") = profession
                rs(\"nyhed\") = nyhed

            rs.Update
           
            rs.Close
            Set rs = Nothing
           
        If Err.number = 0 Then
            Response.Write \"Indsætning i Database fuldført ...<br>\"
            Else
            Response.Write \"Could not insert into Database. Errors occured ...<br>\"
        End If
Else
SQL = \"Update TABEL Set     file name         = \'\" & fileName & \"\' ,
                                                file size             = \'\" & fileSize & \"\' ,
                                                File Data         = \'\" & .AppendChunk fileData & \'\" ,
                                                content Type     = \'\" & contentType & \"\' ,
                                                First Name         = \'\" & fnameInput & \"\' ,
                                                Last Name         = \'\" & fnameInput & \'\" ,
                                                Profession         = \'\" & profession & \"\' ,
                                                nyhed                = \'\" & nyhed & \'\"  ,  Where id = \'\" & Request.Querystring (\"id\") & \"\'\"
conn.execute(SQL)
Set Conn = Nothing
Set rs = Nothing
    %>
Avatar billede rimulu Nybegynder
05. november 2001 - 18:29 #10
Tjekker lige :-)
Avatar billede pepsi2 Nybegynder
05. november 2001 - 18:34 #11
tabel skal selvfølgelig ændres til det din tabel hedder i databasen
Avatar billede rimulu Nybegynder
05. november 2001 - 19:06 #12
For følgende fejl:
-----------------------------------------------
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0409)
Strengkonstanten er uafsluttet
/test/ret_insert.asp, line 294, column 58
SQL = \"Update files Set file name = \'\" & fileName & \"\' ,
Avatar billede pepsi2 Nybegynder
05. november 2001 - 19:44 #13
SQL = \"Update Files Set file name = \'\" & fileName & \"\',file size = \'\" & fileSize & \"\',File Data = \'\" & .AppendChunk fileData & \"\',content Type = \'\" & contentType & \"\',First Name = \'\" & fnameInput & \"\',Last Name = \'\" & fnameInput & \"\',Profession = \'\" & profession & \"\',nyhed = \'\" & nyhed & \"\' Where id = \'\" & Request.Querystring (\"id\") & \"\'\"
Avatar billede rimulu Nybegynder
05. november 2001 - 19:52 #14
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
/test/ret_insert.asp, line 294, column 116
SQL = \"Update Files Set file name = \'\" & fileName & \"\',file size = \'\" & fileSize & \"\',File Data = \'\" & .AppendChunk fileData & \"\',content Type = \'\" & contentType & \"\',First Name = \'\" & fnameInput & \"\',Last Name = \'\" & fnameInput & \"\',Profession = \'\" & profession & \"\',nyhed = \'\" & nyhed & \"\' Where id = \'\" & Request.Querystring (\"id\") & \"\'\"
Avatar billede pepsi2 Nybegynder
05. november 2001 - 20:05 #15
bare for at se om det virker sø prøv og fjerne: File Data = \'\" & .AppendChunk fileData & \"\', så det sådan her ud

SQL = \"Update Files Set file name = \'\" & fileName & \"\',file size = \'\" & fileSize & \"\',content Type = \'\" & contentType & \"\',First Name = \'\" & fnameInput & \"\',Last Name = \'\" & fnameInput & \"\',Profession = \'\" & profession & \"\',nyhed = \'\" & nyhed & \"\' Where id = \'\" & Request.Querystring (\"id\") & \"\'\"
Avatar billede rimulu Nybegynder
05. november 2001 - 20:42 #16
Den er der næsten .... tror kun det er en småting, er det nemmere hvis jeg sender dig filerne med DB :-)
Avatar billede pepsi2 Nybegynder
05. november 2001 - 20:48 #17
jáz ´det kan du da godt: nico_otto@hotmail.com
Men jeg har den nok først nok færdig imorgen, nu har det her taget så langt tid , at jeg først lige er begyndt på mine lektier nu
Avatar billede rimulu Nybegynder
05. november 2001 - 20:51 #18
Oki du får lige dine points nu som tak for hjælpen og din tid.....
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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