Avatar billede ossian Nybegynder
08. september 2003 - 00:07 Der er 26 kommentarer og
1 løsning

Microsoft JET Database Engine (0x80040E21)

Får følgende fejl:

Microsoft JET Database Engine (0x80040E21)
Der kan ikke medtages et felt af typen Memo, OLE eller Hyperlink Object, når du markerer de unikke værdier (boger.productName).
/lkb/wwwroot/bogladen/searchAction.asp, line 132

Her er et udsnit af min kode:

    <%

chkText = Request.form("chkText")
    strText = cstr(Request.form("strText"))
    strText = uCase(strText)
    chkCat = Request.form("chkCat")
    strCat = Request.form("strCat")

    strTextWhere = ""
    strCatWhere = ""

    if chkText = "yes" then
        strTextWhere = " and (uCase(productName) like '%"&strText&"%'"
        strTextWhere = strTextWhere & " or uCase(productDesc) like '%"_
            & strText & "%')"   
    end if

   
    if chkCat = "yes" then
        strCatWhere = " and boger.catalogID = '" &strCat&"'"
    end if

    set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open ConString

    sqlText = "select distinct(boger.productID), "
    sqlText = sqlText & "boger.productName "
    sqlText = sqlText & "from boger "
    sqlText = sqlText & "where boger.productID = "
    sqlText = sqlText & "boger.productID"
    sqlText = sqlText & strTextWhere &  strCatWhere
%>       
            <%
(linie 132):    set rsProd = Conn.Execute(sqlText)
       
        If rsProd.BOF And rsProd.EOF Then
            Response.Write "<font face='Verdana' size='2'><strong>"
            Response.Write "No items found, please narrow your <a href='search.asp'>search.</a></b>"
        end if
   
    while not rsProd.EOF
    %>
      <a href="product.asp?intProdID=<% Response.Write rsProd("productID") %>">
      <%= rsProd("productName") %> </a><br>
      <%       
rsProd.MoveNext
wend   
rsProd.Close
set rsProd = Nothing
   
Conn.Close
set Conn = Nothing
%>
Avatar billede ocp Nybegynder
08. september 2003 - 00:11 #1
Man kan da ikke sætte et enkelt felt som distinct og have resten uden - hvilke af de efterfølgende felter skal så vises?
Avatar billede ocp Nybegynder
08. september 2003 - 00:12 #2
sqlText = "select distinct boger.productID, "
    sqlText = sqlText & "boger.productName "
    sqlText = sqlText & "from boger "
    sqlText = sqlText & "where boger.productID = "
    sqlText = sqlText & "boger.productID"
    sqlText = sqlText & strTextWhere &  strCatWhere
Avatar billede ossian Nybegynder
08. september 2003 - 00:13 #3
hmm, fandt ud af fejlen.. værdien productName stod til memo og ikke tekst.. nu får jeg dog følgende fejl:

Microsoft JET Database Engine (0x80040E07)
Datatyperne stemmer ikke overens i kriterieudtrykket.
/lkb/wwwroot/bogladen/searchAction.asp, line 132
Avatar billede ocp Nybegynder
08. september 2003 - 00:16 #4
Kan du ikke lige response.write din sql-streng? Så kan jeg se hvad der er galt.

Det er iøvrigt noget vrøvl du skriver:

boger.productID = boger.productID ???
Avatar billede ossian Nybegynder
08. september 2003 - 00:16 #5
ok..jeg prøver :-)
Avatar billede ossian Nybegynder
08. september 2003 - 00:17 #6
øv..får stadig samme fejl..er du frisk på at hjælpe lidt mere?
Avatar billede ocp Nybegynder
08. september 2003 - 00:18 #7
Ja da... jeg vil, som sagt, meget gerne se din SQL-streng før den bliver kørt.
Avatar billede ossian Nybegynder
08. september 2003 - 00:18 #8
hvordan response.writer jeg den når jeg får fejl??
Avatar billede ocp Nybegynder
08. september 2003 - 00:19 #9
Så lav lige response.write(sqlText) lige over linie 132 (131 f.eks. ;) )
Avatar billede ocp Nybegynder
08. september 2003 - 00:19 #10
Før du får fejl - så bliver den nemlig skrevet ud.
Avatar billede ossian Nybegynder
08. september 2003 - 00:21 #11
får denne fejl: Datatyperne stemmer ikke overens i kriterieudtrykket.

