Avatar billede jmc Nybegynder
12. marts 2005 - 21:09 Der er 36 kommentarer og
1 løsning

At afgrænse en søgeSQL med en FORM selection, hvordan gør jeg?

Jeg har en SQL som virker men skal udvide den. Nogle elementer har jeg fundet frem, man kan ikke overskue at sætte det sammen.
Den som vil hjælpe kan få 100 poinst.
Forklaring:
Jeg skal have koblet en FORM på en SQL til at afgrænse søgningen inden for et område.
De tre områder der skal kunne afgrænse søgningen ses nederst i vedlagte CASE.
Det udkommenterede medlemsnr (øverst), skal benyttes til sammen med formen nedenunder:

En del af min SQL:
strSoegSql = "Select * from medlemmer where " &_
    '    "medlemsnr = '%"&strKey&"%' " & "OR " &_
        "Firma LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse LIKE '%"&strKey&"%' " & "OR " &_


FORM:
              <select name="select">
                <option>Alle regioner</option>
                <option value="3">Region nord</option>
                <option value="4">Region syd</option>
                <option value="6">Region &oslash;st</option>
              </select>


Men jeg skal på en eller anden måde tage højde for følgende, hvor CASE ID = det som formen returnere:
                    select case i
                        case 3
                        sql = "SELECT * FROM medlemmer WHERE medlemsnr like '30%'" & sort
                        case 4
                        sql = "SELECT * FROM medlemmer WHERE medlemsnr like '40%' OR  medlemsnr like '50%'" & sort
                        case 6
                        sql = "SELECT * FROM medlemmer WHERE medlemsnr like '60%' OR  medlemsnr like '70%'" & sort
                    end select


Er dette klart nok til at du kan hjælpe eller give et tip?
Avatar billede moejensen Nybegynder
12. marts 2005 - 21:22 #1
skal det hele sammenskrives til en lang SQL eller hvad er det du mener?
Avatar billede jmc Nybegynder
13. marts 2005 - 01:06 #2
Ja,
Man kan vælge iblandt tre options i en selectionbox og dernæst skrive et søgeord ind i et formfield.

søgeord kommer ind i strSoegSql
selectionbox afgrænser søgningen som kan ses i CASE sætningerne

håber du kan hjælpe
Avatar billede moejensen Nybegynder
13. marts 2005 - 09:46 #3
prøv med:

strSoegSql = "SELECT * FROM medlemmer WHERE medlemsnr = '%"&strKey&"%' OR Firma LIKE '%"&strKey&"%' OR Adresse LIKE '%"&strKey&"%' OR

<select name="select">
<option>Alle regioner</option>
<option value="3">Region nord</option>
<option value="4">Region syd</option>
<option value="6">Region &oslash;st</option>
</select>



select case i
  case 3
  strSoegSql = strSoegSql & "medlemsnr like '30%'" & sort
  case 4
  strSoegSql = strSoegSql & "medlemsnr like '40%' OR  medlemsnr like '50%'" & sort
  case 6
  strSoegSql = strSoegSql & "medlemsnr like '60%' OR  medlemsnr like '70%'" & sort
end select
Avatar billede jmc Nybegynder
13. marts 2005 - 13:29 #4
Den melder følgende fejl på denne linie 86 som indholder
rs.Open strSoegSql, conn

fejlen:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/2002/sogning.asp, line 86


