|
| Fritekstsøgning i Acces notatfelt, ikke mu~ Fra : Jakob Munck |
Dato : 06-12-04 19:18 |
|
Jeg har en site med tekster. Den bruger Access.mdb og jeg har lavet en
søgefunktion, som virker udmærket. Den ser sådan ud:
<%
......
soegeord = Trim(Request.form("soegeord"))
SQL = "SELECT TOP 20 * FROM tbTekster WHERE"
SQL = SQL & " ((skribent_fornavn LIKE '%" & soegeord & "%')"
SQL = SQL & " OR (skribent_efternavn LIKE '%" & soegeord & "%')"
SQL = SQL & " OR (overskrift LIKE '%" & soegeord & "%')"
SQL = SQL & " OR (tekst_id LIKE '%" & soegeord & "%')) ORDER BY tekst_id
DESC"
....
%>
Problemet er bare, at jeg kun kan søge i felter i Access.mdb, når disse er
formatteret som "Tekst" og ikke når de hedder "Notat". Da netop den sidste
form for formattering er nødvendig for at kunne indeholde store
tekstmængder, som siten har en del af, så er det et problem.
Kan det virkelig ikke lade sig gøre at søge på Notat-feltet i Access.mdb?
Skal koden laves på en anden måde, hvis det skal lade sig gøre?
v.h.
Jakob Munck
| |
Peter Lykkegaard (07-12-2004)
| Kommentar Fra : Peter Lykkegaard |
Dato : 07-12-04 09:57 |
| | |
Jakob Munck (07-12-2004)
| Kommentar Fra : Jakob Munck |
Dato : 07-12-04 11:18 |
|
Tak for linket, men det hjælper desværre ikke meget, for selv om forfatten
måske hævder (?) at man kan søge i et Access Notat-felt med SQL-koden:
SQL = "SELECT TOP 20 * FROM tbTekster WHERE tekst LIKE '%" & soegeord & "%'
ORDER BY tekst_id
Så kan det rent faktisk ikke lade sig gøre. Ikke for mig i hvert fald. Man
får ikke en fejlmedling, så koden er ikke forkert i sig selv, men man finder
bare ingen resultater, uanset hvad man søger på.
Er det en svaghed i Access.mdb, eller findes der en vej til at løse det?
v.h.
Jakob Munck
PS. Måske bør jeg spørge i et andet forum??
| |
Peter Lykkegaard (07-12-2004)
| Kommentar Fra : Peter Lykkegaard |
Dato : 07-12-04 11:40 |
|
"Jakob Munck" wrote
> Tak for linket, men det hjælper desværre ikke meget, for selv om forfatten
> måske hævder (?) at man kan søge i et Access Notat-felt med SQL-koden:
>
> SQL = "SELECT TOP 20 * FROM tbTekster WHERE tekst LIKE '%" & soegeord &
> "%' ORDER BY tekst_id
>
> Så kan det rent faktisk ikke lade sig gøre. Ikke for mig i hvert fald. Man
> får ikke en fejlmedling, så koden er ikke forkert i sig selv, men man
> finder bare ingen resultater, uanset hvad man søger på.
>
Hmm har du mulighed for at prøve det direkte i Access
> Er det en svaghed i Access.mdb, eller findes der en vej til at løse det?
>
Hvilken connection bruger - odbc eller oledb
Prøv at smide din connection streng efter os
Du undlader selvfølgelig sti, usr og pwd
> PS. Måske bør jeg spørge i et andet forum??
Evt dk.edb.database.ms-access
- Peter
| |
Jakob Munck (07-12-2004)
| Kommentar Fra : Jakob Munck |
Dato : 07-12-04 12:16 |
|
>>
> Hmm har du mulighed for at prøve det direkte i Access
>
ja, jeg tester det på min egen asp-site, som bruger Access. Jeg ved ikke om
man kan teste det mere "direkte i Access" end dette...?
>>
> Hvilken connection bruger - odbc eller oledb
> Prøv at smide din connection streng efter os
> Du undlader selvfølgelig sti, usr og pwd
>
Denne, som ellers virker fint overalt:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath("../db/ansgar.mdb")
v.h.
Jakob
| |
JH (07-12-2004)
| Kommentar Fra : JH |
Dato : 07-12-04 12:27 |
|
Jakob Munck wrote:
> ja, jeg tester det på min egen asp-site, som bruger Access. Jeg ved ikke om
> man kan teste det mere "direkte i Access" end dette...?
Prøv at åbne databasen med Access og lav en ny forespørgsel, hvor du
paste'r din SQL ind:
SELECT TOP 20 * FROM tbTekster WHERE tekst LIKE '%ET_ORD%' ORDER BY tekst_id
Hvad er resultatet?
--
Mvh
Jeppe
We have unmistakable proof that throughout all past time, there has been
a ceaseless devouring of the weak by the strong.
| |
Jakob Munck (07-12-2004)
| Kommentar Fra : Jakob Munck |
Dato : 07-12-04 14:03 |
|
>
> Prøv at åbne databasen med Access og lav en ny forespørgsel, hvor du
> paste'r din SQL ind:
>
Det ved jeg desværre ikke, hvordan man gør. Jeg har forsøgt at læse den
indbyggede brugsvejledning, men til ingen nytte. Nu har jeg så spurgt i en
Access NG, men - indtil videre - uden resultat.
v.h.
Jakob
| |
Peter Lykkegaard (07-12-2004)
| Kommentar Fra : Peter Lykkegaard |
Dato : 07-12-04 14:49 |
|
"Jakob Munck" wrote
> Det ved jeg desværre ikke, hvordan man gør. Jeg har forsøgt at læse den
> indbyggede brugsvejledning, men til ingen nytte. Nu har jeg så spurgt i en
> Access NG, men - indtil videre - uden resultat.
>
Kunne tyde på at der er tale om en begrænsning i de drivere du bruger
Ved du hvilken Jet Engine der er installeret på websereren?
Jeg har lige testet problemstillingen direkte i Access 2003 og her virker
den foreslåede løsning mht søgning i et Memo/Notat felt fint
- Peter
| |
Jakob Munck (07-12-2004)
| Kommentar Fra : Jakob Munck |
Dato : 07-12-04 15:24 |
|
Min server er MS IIS5.1. Den bruger det software som installeres default,
når serveren sættes op. Hvilken "Jet Engine" det drejer sig om, ved jeg
ikke. Men det er interessant, at du kan få det til at virke med Access 2003,
altså når du søger med SQL direkte i databasen.
Men hvilken server foregår det på?
Kunne du give en kort forklaring på hvor i Access-menuerne man indsætter
SQL-koden?
v.h.
Jakob
| |
Jakob Munck (07-12-2004)
| Kommentar Fra : Jakob Munck |
Dato : 07-12-04 15:34 |
|
jeg har læst dit svar i Access-gruppen. Tak for det.
v.h.
Jakob
| |
Peter Lykkegaard (07-12-2004)
| Kommentar Fra : Peter Lykkegaard |
Dato : 07-12-04 16:15 |
|
"Jakob Munck" wrote
> Min server er MS IIS5.1. Den bruger det software som installeres default,
> når serveren sættes op. Hvilken "Jet Engine" det drejer sig om, ved jeg
> ikke.
Jet Engine er de komponenter du bruger for få adgang til din databasefil
Jeg går ud fra at det er en windows 2000 server?
Er den patched op med alle SP's etc?
Prøv evt at skifte din connection ud med noget ala
strconn="PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="
strconn=strconn & server.mappath(accessDB) & ";"
'strconn=strconn & "Password=whatever;"
> Men det er interessant, at du kan få det til at virke med Access 2003,
> altså når du søger med SQL direkte i databasen.
>
> Men hvilken server foregår det på?
>
XP SP2 (desktop)
> Kunne du give en kort forklaring på hvor i Access-menuerne man indsætter
> SQL-koden?
>
Se svar i dk.edb.database.ms-access
- Peter
| |
Jakob Munck (07-12-2004)
| Kommentar Fra : Jakob Munck |
Dato : 07-12-04 17:27 |
|
OK, nu er det lykkedes for mig at lave forespørgslen direkte i Access.mdb
via SQL-interfacet. Men desværre finder den ikke noget som helst når man
leder efter ord i et Notat-felt. Til gengæld virker den normalt og finder,
hvad den skal, når man søger i tekst-felterne.
Der må altså være en forskel på Access 2002 og 2003, ellers kan jeg ikke
forklare det.
Min server er den, som kommer med XP-Proffessional, og den hedder IIS.5.1.
Jeg prøver med den db-opkobling, som du angiver.
v.h.
Jakob Munck
| |
Jakob Munck (07-12-2004)
| Kommentar Fra : Jakob Munck |
Dato : 07-12-04 17:55 |
|
>Prøv evt at skifte din connection ud med noget ala
>strconn="PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="
>strconn=strconn & server.mappath(accessDB) & ";"
>'strconn=strconn & "Password=whatever;"
Den kan jeg ikke få til at virke overhovedet. Men da Access 2002 ikke kan
søge i Notat felt med dens egen indbyggede SQL-fortolker, formoder jeg at
det er håbløst at få den til det til det SQL leveret fra en asp-fil. Jeg
tror derfor, at jeg opgiver, i hvert fald indtil videre.
Tak for hjælpen.
v.h.
Jakob Munck
| |
Torben Borre Larsen (09-12-2004)
| Kommentar Fra : Torben Borre Larsen |
Dato : 09-12-04 14:54 |
|
"Jakob Munck" <jm2_fjern_dette@webspeed.dk> skriver:
>OK, nu er det lykkedes for mig at lave forespørgslen direkte i Access.mdb
>via SQL-interfacet. Men desværre finder den ikke noget som helst når man
>leder efter ord i et Notat-felt. Til gengæld virker den normalt og
>finder,
>hvad den skal, når man søger i tekst-felterne.
>
>Der må altså være en forskel på Access 2002 og 2003, ellers kan jeg ikke
>forklare det.
Jeg prøvede lige at lave en søgning på et notatfelt i en Access-97 db. Det
virkede fint.Jeg brugte denne Select-sætning:
SELECT Medlemsoplysninger.Afdelingsnr, Medlemsoplysninger.MedlNrAfd,
Medlemsoplysninger.Fornavn, Medlemsoplysninger.MNotat
FROM Medlemsoplysninger
WHERE (((Medlemsoplysninger.MNotat) Like "*" & "Ung" & "*"));
--
Venlig hilsen
Torben Borre Larsen
[torben@dui.dk] [ www.dui.dk]
| |
Peter Lykkegaard (10-12-2004)
| Kommentar Fra : Peter Lykkegaard |
Dato : 10-12-04 16:52 |
|
"Torben Borre Larsen" wrote
> Jeg prøvede lige at lave en søgning på et notatfelt i en Access-97 db. Det
> virkede fint.Jeg brugte denne Select-sætning:
>
> WHERE (((Medlemsoplysninger.MNotat) Like "*" & "Ung" & "*"));
Ja selvfølgelig Jakob har sikker brugt noget ala
WHERE Medlemsoplysninger.MNotat Like "%" & "Ung" & "%"
Peter
| |
|
|