så kan ikke se sqlText :-(
Avatar billede ocp Nybegynder
08. september 2003 - 00:23 #12
Så sæt lige en response.end lige under din response write.
Avatar billede ossian Nybegynder
08. september 2003 - 00:24 #13
her er sql'en: select distinct boger.productID, boger.productName from boger where boger.productID = boger.productID and boger.catalogID = '1'
Avatar billede ocp Nybegynder
08. september 2003 - 00:25 #14
ahhh, endelig. Fjern først "boger.productID = boger.productID" - det er noget vrøvl.
Prøv derefter at fjerne '' omkring 1-tallet.
Avatar billede ocp Nybegynder
08. september 2003 - 00:27 #15
Problemet kan selvfølgelig også være at man formodentlig ikke kan lave distinct på et memo-felt (hvis altså productname er den type?)
Avatar billede ossian Nybegynder
08. september 2003 - 00:28 #16
Ok..jeg har fjernet:

sqlText = sqlText & "where boger.productID = "
sqlText = sqlText & "boger.productID"

og får nu denne fejl: Der er en syntaksfejl i FROM-delsætningen.

Og hvordan fjerner jeg ''?
Avatar billede ossian Nybegynder
08. september 2003 - 00:30 #17
min sql ser iøvrigt sådan her ud nu:
select distinct boger.productID, boger.productName from boger and boger.catalogID = '1'
Avatar billede ossian Nybegynder
08. september 2003 - 00:30 #18
det lyder ikke helt rigtigt :-/
Avatar billede ocp Nybegynder
08. september 2003 - 00:31 #19
Du skal ikke fjerne "WHERE" - det skal stadig være der.

'' har jeg fjernet her:

if chkCat = "yes" then
        strCatWhere = " boger.catalogID = " & strCat
end if

Jeg har også fjernet "and" ellers vil din query ikke virke - vi propper den på når resten virker.
Avatar billede ossian Nybegynder
08. september 2003 - 00:33 #20
hvordan skal denne sætning så se ud:

sqlText = sqlText & "where boger.productID = "
sqlText = sqlText & "boger.productID"

??

:-)
Avatar billede ocp Nybegynder
08. september 2003 - 00:38 #21
Jamen - den skal slet ikke være der. Den har ingen som helst funktion. Jeg har rettet din kode til:

if chkText = "yes" then
        strTextWhere = " and (uCase(productName) like '%"&strText&"%'"
        strTextWhere = strTextWhere & " or uCase(productDesc) like '%"_
            & strText & "%')"   
    end if

   
    if chkCat = "yes" then
        strCatWhere = " boger.catalogID = '" &strCat&"'"
    end if

    set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open ConString

    sqlText = "select distinct(boger.productID), "
    sqlText = sqlText & "boger.productName "
    sqlText = sqlText & "from boger "
    sqlText = sqlText & "where "
    if len(strTextWhere) > 0 then
      sqlText = sqlText & strTextWhere
    end if
    if len(strCatWhere) > 0 then
      if len(strTextWhere) > 0 then
        sqlText = sqlText & " and "
      end if
      sqlText = sqlText & strCatWhere
    end if
Avatar billede ocp Nybegynder
08. september 2003 - 00:39 #22
PS: Det gør altså heller ingen skade at "boger.productID = boger.productID" står der...
Avatar billede ossian Nybegynder
08. september 2003 - 00:41 #23
tak :-) får dog denne fejl:

Datatyperne stemmer ikke overens i kriterieudtrykket.

sql:

select distinct(boger.productID), boger.productName from boger where boger.catalogID = '1' - tror måske det er noget med db'en!?!?
Avatar billede ocp Nybegynder
08. september 2003 - 00:42 #24
Nej - jeg er en ånd. Jeg saksed lidt rigeligt fra dit spørgsmål. Vi prøver igen:

if chkText = "yes" then
        strTextWhere = " and (uCase(productName) like '%"&strText&"%'"
        strTextWhere = strTextWhere & " or uCase(productDesc) like '%"_
            & strText & "%')"   
    end if

   
    if chkCat = "yes" then
        strCatWhere = " boger.catalogID = " & strCat
    end if

    set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open ConString

    sqlText = "select distinct boger.productID, "
    sqlText = sqlText & "boger.productName "
    sqlText = sqlText & "from boger "
    sqlText = sqlText & "where "
    if len(strTextWhere) > 0 then
      sqlText = sqlText & strTextWhere
    end if
    if len(strCatWhere) > 0 then
      if len(strTextWhere) > 0 then
        sqlText = sqlText & " and "
      end if
      sqlText = sqlText & strCatWhere
    end if


SÅDAN!
Avatar billede ossian Nybegynder
08. september 2003 - 00:45 #25
taaaaak :-)

det virkede sgu!!! fedt at du gad blive ved! Det er bestemt værdsat..
Avatar billede ocp Nybegynder
08. september 2003 - 00:47 #26
Selvfølgelig... når man har sagt "A" må man også sige "B" ;)
Avatar billede ossian Nybegynder
08. september 2003 - 00:48 #27
hehe..dog er der et "lille" problem til..jeg opretter et nyt spørgsmål så der er flere point i luften...
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