Men jeg tror næsten den er der, jeg har flyttet formen til et andet sted.
min kode:
<%

        strKey = request.form("inpSoeg")
       
        strSoegSql = "SELECT * FROM medlemmer WHERE medlemsnr = '%"&strKey&"%' " & "OR " &_
        "Firma LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse2 LIKE '%"&strKey&"%' " & "OR " &_
        "vBy LIKE '%"&strKey&"%' " & "OR " &_
        "Kontakt LIKE '%"&strKey&"%' " & "OR " &_
        "telefon LIKE '%"&strKey&"%' " & "OR " &_
        "email LIKE '%"&strKey&"%' " & "OR " &_
        "fornavn LIKE '%"&strKey&"%' " & "OR " &_
        "efternavn LIKE '%"&strKey&"%' " & "OR " &_
        "foedeaar LIKE '%"&strKey&"%' " & "OR " &_
        "uddannelse LIKE '%"&strKey&"%' " & "OR " &_
        "ansaettelse LIKE '%"&strKey&"%' " & "OR " &_
        "afdeling LIKE '%"&strKey&"%' " & "OR " &_
        "mail LIKE '%"&strKey&"%' " & "OR " &_
        "web LIKE '%"&strKey&"%' " & "OR " &_
        "tlf LIKE '%"&strKey&"%' " & "OR " &_
        "mobil LIKE '%"&strKey&"%' " & "OR " &_
        "fax LIKE '%"&strKey&"%' " %>
<%
select case i
  case 3
  strSoegSql = strSoegSql & "medlemsnr like '30%'" & sort
  case 4
  strSoegSql = strSoegSql & "medlemsnr like '40%' OR  medlemsnr like '50%'" & sort
  case 6
  strSoegSql = strSoegSql & "medlemsnr like '60%' OR  medlemsnr like '70%'" & sort
end select
       
        Set Conn = Server.CreateObject("ADODB.connection")
        Conn.ConnectionString = Application("db_ConnectionString")
        Conn.Open
        set rs = Server.CreateObject("ADODB.recordset")
        rs.Open strSoegSql, conn
        %>

Hvad kan det skyldes, tror du?
(Data type mismatch in criteria expression)?
Avatar billede moejensen Nybegynder
13. marts 2005 - 13:38 #5
prøv lige at skriv din sql streng ud.

marher denne linie ud: rs.Open strSoegSql, conn og skrev en response.write, således

'rs.Open strSoegSql, conn
Response.write strSoegDql
Response.end

Hvad bruger du sort til, så du sætter på i enden, er det en variabel?
Avatar billede jmc Nybegynder
13. marts 2005 - 13:44 #6
Jeg har nu modificeret select case til:

        i = INT(request.form("select"))
       
select case i
  case 1
  strSoegSql = strSoegSql & "medlemsnr like '30%' OR medlemsnr LIKE '40%' OR medlemsnr like '50%' OR medlemsnr like '60%' OR medlemsnr like '70%'" & sort
  case 3
  strSoegSql = strSoegSql & "medlemsnr like '30%'" & sort
  case 4
  strSoegSql = strSoegSql & "medlemsnr like '40%' OR  medlemsnr like '50%'" & sort
  case 6
  strSoegSql = strSoegSql & "medlemsnr like '60%' OR  medlemsnr like '70%'" & sort
end select

og formen til:

  <select name="select">
                <option value="1">Alle regioner</option>
                <option value="3">Region nord</option>
                <option value="4">Region syd</option>
                <option value="6">Region &oslash;st</option>
              </select>


Den fejler med:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse L'.

/sogning.asp, line 91

som er: rs.Open strSoegSql, conn
Avatar billede jmc Nybegynder
13. marts 2005 - 13:47 #7
Min SQL udskrift:

SELECT * FROM medlemmer WHERE Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse LIKE '%hans%' OR ansaettelse LIKE '%hans%' OR afdeling LIKE '%hans%' OR mail LIKE '%hans%' OR web LIKE '%hans%' OR tlf LIKE '%hans%' OR mobil LIKE '%hans%' OR fax LIKE '%hans%' medlemsnr like '30%'
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse L'.

/sogning.asp, line 91
Avatar billede moejensen Nybegynder
13. marts 2005 - 14:02 #8
nu kender jeg ikke lige definitionerne på din database, men hvis et felt i din database er defineret som tal, så skal der ikke ' om udtrykket.

hvis telefon er defineret som tal, så:

  "telefon LIKE %"&strKey&"% " & "OR " &_
Avatar billede jmc Nybegynder
13. marts 2005 - 14:50 #9
Alt er defineret som text så det kan ikke være dette.
Avatar billede moejensen Nybegynder
13. marts 2005 - 14:53 #10
prøv lige det her:

