Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:18 Der er 27 kommentarer og
1 løsning

Opdater flere poster giver fejl

Har dette script:
<% Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Home\billeder.sejsgruppe.dk\inc\db\billeder.mdb;"
for each strFld in Request.Form
  ' FIND ALLE FELTER MED MED INDEKS 1 OG HENT UD
  ' FRA DERES ID DE TILHØRENDE FELTER...
  if left(strFld,6) = "felt1_" then
    strID = mid(strFld, 7)
    strFelt1 = Request.Form("felt1_" & strID)
    strFelt2 = Request.Form("felt2_" & strID)
    strFelt3 = Request.Form("felt3_" & strID)
    strFelt4 = Request.Form("felt4_" & strID)
    if Request.Form("felt5_" & strID) = "bestilling_ja" then
    strFelt5 = TRUE
    else
    strFelt5 = FALSE
    end if
    ' OPDATER RÆKKEN I TABELLEN FOR DET ANGIVNE ID
    strSQL = "UPDATE billeder SET " & _
          "  titel='" & strFelt1 & "'" & _
          ", fotograf='" & strFelt2 & "'" & _
          ", ref_kategori='" & strFelt3 & "' " & _
          ", beskrivelse='" & strFelt4 & "' " & _
          ", bestilling='" & strFelt5 & "' " & _
          "WHERE id = " & strID
    conn.execute strSQL
  end if
next
response.redirect "default.asp?side=interne&subside=Billeder" %>

Når det bliver kørt får jeg denne fejl:

Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.

/interne/billeder_eks/billeder_tilfoj_db3.asp, line 25

Line 25 er:    conn.execute strSQL

Lidt hjælp tak...
Avatar billede softspot Forsker
14. november 2005 - 00:22 #1
Er feltet ref_kategori et tekstfelt i databasen? Hvis nej, så skal du have fjernet apostrofferne omkring strFelt3. Men ellers check om felttyperne i databasen alle er sat til tekst (i det mindste dem du opdaterer her).
Avatar billede softspot Forsker
14. november 2005 - 00:23 #2
Alternativt check om der er en værdi i strID i den SQL der fejler...
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:25 #3
ja alle felterne er tekst-felter

Jeg bruger i forvejen scriptet på en anden side hvor det virker perfekt! Forskellen på eksemplet her over og den side det virker på er at den måde jeg kontakter databasen på...

På den anden side gøres det sådan:
set conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.Mappath("inc/db/foto.mdb")
Conn.Open DSN

Men det kan jeg ikke her da det er en database på et andet domæne der skal opdateres
Avatar billede softspot Forsker
14. november 2005 - 00:28 #4
Har du prøvet at bruge den samme connectionstring i den kode der fejler, som den du lige har vist i kommentaren 14/11-2005 00:25:39 (naturligvis med den korrekte sti)?
Avatar billede softspot Forsker
14. november 2005 - 00:29 #5
id er en talkolonne i databasen, ikk'?
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:30 #6
jo er det
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:31 #7
nej har jeg ikke... men som sagt kan jeg heller ikke det da databasen ligger på en anden server...

Siden det fejler på er www.sejsgruppe.dk
mens databasen ligger på http://billeder.sejsgruppe.dk
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:32 #8
ups... ikke en anden server, men et andet domæne derfor er jeg nød til at bruge den relative sti til db'en
Avatar billede softspot Forsker
14. november 2005 - 00:33 #9
Det jeg forsøgte at sige var om du havde prøvet dette:

set conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQF:\Home\billeder.sejsgruppe.dk\inc\db\billeder.mdb;"
Avatar billede softspot Forsker
14. november 2005 - 00:33 #10
Det kunne måske have noget med versionen af databasen eller driveren at gøre...
Avatar billede softspot Forsker
14. november 2005 - 00:34 #11
...og det skulle naturligvis være sådan her:

set conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=F:\Home\billeder.sejsgruppe.dk\inc\db\billeder.mdb;"
Avatar billede softspot Forsker
14. november 2005 - 00:36 #12
relative... mener du ikke absolutte?
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:39 #13
hehe jo mente jeg... :-P ikke sådan når klokken bliver mange!

Jeg har netop prøvet dit forslag, som giver dette resultat:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/interne/billeder_eks/billeder_tilfoj_db3.asp, line 28

28:    conn.execute strSQL
Avatar billede softspot Forsker
14. november 2005 - 00:43 #14
Ja, det må jo siges at være nøjagtig det samme :)

Kan du ikke prøve at udskrive SQL'en hvis koden fejler?

<% Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Home\billeder.sejsgruppe.dk\inc\db\billeder.mdb;"
for each strFld in Request.Form
  ' FIND ALLE FELTER MED MED INDEKS 1 OG HENT UD
  ' FRA DERES ID DE TILHØRENDE FELTER...
  if left(strFld,6) = "felt1_" then
    strID = mid(strFld, 7)
    strFelt1 = Request.Form("felt1_" & strID)
    strFelt2 = Request.Form("felt2_" & strID)
    strFelt3 = Request.Form("felt3_" & strID)
    strFelt4 = Request.Form("felt4_" & strID)
    if Request.Form("felt5_" & strID) = "bestilling_ja" then
    strFelt5 = TRUE
    else
    strFelt5 = FALSE
    end if
    ' OPDATER RÆKKEN I TABELLEN FOR DET ANGIVNE ID
    strSQL = "UPDATE billeder SET " & _
          "  titel='" & strFelt1 & "'" & _
          ", fotograf='" & strFelt2 & "'" & _
          ", ref_kategori='" & strFelt3 & "' " & _
          ", beskrivelse='" & strFelt4 & "' " & _
          ", bestilling='" & strFelt5 & "' " & _
          "WHERE id = " & strID
    on error resume next
    conn.execute strSQL
    if err.number <> 0 then
      response.write strSQL & "<br>"
    end if
    on error goto 0
  end if
next
response.redirect "default.asp?side=interne&subside=Billeder" %>
Avatar billede softspot Forsker
14. november 2005 - 00:44 #15
ups... du skal nok lige lade være med at redirecte til sidst :)
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:46 #16
gav dette:
UPDATE billeder SET titel='test', fotograf='', ref_kategori='3' , beskrivelse='' , bestilling='True' WHERE id = 9
UPDATE billeder SET titel='test', fotograf='', ref_kategori='3' , beskrivelse='' , bestilling='True' WHERE id = 10
UPDATE billeder SET titel='test', fotograf='', ref_kategori='3' , beskrivelse='' , bestilling='True' WHERE id = 11
Avatar billede softspot Forsker
14. november 2005 - 00:48 #17
Tillader du "tomme" strenge (zero length) i alle tekstfelterne?
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:50 #18
ja... nu lavede jeg også denne test lidt hurtigt... men det er ikke anderledes hvis alle felter er udfyldt!
Avatar billede softspot Forsker
14. november 2005 - 00:54 #19
Jeg synes det ser suspekt ud med ref_kategori og bestilling. Jeg ville umiddelbart forvente at det var hhv. tal- og ja/nej-felter... men hvis du siger det er tekst, så må jeg jo tro på det :)

Kan du evt. prøve at vise hvordan tabeldefinitionen ser ud for billeder...?
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:57 #20
igen har jeg sovet lidt i timen... ref_kategori er tekst! men du har ret i at bestilling er et ja/nej felt
Avatar billede softspot Forsker
14. november 2005 - 00:58 #21
Jamen, så er det vel bare sådan her:

    strSQL = "UPDATE billeder SET " & _
          "  titel='" & strFelt1 & "'" & _
          ", fotograf='" & strFelt2 & "'" & _
          ", ref_kategori='" & strFelt3 & "' " & _
          ", beskrivelse='" & strFelt4 & "' " & _
          ", bestilling=" & strFelt5 & " " & _
          "WHERE id = " & strID
Avatar billede sorenmt84 Juniormester
14. november 2005 - 00:58 #22
jeg prøvede lige at slette bestilling fra opdateringen og så virkede det helt perfekt!
Avatar billede softspot Forsker
14. november 2005 - 01:01 #23
En ting vedr. datasikkerhed/-beskyttelse: Er det meningen at folk skal kunne hente din database?

Hvis nej, så vil jeg på det kraftigste anbefale at finder et andet sted til den i.o.m. du lige har offentliggjort, hvor den ligger og man derfor bare kan hente den og kigge som man lyster...
Avatar billede sorenmt84 Juniormester
14. november 2005 - 01:04 #24
okay ja... takker, vil jeg lige gøre! smider du et svar
Avatar billede softspot Forsker
14. november 2005 - 01:05 #25
Jeps! :)
Avatar billede softspot Forsker
14. november 2005 - 01:09 #26
Tak for point :)
Avatar billede sorenmt84 Juniormester
14. november 2005 - 01:10 #27
takker for den hurtige hjælp!
Avatar billede softspot Forsker
14. november 2005 - 01:13 #28
Velbekomme :)
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