Avatar billede difn Nybegynder
09. marts 2003 - 15:30 Der er 7 kommentarer og
1 løsning

select i access

Jeg har en tekst som lyder følgende...

"jeg har en tekst som lyder følgende"

her bliver dette gemt i databasen, sådan at hvert ord får deres række. Og deres position, siden de er på bliver også gemt.

Når jeg har fundet et ord, så vil jeg gerne returners ordet, plus de ord der står før og efter(5 begge steder for.eks.) hvordan gøres dette hurtigst..

Tak
Avatar billede sjap Praktikant
09. marts 2003 - 15:44 #1
Hvad med

=DLookup("[Ord]", "OrdTabel", "Position="& Position-5) & DLookup("[Ord]", "OrdTabel", "Position="& Position-4) osv.
Avatar billede sjap Praktikant
09. marts 2003 - 15:51 #2
Der skal måske også lige et kriterie om sidens navn med. Så vi den første DLookUp se sålede ud:

DLookup("[Ord]", "OrdTabel", "Position=" & Position-5 & " Side='" & Side "'")

Det antages at Position er et tal og Side er tekst.
Avatar billede difn Nybegynder
09. marts 2003 - 16:05 #3
Side er siden id, position er ordets position på siden.

Her er det jeg har nu.

SELECT [OrdTabel].[Ord], [DelSideTabel].[position]
FROM OrdTabel INNER JOIN DelSideTabel ON [OrdTabel].[OrdId]=[DelSideTabel].[OrdId]
WHERE ((([DelSideTabel].[SideId])=2) And  [DelSideTabel].[position]  >=30 AND  [DelSideTabel].[position]  <= 200);

Her får jeg strengen ud ved at tage ordene ord fra ord ud af tabellen. Men det er lidt neder at skulle lave en lykke der skal gøre dette måske 50 gange. Da ordet kan have forekommet på mange sider. Men jeg kan ikke se en anden vej.
Avatar billede terry Ekspert
09. marts 2003 - 16:36 #4
difn>Not sure what your trying to do but it sounds to me as though you should normalize your database!
Avatar billede sjap Praktikant
09. marts 2003 - 16:59 #5
difn
Så lad være med at et sidekriterie. Så vil forespørgslen jo medtage alle de sider, hvord du finder ordet:

SELECT [OrdTabel].[Ord], [DelSideTabel].[position]
FROM OrdTabel INNER JOIN DelSideTabel ON [OrdTabel].[OrdId]=[DelSideTabel].[OrdId]
WHERE (([DelSideTabel].[position]>=30) AND ([DelSideTabel].[position]<=200));
Avatar billede fynbohans Nybegynder
09. marts 2003 - 21:08 #6
Ved at bruge SQL og en hel post til hvert ord laver du så vidt jeg kan se et søgesystem, som allerede findes i Visual Basic.
Hvis du gemmer hele sætningen i et enkelt felt kan du med VBA og
FindRecord (med konstanten acAnywhere) og FindNext i et  DO/LOOP
opnå det samme med ganske få programlinjer.
Hvad gør du med søgeresultet?
Avatar billede difn Nybegynder
11. marts 2003 - 10:52 #7
har løst det
Avatar billede difn Nybegynder
11. marts 2003 - 11:00 #8
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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