select case i
  case 1
  strSoegSql = strSoegSql & "medlemsnr like '30%' OR medlemsnr LIKE '40%' OR medlemsnr like '50%' OR medlemsnr like '60%' OR medlemsnr like '70%';"
  case 3
  strSoegSql = strSoegSql & "medlemsnr like '30%';"
  case 4
  strSoegSql = strSoegSql & "medlemsnr like '40%' OR  medlemsnr like '50%';"
  case 6
  strSoegSql = strSoegSql & "medlemsnr like '60%' OR  medlemsnr like '70%';"
end select
Avatar billede jmc Nybegynder
13. marts 2005 - 15:43 #11
Den giver stadigt denne feedback?
Men hvorfor stopper response.write sådan .... uddannelse L' ??

SELECT * FROM medlemmer WHERE Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse LIKE '%hans%' OR ansaettelse LIKE '%hans%' OR afdeling LIKE '%hans%' OR mail LIKE '%hans%' OR web LIKE '%hans%' OR tlf LIKE '%hans%' OR mobil LIKE '%hans%' OR fax LIKE '%hans%' medlemsnr like '30%' OR medlemsnr LIKE '40%' OR medlemsnr like '50%' OR medlemsnr like '60%' OR medlemsnr like '70%';
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse L'.

sogning.asp, line 91
Avatar billede jmc Nybegynder
13. marts 2005 - 15:44 #12
Kan det være noget med dette her:
http://support.microsoft.com/default.aspx/kb/223758
The total number of bytes allocated for all product attributes exceeds the maximum number of bytes per row that SQL Server allows
Avatar billede moejensen Nybegynder
13. marts 2005 - 15:52 #13
har du huske at marke din conn.execute ud, og sætte response.end ind efter din response.write.
Avatar billede moejensen Nybegynder
13. marts 2005 - 15:53 #14
jeg tror ikke det har noget med den artikel at gøre.
Avatar billede jmc Nybegynder
13. marts 2005 - 16:06 #15
Jeg er virkeligt taknemligt for den hjælp du kommer med.

Jeg har nu gjort sådan:
        Set Conn = Server.CreateObject("ADODB.connection")
        Conn.ConnectionString = Application("db_ConnectionString")
        Conn.Open
        set rs = Server.CreateObject("ADODB.recordset")
        'rs.Open strSoegSql, conn
        response.Write(strSoegSql)

Nu fejler den på     do until rs.EOF
Men det er vel bare pga. at recordset ikke bliver åbnet.

Stadigt intet held...
SELECT * FROM medlemmer WHERE Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse LIKE '%hans%' OR ansaettelse LIKE '%hans%' OR afdeling LIKE '%hans%' OR mail LIKE '%hans%' OR web LIKE '%hans%' OR tlf LIKE '%hans%' OR mobil LIKE '%hans%' OR fax LIKE '%hans%' medlemsnr like '30%' OR medlemsnr LIKE '40%' OR medlemsnr like '50%' OR medlemsnr like '60%' OR medlemsnr like '70%'; Medlemmer > Søgning > Resultat


ADODB.Recordset error '800a0e78'
Operation is not allowed when the object is closed.
sogning.asp, line 108
Avatar billede moejensen Nybegynder
13. marts 2005 - 16:11 #16
du glemmer stadig response.end. Det gør mig intet at hjælpe dig, men du bliver nød til at læse hvad jeg skriver.
Avatar billede moejensen Nybegynder
13. marts 2005 - 16:15 #17
hvor kommer det her fra i din SQL streng Medlemmer > Søgning > Resultat
Avatar billede jmc Nybegynder
13. marts 2005 - 16:33 #18
Det var bare noget fra min kode jeg var kommet til at paste med i SQLén.
Sorry med respons.end, den er på nu, men den udskriver stadigt følgende.

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse L'.
sogning.asp, line 91
Avatar billede moejensen Nybegynder
13. marts 2005 - 16:37 #19
så er det stadig forkert, for der burde ikke være nogen ODBC derhar fat i din string, når den er market ud.

