Avatar billede timmwillum Nybegynder
17. marts 2011 - 22:19 Der er 6 kommentarer og
1 løsning

RS.update fejler

De herrer (og evt. damer :-))

Jeg får en uforklarlig fejl ved opdatering af en databaserecord med rs.update. Nedenstående kode virker fint, så længe jeg har remmet de to sidste entries ud. Men hvis jeg aktiverer den ene eller begge får jeg fejl. Det er temmelig underligt, da alle felter i formen er ens (input eller textarea) og linjerne i RS.update jo umiddelbart er helt ens. Min kode ser således ud:


    Set RS = Server.CreateObject("ADODB.RecordSet")
    Sql = "SELECT * FROM tblNyheder"
    RS.CursorType = 2
    RS.LockType = 3
    RS.Open Sql, cString
    RS.AddNew

    RS("dato")         = date()
    RS("varighed")        = request("varighed")
    RS("overskrift")    = APO_FULL(request("overskrift"))
    RS("teaser")         = APO_FULL(request("teaser"))
'    RS("nyhed")         = APO_FULL(request("nyhed"))
'    RS("link")         = APO_FULL(request("link"))
   
    RS.Update
    RS.Close
    Set RS = Nothing


Hvis jeg fjerner mine rem får jeg denne fejl:

    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Driver Manager] Invalid string or buffer length

    /admin/nyheder/nyheder-ny.asp, line 33

Det skal lige siges at teaser, nyhed og link alle er af typen "text" i min mySql database.

Nogle gode forslag?
Avatar billede kgkg Nybegynder
17. marts 2011 - 22:51 #1
De to felter som gør at din update fejler, må indeholde ugyldige tegn.

Hvad indeholder de?

Jeg har aldrig brugt rs.update funktionen, bruger altid en SQL sætning med UPDATE og jeg kan heller ikke lige se hvordan du får fat i den rigthge record, da du bruger SELECT * FROM... Men som sagt, så kender jeg ikke update funktionen.
Avatar billede timmwillum Nybegynder
17. marts 2011 - 23:01 #2
Det er input fra en form ... og selv hvis jeg taster et enkelt tegn i hver felt fejler den?

Har også prøvet med en mere ægte SQL update, men der går det helt i ged med mine datofelter, hvor input slet ikke bliver registreret i databasen. Således (har også prøvet med bare date() i den version):

    sql =     "INSERT INTO tblNyheder (overskrift, teaser, nyhed, link, dato, varighed) " & _
            "VALUES (" & _
            "'" & APO_FULL(request("overskrift")) & "', " & _
            "'" & APO_FULL(Request.Form("teaser")) & "', " & _
            "'" & APO_FULL(Request.Form("nyhed")) & "', " & _
            "'" & APO_FULL(Request.Form("link")) & "', " & _
            year(date()) & "-" & month(date()) & "-" & day(date()) & ", " & _
            Request.Form("varighed") & _
            ")"
    response.write "sql: " & sql       
    set conn = CreateObject("ADODB.Connection")
    conn.open cString
    conn.execute sql, , 129
Avatar billede kgkg Nybegynder
18. marts 2011 - 17:48 #3
Hvad er resultatet af linjen: response.write "sql: " & sql

Hvordan er dit dato felt defineret?, er det DataTime field?

Hvad laver  APO_FULL?

Det ser også ud som om at du ikke har ' ' om din dato definition, så start lige med det.
Avatar billede timmwillum Nybegynder
18. marts 2011 - 21:34 #4
Resultat af sql:

sql: INSERT INTO tblNyheder (overskrift, teaser, nyhed, link, dato, varighed) VALUES ('test o', 'test t', 'test n', 'link her', 2011-3-18, 11)

Hvad mener du med det sidste? ... sådan her year("date()")? Det giver fejl ...

APO_FULL er en funktion der fjerner uønskede tegn som fx '%/ etc.
Avatar billede kgkg Nybegynder
18. marts 2011 - 22:11 #5
Resultatet af din SQL, burde se sådan her ud:

Resultat af sql:

sql: INSERT INTO tblNyheder (overskrift, teaser, nyhed, link, dato, varighed) VALUES ('test o', 'test t', 'test n', 'link her', '2011-3-18', 11)

Din dato skal indsættes som om at det er en streng, så den skal være omsluttet af '' tegnene.

Så prøv lige at rette din sql sætning til dette:

sql = "INSERT INTO tblNyheder (overskrift, teaser, nyhed, link, dato, varighed) " & _
  "VALUES (" & _
  "'" & APO_FULL(request("overskrift")) & "', " & _
  "'" & APO_FULL(Request.Form("teaser")) & "', " & _
  "'" & APO_FULL(Request.Form("nyhed")) & "', " & _
  "'" & APO_FULL(Request.Form("link")) & "', '" & _
  year(date()) & "-" & month(date()) & "-" & day(date()) & "', " & _
  Request.Form("varighed") & _
")"
Avatar billede timmwillum Nybegynder
20. marts 2011 - 18:58 #6
Det virker sørme ... boy ... tænk at det bare var det. Synes ellers jeg havde prøvet den løsning, men sådan kan det gå. Her er den endelige kode, hvis nogen skulle kunne bruge det:


    sql =     "INSERT INTO tblNyheder (overskrift, teaser, nyhed, link, dato, varighed) " & _
            "VALUES (" & _
            "'" & APO_FULL(request("overskrift")) & "', " & _
            "'" & APO_FULL(Request.Form("teaser")) & "', " & _
            "'" & APO_FULL(Request.Form("nyhed")) & "', " & _
            "'" & APO_FULL(Request.Form("link")) & "', " & _
            "'" & year(date()) & "-" & month(date()) & "-" & day(date()) & "', " & _
            Request.Form("varighed") & ")"


Tak kgkg ... skriv lige et svar, så sender jeg nogle points din vej.
Avatar billede kgkg Nybegynder
20. marts 2011 - 19:21 #7
Hermed 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

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