|
| Hente 1 linie fra kolonnen, hvor søgeordet~ Fra : Henning Habor |
Dato : 07-10-03 22:05 |
|
Hej,
Jeg har tidligere spurgt efter hjælp til hvordan jeg kan hente en
linie fra et memo i en database, hvor et eller flere af ordene
matchede.
Desværre hjalp det mig ikke, så jeg prøver igen.
Jeg har et pladearkiv (Access DB) der har en tabel der indeholder
ID, album_titel, album_kunstner og tracks.
Tracks er et memo, hvor kunstner, titel og længde på de enkelte
numre står.
F. eks:
01 - kunstner1 - titel1 - længde1
02 - kunstner2 - titel2 - længde2
osv.
Når man har søgt på f. eks. kunstner1, vil jeg gerne have at det
kun er den linie hvor kunstner1 står.
Altså, skal koden gøre følgende:
Søg i album_indhold
Lede i tracks efter søgeord
Hente den linie (og kun den linie) hvor søgeordet passer
Udskrive et link til det pågældende album.
Hvis I ikke forstår, så skriv og jeg skal prøve at forklare
bedre...
På forhånd tak.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jørn Andersen (07-10-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 07-10-03 23:25 |
|
On Tue, 7 Oct 2003 21:05:22 +0000 (UTC), Henning Habor
<henninghabor@hotmail.com> wrote:
>Jeg har tidligere spurgt efter hjælp til hvordan jeg kan hente en
>linie fra et memo i en database, hvor et eller flere af ordene
>matchede.
>
>Desværre hjalp det mig ikke, så jeg prøver igen.
Jeg synes de to svar, du har fået har været rigtige og gode:
1) Det er en højst upraktisk datastruktur (Jens)
- men hvis du alligevel vil bruge den, så:
2) Torbens svar
<snip>
>Hvis I ikke forstår, så skriv og jeg skal prøve at forklare
>bedre...
Jo, problematikken er ikke så svær at forstå, men det er lidt svært at
forholde sig til "Desværre hjalp det mig ikke". Og det hjælper heller
ikke så meget blot at stille spørgsmålet igen.
Jeg har prøvet at svare (måske lidt mere konstruktivt) på dit andet
indlæg
Good luck!
--
Jørn Andersen,
Brønshøj
| |
Henning Habor (08-10-2003)
| Kommentar Fra : Henning Habor |
Dato : 08-10-03 12:35 |
|
> Jeg synes de to svar, du har fået har været rigtige og gode:
> 1) Det er en højst upraktisk datastruktur (Jens)
> - men hvis du alligevel vil bruge den, så:
Det kan godt være at den er ustruktureret, men det er nu engang sådan jeg
vil have den...
> 2) Torbens svar
Som jeg skrev i den 4. besvarelse på mit tidligere indlæg, så virkede den
kode jeg havde fået ikke. Jeg spurgte derfor hvordan jeg skulle indsætte
den i den samlede kode, så jo, hjælpen udeblev.
Den kode Jens hjalp mig til, udskrev ingenting og derfor spurgte jeg til
yderligere hjælp. Da jeg ikke fik nogen respons, oprettede jeg derfor
dette indlæg.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Henning Habor (08-10-2003)
| Kommentar Fra : Henning Habor |
Dato : 08-10-03 12:44 |
|
Jeg retter lige mig selv et par gange:
> Som jeg skrev i den 4. besvarelse
Her menes mit svar til Torben...
på mit tidligere indlæg, så virkede den
> kode jeg havde fået ikke. Jeg spurgte derfor hvordan jeg skulle indsætte
> den i den samlede kode, så jo, hjælpen udeblev.
> Den kode Jens
Her skal stå Torben...
hjalp mig til, udskrev ingenting og derfor spurgte jeg til
> yderligere hjælp. Da jeg ikke fik nogen respons, oprettede jeg derfor
> dette indlæg.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jens Gyldenkærne Cla~ (08-10-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 08-10-03 13:03 |
|
Henning Habor skrev:
>> 1) Det er en højst upraktisk datastruktur (Jens)
> Det kan godt være at den er ustruktureret, men det er nu
> engang sådan jeg vil have den...
Hvorfor?
> Som jeg skrev i den 4. besvarelse på mit tidligere indlæg, så
> virkede den kode jeg havde fået ikke. Jeg spurgte derfor
> hvordan jeg skulle indsætte den i den samlede kode, så jo,
> hjælpen udeblev.
Jeg skal ikke kunne svare på hvorfor Torben hoppede ud af tråden,
men jeg vil bare pointere at du har fået hjælp (til en ny
datastruktur) - du har bare ikke villet følge den. Det er sådan set
o.k. - jeg kan bare ikke hjælpe mere. Det er bestemt muligt at man
kan lave en løsning med din nuværende datastruktur, men dine
problemer skyldes stadigvæk en grundlæggende forkert opbygning af
din database. Jeg synes ikke det er interessant at bruge energi på
en lappeløsning.
> Den kode Jens hjalp mig til, udskrev ingenting
Du har vist byttet om på mig og Torben.
> og derfor spurgte jeg til yderligere hjælp. Da jeg
> ikke fik nogen respons, oprettede jeg derfor dette indlæg.
Jeg kan godt forstå at du spørger igen, men det havde nu været
bedre hvis du havde holdt det nye indlæg i den gamle tråd. Det er
unødigt besværligt at finde de gamle indlæg når du opretter en ny
tråd.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Henning Habor (08-10-2003)
| Kommentar Fra : Henning Habor |
Dato : 08-10-03 13:14 |
|
> Hvorfor?
Fordi det er nemmest for mig at have på denne måde. Jeg har før
prøvet andre ting, men her skulle jeg oprette alt for mange database
felter, så det til sidst blev helt uoverskueligt. Derfor har jeg
valgt en simpelt struktur.
> Jeg skal ikke kunne svare på hvorfor Torben hoppede ud af tråden,
> men jeg vil bare pointere at du har fået hjælp (til en ny
> datastruktur) - du har bare ikke villet følge den. Det er sådan
set
> o.k. - jeg kan bare ikke hjælpe mere. Det er bestemt muligt at man
> kan lave en løsning med din nuværende datastruktur, men dine
> problemer skyldes stadigvæk en grundlæggende forkert opbygning af
> din database. Jeg synes ikke det er interessant at bruge energi på
> en lappeløsning.
Jeg har jo ikke fået hjælp til det spørgsmål, jeg havde stillet. At
du så kommer med nogle inputs jeg ikke havde bedt om, er jo ikke den
hjælp som jeg ønskede.
Mit "problem" skyldes ikke en grundlæggende forkert opbygning af min
database.
Mit "problem" skyldes at jeg ikke kan få hentet den linie hvori
søgeordet passer.
> Du har vist byttet om på mig og Torben.
Det skrev jeg også i indlægget efter. Beklager.
> Jeg kan godt forstå at du spørger igen, men det havde nu været
> bedre hvis du havde holdt det nye indlæg i den gamle tråd. Det er
> unødigt besværligt at finde de gamle indlæg når du opretter en ny
> tråd.
Jeg oprettede en ny tråd, da jeg ikke fik yderligere svar på mine
spørgsmål.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Torben Brandt (09-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 09-10-03 09:34 |
|
Jens Gyldenkærne Clausen skrev:
> Henning Habor skrev:
>
>>Som jeg skrev i den 4. besvarelse på mit tidligere indlæg, så
>>virkede den kode jeg havde fået ikke. Jeg spurgte derfor
>>hvordan jeg skulle indsætte den i den samlede kode, så jo,
>>hjælpen udeblev.
>
> Jeg skal ikke kunne svare på hvorfor Torben hoppede ud af tråden,
Undskyld!
Jeg så godt indlægget, men kunne ikke lige finde på et svar, og så
glemte jeg det...
Jeg kan se at Henning har fundet en løsning, så nu er alt godt :)
mvh Torben
| |
Jens Gyldenkærne Cla~ (08-10-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 08-10-03 14:04 |
|
Henning Habor skrev:
>> Hvorfor?
> Fordi det er nemmest for mig at have på denne måde.
Det er måske nemmest at *lave* databasen simpel - men som du har
erfaret kan det give problemer når man skal til at *bruge*
databasen.
> Jeg har før prøvet andre ting, men her skulle jeg oprette alt for
> mange database felter, så det til sidst blev helt uoverskueligt.
Mange felter tyder heller ikke på en god struktur. Det jeg ville
anbefale var flere tabeller.
> Jeg har jo ikke fået hjælp til det spørgsmål, jeg havde
> stillet.
Nej, men du har fået hjælp til det problem du har beskrevet.
> At du så kommer med nogle inputs jeg ikke havde bedt
> om, er jo ikke den hjælp som jeg ønskede.
Jeg forsøger normalt at give svar der kan føre til det ønskede
resultat - også selv om det nogle gange indebærer at man svarer på
noget andet end der spørges om.
Hvis der for eksempel spørges:
,----
| Hvordan kan jeg få formateret min dato korrekt. Jeg har følgende
| kode:
|
| id = Request.form("id")
| tid = Now()
| strSQL = "UPDATE tabel SET datofelt = '" & tid & _
| "' WHERE idfelt = " & id
`----
- kunne man godt svare direkte på spørgsmålet ved at fortælle om
Session.LCID, #'er og lignende.
Men man kunne også kigge på hvad spørgeren er ude på - nemlig at
gemme det aktuelle tidspunkt og så svare at man kan benytte
databasens now-funktion i stedet. Det er i mine øjne et væsentligt
bedre svar.
> Mit "problem" skyldes ikke en grundlæggende forkert opbygning
> af min database.
Jo. Databasedesign handler (bl.a.) om at holde søgbare termer
adskilt. Når du har brug for at finde/hente/vise en bestemt linje i
et felt, er det fordi det felt indeholder mere end én værdi. Det er
i strid med første normalform.
> Mit "problem" skyldes at jeg ikke kan få hentet den linie
> hvori søgeordet passer.
Det problem er afledt af din datastruktur.
> Jeg oprettede en ny tråd, da jeg ikke fik yderligere svar på
> mine spørgsmål.
Et nyt indlæg er synligt uanset om det kommer som svar eller
starter en ny tråd.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Henning Habor (08-10-2003)
| Kommentar Fra : Henning Habor |
Dato : 08-10-03 15:15 |
|
Ok, så lad mig forsøge at forklare hvorfor jeg vil have at databasen
ser sådan ud:
Jeg har som sagt lavet et pladearkiv før, og her irriterede det mig
grænseløst at jeg for hvert track skulle skifte form-felt. Dvs. trykke
tabulator når jeg skulle skrive ny kunstner eller ny titel eller ny
længde.
Samtidig har jeg også fået mig en scanner, så nu kan jeg scanne et
CD-cover ind og derfra tage de informationer jeg har brug for. Hvis
jeg skal copy & paste 20-40 numre gange 3 ved hver CD, så kommer det
til at tage en evighed.
Derfor har jeg valgt nu at have alle disse informationer i et felt.
Det undskylder ikke at det er dårlig database-struktur, men det gør
det helvedes meget nemmere for mig.
Du kan se det hele her: http://www33.brinkster.com/pladearkiv. Du må
gerne lege med den, jeg har den rigtige kopi på min computer...
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jesper Stocholm (08-10-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 08-10-03 15:50 |
|
Henning Habor wrote :
> Ok, så lad mig forsøge at forklare hvorfor jeg vil have at databasen
> ser sådan ud:
Udover at jeg vil slutte mig til den (voksende) skare der opfordrer dig til
at lave din datamodel om, så vil jeg lige komme med en kommentar til den
kode du medsendte tidligere.
Du skriver
strSQL = "SELECT * FROM albums " & _
"WHERE " & strCategory & " LIKE '%" & strSearch & "%'" & _
"ORDER BY ID"
Du skriver samtidig at du vil sikre dig at et eller flere af de indtastede
søgeord passer. Men den SQL du skriver her vil ikke gøre det ønskede.
Hvis der fx bliver indtastet "kald kærlighed", så vil det resultere i SQL
som
SELECT * FROM albums WHERE kategori LIKE '%kald kærlighed%' ORDER BY ID
Dette vil dog ikke resultere i resultater for fx Lars' Lilholts "Kald det
kærighed", da der bliver søgt på hele strengen og ikke på hvert ord. For at
opnå dette skal du implementere det så der laves en "LIKE"-statement for
hvert "del-ord" i det indtastede.
SQL for eksemplet jeg gav ville skulle være
SELECT
*
FROM
albums
WHERE
kategori LIKE '%kald%' OR
kategori LIKE '%kærlighed%'
ORDER BY ID
> Derfor har jeg valgt nu at have alle disse informationer i et felt.
> Det undskylder ikke at det er dårlig database-struktur, men det gør
> det helvedes meget nemmere for mig.
Prøv at tænke på hvor meget tid du kommer til at bruge på at fixe dit
"hack", der er betinget af at du gerne hurtigt vil _indsætte_ data. Den tid
ville du kunne have brugt på at indtaste dine data i et lidt mere
kompliceret interface, men bagefter ville du have en meget mere fleksibel
datamodel, der uden videre vil kunne udvides til mere komplicerede
forespørgsler.
I øvrigt er Torbens løsning så vidt jeg kan se den eneste du kan få på dit
problem (jeg ville i hvert fald have foreslået noget tilsvarende).
Hvis du gerne vil beholde din mulighed for at kunne "batch-loade" dine
albumoplysninger, så kunne du overveje at ændre din datamodel til noget som
det Jens foreslog, men i stedet for at ændre din brugerflade, så behandle
dine data fra brugerfladen _inden_ de sættes ind i databasen.
Det kunne fx gøres som Jens skrev (lidt tilrettet):
table: albums
id
Navn
Kunstner
Samlet_tid
table: tracks
id
album_id (primær nøgle (id) i album-tabellen)
track_nummer
titel
Når du så modtager data fra dit felt som
1;Sang nummer 1
2;Sang nummer 2
3;Sang nummer 3
....
(hver linie har en specifik adskiller for hvert felt)
Når du så modtager disse data, så laver du først en split på linieskift for
at adskille dine sange
strTracks = Request.Form("tracks")
arTracks = split(strTracks,vbCrLf) ' put data ind i array arTracks
' find ud af det specifikke album id
albumID = ...
for i = 0 to uBound(arTracks)
' gennemløb alle tracks
' split hvert track ved adskiller
arSpecTrack = Split(arTracks(i),";")
strSql = "INSERT INTO tracks (album_id,track_nummer,titel) " &_
"VALUES (" & albumID & ",'" & arSpecTracks(i) &
"','" & arSpecTracks(1) & "')"
oCon.Execute(strSql)
next
Her oprettes en indgang i din track-tabel for hvert nummer i dit album.
Hermed vil du beholde din eksisterende brugerflade samt få en meget mere
fleksibel datamodel.
Hvis du stadig har problemer med at få det til at virke, så er der kun at
sætte sig ned og udskrive nogle debug-informationer, så du danner dig et
overblik over hvor eventuelle fejl indsniger sig. Husk at medtage disse
informationer hvis du skriver igen.
--
Jesper Stocholm
http://stocholm.dk
Tillykke, Frederik og Mary
| |
Henning Habor (09-10-2003)
| Kommentar Fra : Henning Habor |
Dato : 09-10-03 01:16 |
|
Hej igen igen,
Jeg er en glad mand... Meget glad mand... Jeg har nemlig fået
søgefunktionen til at virke med highlight og hele molevitten...
Og det endda på trods af utallige råd om at det ikke kan lade sig
gøre, medmindre jeg laver om på databasen...
Min stædighed og et par flasker rødvin gjorde at jeg fandt ud af
følgende:
arrLine = split(objRS("" & strCategory & ""), VbCrLf)
for t = LBound(arrLine) to UBound(arrLine)
strTekst = replace(arrLine(t), strSearch, "<span
class=""highlight"">" & strSearch & "</span>", 1, -1, 1) & "<br>" &
VbCrLf
if CBool(Instr(strTekst,strSearch)) then
response.write strTekst
end if
next
Måske er det ikke korrekt kodning, men jeg er glad - Så tak til jer
for råd også selvom jeg ikke følger dem alle...
Håber I er villige til at hjælpe mig igen, hvis jeg får brug for det
(Hvilket jo nok er sandsynligt... ...)
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
terje (09-10-2003)
| Kommentar Fra : terje |
Dato : 09-10-03 02:00 |
|
"Henning Habor" <henninghabor@hotmail.com> wrote:
| Min stædighed og et par flasker rødvin gjorde at jeg fandt ud af
| følgende:
|
| arrLine = split(objRS("" & strCategory & ""), VbCrLf)
| for t = LBound(arrLine) to UBound(arrLine)
| strTekst = replace(arrLine(t), strSearch, "<span
| class=""highlight"">" & strSearch & "</span>", 1, -1, 1) & "<br>" &
| VbCrLf
| if CBool(Instr(strTekst,strSearch)) then
| response.write strTekst
| end if
| next
En flaske til og resultatet hadde blitt virkelig bra
terje
| |
Henning Habor (09-10-2003)
| Kommentar Fra : Henning Habor |
Dato : 09-10-03 02:07 |
|
> En flaske til og resultatet hadde blitt virkelig bra
> terje
Svensk humor når den er bedst...
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
terje (09-10-2003)
| Kommentar Fra : terje |
Dato : 09-10-03 03:32 |
|
"Henning Habor" <henninghabor@hotmail.com> wrote:
| > En flaske til og resultatet hadde blitt virkelig bra
| > terje
| Svensk humor når den er bedst...
Svensk????
terje
| |
Henning Habor (09-10-2003)
| Kommentar Fra : Henning Habor |
Dato : 09-10-03 03:41 |
|
Norsk så??? *G*
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jesper Stocholm (09-10-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 09-10-03 09:41 |
|
Henning Habor wrote :
> Hej igen igen,
>
> Jeg er en glad mand... Meget glad mand... Jeg har nemlig fået
> søgefunktionen til at virke med highlight og hele molevitten...
>
> Og det endda på trods af utallige råd om at det ikke kan lade sig
> gøre, medmindre jeg laver om på databasen...
Mig bekendt har ingen sagt at det ikke kunne lade sig gøre, men blot at
du i længden ville få nytte af at lave din datastruktur om. Torben kom
også med en løsning, som ligner meget den løsning du fandt.
Derudover ser det ud til at du stadig har det problem jeg nævnte med at
der ikke søges på de enkelte ord men i stedet på hele den indtastede
tekst.
> Håber I er villige til at hjælpe mig igen, hvis jeg får brug for det
> (Hvilket jo nok er sandsynligt... ...)
Jeg kan ikke forstille mig, at du ikke vil få hjælp igen, hvis du
spørger. Du bør dog nok forvente, at svarerne vil fortælle dig det, hvis
de mener der er noget galt med dit grundlæggende design. På den anden
side er det jo også charmen ved usenet.
--
Jesper Stocholm
http://stocholm.dk
Tillykke, Frederik og Mary
| |
Henning Habor (09-10-2003)
| Kommentar Fra : Henning Habor |
Dato : 09-10-03 15:00 |
|
Hej Jesper,
Jeg var pløret i nat, så jeg opgav at splitte keyword.
Jeg prøvede, men fik kun en masse fejlmeddelser ud af det.
Men nu har jeg så lavet det, så hvis man søger på "kald+kærlighed" vil
resultatet blive de records hvori "kald" og de records hvori "kærlighed".
Som du kan se i eksemplet på http://www33.brinkster.com/pladearkiv vil der,
hvis den finder Lars Lilholts "kald det kærlighed" komme 2 records. En
linie hvor den skriver "< -- fremhæv -- >kald< -- /fremhæv -- > det
kærlighed" og en hvor den skriver "kald det < -- fremhæv -- >kærlighed< --
/ fremhæv -- >".
Hvordan gør jeg så den skriver de 2 linier på en? Altså "< -- fremhæv
-->kald< -- /fremhæv -- >det< -- fremhæv -- >kærlighed< -- /fremhæv -- >".
Her er koden:
arrLine = split(objRS("" & strCategory & ""), VbCrLf)
arrSearch = split(strSearch,"+")
for t = LBound(arrLine) to UBound(arrLine)
for i = LBound(arrSearch) to UBound(arrSearch)
strTekst = replace(arrLine(t), arrSearch(i), "<span
class=""highlight"">" & arrSearch(i) & "</span>", 1, -1, 1) & "<br>" &
VbCrLf
if CBool(Instr(strTekst,arrSearch(i))) then
response.write "<strong>" & strTekst & "</strong>"
end if
next
next
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
|
|