kan du ikke lige paste din kode ind som den er nu.
Avatar billede jmc Nybegynder
13. marts 2005 - 16:39 #20
<%@LANGUAGE="VBSCRIPT"%>
<!-- #include file="validate.inc" -->
<%
call validateUser()
%>
<html>
<head>
<!-- #include file="stylesheet.asp" -->
<title>Søgning</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000" >
<% if request("action")="" Then%>
<form name="frmSoeg" method="post" action="sogning.asp?action=soeg">
  <table cellpadding="10" border=0>
    <tr>
      <td width="550">
        <p class=sti>Medlemmer > Søgning</p>
      </td>
    </tr>
    <tr>
      <td width="550" valign="top">
        <p> <span class=mellem>Søg medlemmer</span><br>
          <span class=broed>Her kan du lave fritekstsøgning i vores medlemsdatabase.
          indtast det søgeordet i feltet nedenfor og klik herefter på "Søg." </span><br>
          <br>
        <table width="100%" border="0" cellspacing="2" cellpadding="2">
          <tr>
            <td align="center" valign="top" style="border: 1px dotted #ffffff"> <br>
              <input type="text" name="inpSoeg" class="sti" style="color: #2E8959; ">
              <br>
              <select name="select">
                <option value="1">Alle regioner</option>
                <option value="3">Region nord</option>
                <option value="4">Region syd</option>
                <option value="6">Region &oslash;st</option>
              </select> <br>
              <input type="submit" name="Submit" value="Søg" class="sti" style="color: #FFFFFF; border: 1px solid #999999; background-color: #2E8959">
              <br>
              <br>
            </td>
          </tr>
        </table>
        </p>
      </td>
    </tr>
  </table>
</form>
<% elseif request("action")="soeg" then %>
<%

        strKey = request.form("inpSoeg")
       
        strSoegSql = "SELECT * FROM medlemmer WHERE " &_
        "Firma LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse2 LIKE '%"&strKey&"%' " & "OR " &_
        "vBy LIKE '%"&strKey&"%' " & "OR " &_
        "Kontakt LIKE '%"&strKey&"%' " & "OR " &_
        "telefon LIKE '%"&strKey&"%' " & "OR " &_
        "email LIKE '%"&strKey&"%' " & "OR " &_
        "fornavn LIKE '%"&strKey&"%' " & "OR " &_
        "efternavn LIKE '%"&strKey&"%' " & "OR " &_
        "foedeaar LIKE '%"&strKey&"%' " & "OR " &_
        "uddannelse LIKE '%"&strKey&"%' " & "OR " &_
        "ansaettelse LIKE '%"&strKey&"%' " & "OR " &_
        "afdeling LIKE '%"&strKey&"%' " & "OR " &_
        "mail LIKE '%"&strKey&"%' " & "OR " &_
        "web LIKE '%"&strKey&"%' " & "OR " &_
        "tlf LIKE '%"&strKey&"%' " & "OR " &_
        "mobil LIKE '%"&strKey&"%' " & "OR " &_
        "fax LIKE '%"&strKey&"%' "
       
        'response.Write(INT(request.form("select")))
        i = INT(request.form("select"))
       
select case i
  case 1
  strSoegSql = strSoegSql & "medlemsnr like '30%' OR medlemsnr LIKE '40%' OR medlemsnr like '50%' OR medlemsnr like '60%' OR medlemsnr like '70%';"
  case 3
  strSoegSql = strSoegSql & "medlemsnr like '30%';"
  case 4
  strSoegSql = strSoegSql & "medlemsnr like '40%' OR  medlemsnr like '50%';"
  case 6
  strSoegSql = strSoegSql & "medlemsnr like '60%' OR  medlemsnr like '70%';"
end select

        Set Conn = Server.CreateObject("ADODB.connection")
        Conn.ConnectionString = Application("db_ConnectionString")
        Conn.Open
        set rs = Server.CreateObject("ADODB.recordset")
        rs.Open strSoegSql, conn
        response.Write(strSoegSql)
        %>

