20. april 2001 - 18:28Der er
16 kommentarer og 1 løsning
Søgning i database
Hej...
Jeg har lavet en database til sangtekster... Den er lavet sådan at jeg har en mainForm og en IndtastningsForm. I indstatinngsformen skal man skrive sangens navn (i et edit felt) samt vælge hvilken musik type det er (i en DBComboBox, fx. jazz eller pop osv.)
På min MainForm har jeg placeret en DBListBox og et Edit felt og en ComboBox, og en knap. Så når man indtaster et søgeord i edit feltet og vælger en sangtype, og derefter trykker på knppen skal den finde en sang der passer sammen med det man søgte efter... Sangen skal blive markeret ned i DBListboxen.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Den virker ikke... Men så vidt jeg kunne se manglede der også noget... Den går ikke i forbindelse med min ComboBox som den også skal søge i... Så kunne jeg også godt tænke mig at den kunne se og der stod noget i editfeltet eller comboboxen og hvis der ikke stod noget skulle den ikke søge på det...
Hvis du skal søge i en Database tabel SKAL du bruge LOCATE, hvis du skal søge i en ListBox ( StringList, ComboBox, ListBox, Memo, osv. ) bruger du IndexOf på dine Strings property.
Hvid det er data du har i en TTable/TQuery bruger du MyTable1.Locate();, men hvis du skal finde noget i en TStringList, som bliver bruget som Items/Lines på ComboBox, ListBox, Memo, osv skal du bruge MyMemo1.Lines.IndexOf(), det skal dog lige siges at IndexOf() søger kun på hele strenge og ikke kun noget at en streng.
Jeg forstår det sådan at du har nogle sangtekster i en table og en combo med Jazz, Rock osv. og et edit felt, med søge ord.
så det første du gør er at lave et SELECT * from <mysagtekster> WHERE MusikType = \'Jazz\';
Derefter laver du en Locate på de records du fik tilbage i din select, locate vil så finde de sangtekster hvor søgeordet optræder.
Men du skal nok ikke bruge en DBListbox til at putte dit resultat over i det er vist ikke det den er god til, men prøv lige at læs i online hjælpen, hvordan du bruger den. Jeg ville foreslå en alm listbox.
Har du tabellen \"lokalt\" (paradox tabel el lign) og ikke en SQL-server ville jeg nærmere benytte filter := \'MusikType = \'\'Jazz\'\'\'; filtered := true;
frem for en sql-statement med en where clause, husk dog at sætte filtered blank og false, når du er færdig med at søge.
Okay... spørgsmålet bliver lavet lidt om. Nu vil jeg kun bruge min Edit felt. Og som sagt ved tryk på en knap skal den søge i en DBListBox og finde det valgte søge ord... ordet må godt indgå i en sætning og hvis der ikke findes en sang ved det navn eller hvor søgeordet indgår skal der komme en Message der fortæller at der ikke er nogle sang ved dette \"(Søgeordet)\" navn...
prøv med funktionen Pos - den kan finde en substring i en string - så hvis du løber alle records igennem, og bruger pos med editfeltets text som substring skulle det virke
hvis du har en table kaldet Table1 kan du gennemløbe den sådan her
Table1.First; while not Table1.EOF do begin //kode Table1.Next; end;
hvis du nu har et felt der hedder titel af type string kan du for hver record søge efter den substring du skrev i editfeltet: if Pos(Edit1.Text, Table1.FieldByName(\'Titel\').AsString) > 0 then ...
Jeg mener man kan finde substrings med SQL - kan ikke lige huske syntaksen - men det ville nok være nemmere. Hvis du koblede en TQuery på din datasource, ville DBListen kun indeholde det records, som matchede søgekriteriet
Jeg har ikke lige kunnet gennemskue svarene, men prøver en gang til. Jeg har en form med en Listbox og et edit felt og en knap. Man skal skrive sit søge ord i edit feltet og ved tryk på knappen skal den søge i listboxen, og marker det den finder. Den skal kunne søge på alle ord.
Når det nu er sådan at jeg har en sangtekst der hedder \"Thats What Freinds Are For\" og en der hedder \"Freinds for ever\" og jeg så søger på \"Freinds\" så finder den en af dem og ved endnu et tryk finder den, den næste med ordet??? Kan det lade sig gøre eller er det for meget arbejde...
Andreas
Synes godt om
Ny brugerNybegynder
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.