Noget HTML kommer her

<%
rs.close
Conn.close

%>
<% end if %>
</body>
</html>
Avatar billede moejensen Nybegynder
13. marts 2005 - 16:41 #21
så er det jo klart, du har j ostadig ikke market rs.Open strSoegSql, conn ud, og sat response.end ind
Avatar billede moejensen Nybegynder
13. marts 2005 - 16:48 #22
er medlemsnr en prosentsats? eller mangler der vare en % i casene
Avatar billede jmc Nybegynder
13. marts 2005 - 16:50 #23
Det var bare fordi jeg sidder og fitler lidt frem og tilbage for at prøve nogle forskellige ting, det er stadigt ikke lykkedes mig.

        'rs.Open strSoegSql, conn
        response.Write(strSoegSql)
        response.end
Giver dette:
SELECT * FROM medlemmer WHERE Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse LIKE '%hans%' OR ansaettelse LIKE '%hans%' OR afdeling LIKE '%hans%' OR mail LIKE '%hans%' OR web LIKE '%hans%' OR tlf LIKE '%hans%' OR mobil LIKE '%hans%' OR fax LIKE '%hans%' medlemsnr like '30%' OR medlemsnr LIKE '40%' OR medlemsnr like '50%' OR medlemsnr like '60%' OR medlemsnr like '70%';

og
        rs.Open strSoegSql, conn
        response.Write(strSoegSql)
        response.end

giver følgende:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse L'.

sogning.asp, line 91

Den øvrige kode er 100% som ovenover, det du har modtaget.
Avatar billede moejensen Nybegynder
13. marts 2005 - 16:51 #24
prøv det her:

<%@LANGUAGE="VBSCRIPT"%>
<html>
<head>
<title>Søgning</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000" >
<% if request("action")="" Then%>
<form name="frmSoeg" method="post" action="sogning.asp?action=soeg">
  <table cellpadding="10" border=0>
    <tr>
      <td width="550">
        <p class=sti>Medlemmer > Søgning</p>
      </td>
    </tr>
    <tr>
      <td width="550" valign="top">
        <p> <span class=mellem>Søg medlemmer</span><br>
          <span class=broed>Her kan du lave fritekstsøgning i vores medlemsdatabase.
          indtast det søgeordet i feltet nedenfor og klik herefter på "Søg." </span><br>
          <br>
        <table width="100%" border="0" cellspacing="2" cellpadding="2">
          <tr>
            <td align="center" valign="top" style="border: 1px dotted #ffffff"> <br>
              <input type="text" name="inpSoeg" class="sti" style="color: #2E8959; ">
              <br>
              <select name="select">
                <option value="1">Alle regioner</option>
                <option value="3">Region nord</option>
                <option value="4">Region syd</option>
                <option value="6">Region &oslash;st</option>
              </select> <br>
              <input type="submit" name="Submit" value="Søg" class="sti" style="color: #FFFFFF; border: 1px solid #999999; background-color: #2E8959">
              <br>
              <br>
            </td>
          </tr>
        </table>
        </p>
      </td>
    </tr>
  </table>
</form>
<% elseif request("action")="soeg" then %>
<%

        strKey = request.form("inpSoeg")
       
        strSoegSql = "SELECT * FROM medlemmer WHERE " &_
        "Firma LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse2 LIKE '%"&strKey&"%' " & "OR " &_
        "vBy LIKE '%"&strKey&"%' " & "OR " &_
        "Kontakt LIKE '%"&strKey&"%' " & "OR " &_
        "telefon LIKE '%"&strKey&"%' " & "OR " &_
        "email LIKE '%"&strKey&"%' " & "OR " &_
        "fornavn LIKE '%"&strKey&"%' " & "OR " &_
        "efternavn LIKE '%"&strKey&"%' " & "OR " &_
        "foedeaar LIKE '%"&strKey&"%' " & "OR " &_
        "uddannelse LIKE '%"&strKey&"%' " & "OR " &_
        "ansaettelse LIKE '%"&strKey&"%' " & "OR " &_
        "afdeling LIKE '%"&strKey&"%' " & "OR " &_
        "mail LIKE '%"&strKey&"%' " & "OR " &_
        "web LIKE '%"&strKey&"%' " & "OR " &_
        "tlf LIKE '%"&strKey&"%' " & "OR " &_
        "mobil LIKE '%"&strKey&"%' " & "OR " &_
        "fax LIKE '%"&strKey&"%' "
       
        'response.Write(INT(request.form("select")))
        i = INT(request.form("select"))
       
select case i
  case 1
  strSoegSql = strSoegSql & "medlemsnr like '%30%' OR medlemsnr LIKE '%40%' OR medlemsnr like '%50%' OR medlemsnr like '%60%' OR medlemsnr like '%70%';"
  case 3
  strSoegSql = strSoegSql & "medlemsnr like '%30%';"
  case 4
  strSoegSql = strSoegSql & "medlemsnr like '%40%' OR  medlemsnr like '%50%';"
  case 6
  strSoegSql = strSoegSql & "medlemsnr like '%60%' OR  medlemsnr like '%70%';"
end select

        Set Conn = Server.CreateObject("ADODB.connection")
        Conn.ConnectionString = Application("db_ConnectionString")
        Conn.Open
        set rs = Server.CreateObject("ADODB.recordset")
        rs.Open strSoegSql, conn
        %>

Noget HTML kommer her

<%
rs.close
Conn.close

%>
<% end if %>
</body>
</html>
Avatar billede jmc Nybegynder
13. marts 2005 - 16:55 #25
Det giver:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Firma LIKE '%hans%' OR Adresse LIKE '%hans%' OR Adresse2 LIKE '%hans%' OR vBy LIKE '%hans%' OR Kontakt LIKE '%hans%' OR telefon LIKE '%hans%' OR email LIKE '%hans%' OR fornavn LIKE '%hans%' OR efternavn LIKE '%hans%' OR foedeaar LIKE '%hans%' OR uddannelse L'.

sogning.asp, line 87

hvor 87 er:      rs.Open strSoegSql, conn
Avatar billede moejensen Nybegynder
13. marts 2005 - 17:01 #26
fandt lige et par småfejl mere. Prøv det her:

<%@LANGUAGE="VBSCRIPT"%>
<html>
<head>
<title>Søgning</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000" >
<% if request("action")="" Then%>
<form name="frmSoeg" method="post" action="sogning.asp?action=soeg">
  <table cellpadding="10" border=0>
    <tr>
      <td width="550">
        <p class=sti>Medlemmer > Søgning</p>
      </td>
    </tr>
    <tr>
      <td width="550" valign="top">
        <p> <span class=mellem>Søg medlemmer</span><br>
          <span class=broed>Her kan du lave fritekstsøgning i vores medlemsdatabase.
          indtast det søgeordet i feltet nedenfor og klik herefter på "Søg." </span><br>
          <br>
        <table width="100%" border="0" cellspacing="2" cellpadding="2">
          <tr>
            <td align="center" valign="top" style="border: 1px dotted #ffffff"> <br>
              <input type="text" name="inpSoeg" class="sti" style="color: #2E8959; ">
              <br>
              <select name="select">
                <option value="1">Alle regioner</option>
                <option value="3">Region nord</option>
                <option value="4">Region syd</option>
                <option value="6">Region &oslash;st</option>
              </select> <br>
              <input type="submit" name="Submit" value="Søg" class="sti" style="color: #FFFFFF; border: 1px solid #999999; background-color: #2E8959">
              <br>
              <br>
            </td>
          </tr>
        </table>
        </p>
      </td>
    </tr>
  </table>
</form>
<% elseif request("action")="soeg" then %>
<%

        strKey = request.form("inpSoeg")
       
        strSoegSql = "SELECT * FROM medlemmer WHERE " &_
        "Firma LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse LIKE '%"&strKey&"%' " & "OR " &_
        "Adresse2 LIKE '%"&strKey&"%' " & "OR " &_
        "vBy LIKE '%"&strKey&"%' " & "OR " &_
        "Kontakt LIKE '%"&strKey&"%' " & "OR " &_
        "telefon LIKE '%"&strKey&"%' " & "OR " &_
        "email LIKE '%"&strKey&"%' " & "OR " &_
        "fornavn LIKE '%"&strKey&"%' " & "OR " &_
        "efternavn LIKE '%"&strKey&"%' " & "OR " &_
        "foedeaar LIKE '%"&strKey&"%' " & "OR " &_
        "uddannelse LIKE '%"&strKey&"%' " & "OR " &_
        "ansaettelse LIKE '%"&strKey&"%' " & "OR " &_
        "afdeling LIKE '%"&strKey&"%' " & "OR " &_
        "mail LIKE '%"&strKey&"%' " & "OR " &_
        "web LIKE '%"&strKey&"%' " & "OR " &_
        "tlf LIKE '%"&strKey&"%' " & "OR " &_
        "mobil LIKE '%"&strKey&"%' " & "OR " &_
        "fax LIKE '%"&strKey&"%' "
       
        'response.Write(INT(request.form("select")))
        i = INT(request.form("select"))
       
select case i
  case 1
  strSoegSql = strSoegSql & "OR medlemsnr like '30%' OR medlemsnr LIKE '40%' OR medlemsnr like '50%' OR medlemsnr like '60%' OR medlemsnr like '70%';"
  case 3
  strSoegSql = strSoegSql & "OR medlemsnr like '30%';"
  case 4
  strSoegSql = strSoegSql & "OR medlemsnr like '40%' OR  medlemsnr like '50%';"
  case 6
  strSoegSql = strSoegSql & "OR medlemsnr like '60%' OR  medlemsnr like '70%';"
end select

        Set Conn = Server.CreateObject("ADODB.connection")
        Conn.ConnectionString = Application("db_ConnectionString")
        Conn.Open
        set rs = Server.CreateObject("ADODB.recordset")
        rs.Open strSoegSql, conn
        %>

Noget HTML kommer her

<%
rs.close
Conn.close

%>
<% end if %>
</body>
</html>

ellers kan du ikke sende mig din base på mrblade at ofir.dk, så er det lidt nemmere for mig at teste det.
Avatar billede jmc Nybegynder
13. marts 2005 - 17:05 #27
bingo, nu er der huld igennem. Det ser dog bare ud til at den finder alt. Men det er da en start. Tak for hjælpen ;o)
Avatar billede moejensen Nybegynder
13. marts 2005 - 17:08 #28
det var så lidt - tak for point.
Avatar billede jmc Nybegynder
13. marts 2005 - 17:10 #29
Det er nok noget med at CASE skal være AND

  strSoegSql = strSoegSql & "AND medlemsnr like '30%' OR medlemsnr LIKE '40%' OR medlemsnr like '50%' OR medlemsnr like '60%' OR medlemsnr like '70%';"
  case 3
  strSoegSql = strSoegSql & "AND medlemsnr like '30%';"
  case 4
  strSoegSql = strSoegSql & "AND medlemsnr like '40%' OR  medlemsnr like '50%';"
  case 6
  strSoegSql = strSoegSql & "AND medlemsnr like '60%' OR  medlemsnr like '70%';"
end select

men selv dette er ikke nok da jeg kun vil vise dem som findes under et nummer. Ligenu er det bare 60 eller 70 findes i medlemsnummer, så er den ligeglad med søgeordet.

Det er vel noget med en SQL i en SQL men jeg vil lade dig være i fred nu. ;o)
Avatar billede moejensen Nybegynder
13. marts 2005 - 17:18 #30
Du har nok ret i at det skal være AND, nu ved jeg ikke hvordan du har bygget dine medlemsnumre op, men når du bruger %% får du alle forkomster hvor det optræder i feltet. hvis det altid er enten 30, 40, 50, 60 eller 70, så kan du bare skrive:

strSoegSql = strSoegSql & "AND medlemsnr = '40' OR medlemsnr = 50;"

Du skal nok overveje at konvertere medlemsnr til et tal, hvid det kun indeholder 30, 40, 50 osv, så skal du bare fjerne ' om tallet i SQL strengen.
Avatar billede jmc Nybegynder
13. marts 2005 - 17:42 #31
Det bliver vist lidt vanskeligt det her, da det er 5 cifrer og undtagelsen skal gælde de første to cifre som indikere hvilken regioen medlemmet kommer fra.

jeg prøved noget men det gik ikke

    case 1
  strSoegSql = strSoegSql & "AND medlemsnr like '30%' AND medlemsnr LIKE '40%' AND medlemsnr like '50%' AND medlemsnr like '60%' AND medlemsnr like '70%';"
  case 3
  strSoegSql = strSoegSql & "AND medlemsnr NOT like '40%' AND medlemsnr NOT like '50%' AND medlemsnr NOT like '60%' AND medlemsnr NOT like '70%';"
  case 4
  strSoegSql = strSoegSql & "AND medlemsnr NOT like '30%' AND medlemsnr NOT like '60%' AND medlemsnr NOT like '70%';"
  case 6
  strSoegSql = strSoegSql & "AND medlemsnr NOT like '30%' AND medlemsnr NOT like '40%' AND medlemsnr NOT like '50%';"
end select
Avatar billede moejensen Nybegynder
13. marts 2005 - 17:51 #32
du har jo også fat i noget gammel kode, du må snart lære det. Du mangler % foran alle tallene.
Avatar billede moejensen Nybegynder
13. marts 2005 - 17:55 #33
du kan evt gøre sådan her:

strSoegSql = strSoegSql & "AND SUBSTRING(medlemsnr,2) = 40 OR  SUBSTRIN(medlemsnr,2) = 50 ;"

SUBSTRING ser på x antal karakter i et felt, i dette tilfælde de to første
Avatar billede jmc Nybegynder
13. marts 2005 - 20:18 #34
Den siger så:
[Microsoft][ODBC Microsoft Access Driver] Undefined function 'SUBSTRING' in expression.

Kan en SQl regne ud af hvis man skrive or1...or2...or3...or4...and...or
at det skal være bare én af de første or men efter AND skal en af dem være indholdt.
Bliver det sidste or ikke bare på lige vilkår som de andre.
i virkeligheden burde det være (or1...or2...or3...or4...) and (a or b)
det første går på søgestrengen og det sidste på medlemsnummeret som giver lokation.

Når, med her er hvad jeg har prøve som giver fejlen ovenover.

  case 1
  strSoegSql = strSoegSql & "AND SUBSTRING(medlemsnr,2) = '30' OR  SUBSTRING(medlemsnr,2) = '40' OR  SUBSTRING(medlemsnr,2) = '50' OR  SUBSTRING(medlemsnr,2) = '60' OR  SUBSTRING(medlemsnr,2) = '70' ;"
case 3
  strSoegSql = strSoegSql & "AND SUBSTRING(medlemsnr,2) = '60' ;"
case 4
  strSoegSql = strSoegSql & "AND SUBSTRING(medlemsnr,2) = '40' OR  SUBSTRING(medlemsnr,2) = '50' ;"
case 6
strSoegSql = strSoegSql & "AND SUBSTRING(medlemsnr,2) = '60' OR  SUBSTRING(medlemsnr,2) = '70' ;"
end select
Avatar billede moejensen Nybegynder
13. marts 2005 - 20:24 #35
ohh sorry det virker kun i mySQL, min fejl
Avatar billede jmc Nybegynder
13. marts 2005 - 20:27 #36
ok ;o)
Avatar billede jmc Nybegynder
13. marts 2005 - 20:35 #37
jeg fortsætter her hvis du er frisk:o)
http://www.eksperten.dk/spm/599820
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