19. december 2003 - 11:36Der er
45 kommentarer og 2 løsninger
Søge på del af sætning i felt.
Hejsa.
Jeg har med meget rigtig god hjælp fra en person her på eksperten fået stablet en database på benene, der er gået et stykke tid, så jeg ville ikke forstyrrer ham her op til jul. Derfor går det ud over jer. Mit problem er at mit ordforråd ikke er så godt som jeg troede :) Derfor ville jeg gerne have en kode der kan søge i et felt(motiv) i en tabel. motivfeltet indeholder små sætninger alá "Små blå sommerfugle", "Små blå engler med vinger", Jeg vil så gerne i mit søgefelt kunne skrive blå og så skal den give mig alle de poster hvor ordet blå er indeholdt i motiv feltet. Håber at det giver lidt mening ellers så spørg.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
mysql_select_db("nyheder",",$db); $fore = mysql_query("SELECT dato, overskrift, tekst FROM nyheder WHERE tekst like '%$tekst_soeg%' ORDER by dato DESC"); echo mysql_num_rows($fore)."forekomst(er)fundet<br><br>"; while($data = mysql_fetch_array($fore)){ echo "<b>$data[1]</b>-"; echo date("j/n-y",$data[0]); echo "<br>$data[2]<br><br>"; } }else{ ?> <? } ?>
det er det der står i bladet men jeg har ikke testet det men du må se om du kan bruge det med venlig hilsen Niels christiansen
Min fejl, jeg glemte at sige at jeg jo ikke ligefrem er hjemme i alt det her, og at jeg arbejder med en access database. Nu ved jeg ikke med det du har skrevet, men hvis "$db=mysql_connect" betyder at jeg åbner databasen via noget andet end access selv så gør jeg ikke det og det er helt fremmed for mig. Jeg regnede med at det var noget vba jeg skulle bruge.
LOL hvor kommer alt det PHP fra ?! Vi er jo i et VB forum.
Det gøres nemt med SQL.
Du udformer din SQL sætning med en WHERE på følgende måde
SELECT * FROM table1 WHERE felt1 LIKE '%små blå%'
På den måde får du alle felter indeholdende 'små blå'. Du kan også gøre noget i retning af LIKE 'små blå%', så får du alle sætninger, som starter med små blå. Som du sikkert kan se, bruger man %-tegnet som et wildcard. Det kan indsættes hvor som helst i begrebet. Bemærk at det er noget, der suger en del kraft ud af SQL Server.
mufoxe>> det virker bare ikke med den sql- sætning. Hverken med * eller %. Jeg har en søgeformular med en søgknap som åbner en ny formular hvor søgeresultatet vises.
Den viser kun det præcise ord og hvis jeg ikke skriver det hele finder den ikke noget. Jeg bruger faktisk også den sql-sætning i 2 andre felter der hedder hoved tema og undertema og der kommer kun resultat hvis jeg skriver præcis det der står i feltet. ØV.
Nu er du i kategorien Visual Basic - derfor må vi forudsætte, at det er et Visual Basic program du vil lave, som snakker sammen med en database, der åbenbart er en access-database. Er det korrekt?
Så det er min VBA koden inde i access der ikke vil som jeg vil eller måske ikke kan det som jeg gerne vil have den til. Måske kan det kun løses hvis jeg som du siger laver et Visual Basic program som snakker sammen med databasen. Men det må så blive i et andet liv. For det rækker mine evner og muligheder vist ikke til lige i øjeblikket. :)
Så skulle du nok have skrevet, at der er tale om VBA til MS Access, så vi slipper for at komme med svar du ikke kan bruge alligevel...
Har du en userform i access hvorpå søgefunktionen skal ligge, eller hvad taler vi om her? Hvis du viser noget af det kode du evt. allerede har, så bliver vi nok også lidt klogere
Nu håber jeg altså at vil bære over med mig lidt endnu. Jeg er nemlig ikke helt med i hvad du mener med "userform". Men jeg prøver. Jeg har en formular der åbnes automatisk på/i den ligger en knap der hedder søg den åbner en ny formular som har flere forskellige knapper bl.a en der hedder "søg i motiv" Koden der ligger bag den knap ser ud som følgende:
Private Sub Kommandoknap13_Click() If IsNull(Me.Tekst1) Then MsgBox "Du skal indtaste et ord i søgestrengen." Else If DCount("[motiv]", "glansbilled", "[motiv] ='" & Me.Tekst1 & "'") Then DoCmd.OpenForm "Fsøgmotiv" Me.RecordSource = "søgmotiv" [Forms]![Fsøgmotiv]![Tekst38] = "Du har søgt på motiv med søgestrengen: " & Me.Tekst1 Else MsgBox "Der findes ikke noget" End If End If End Sub
Der er selfølgelig også et felt hvor jeg taster mit søgeord ind.
Ud fra dit oprindelige spørgsmål kan jeg se at det er en database over fotografier, du kæmper med. Jeg har lavet en som der kan downloades en demoversion af fra http://jkfsoft.dk/fotos.htm
Min hviler ikke på en access database, så applikationen er ren Visual Basic (ikke noget VBA altså) Jeg har faktisk aldrig kigget på VBA så jeg ved ikke om kommandoen InStr findes dér. Det vil Martin, Mufoxe eller en tredie sikkert belære mig om. Har du ikke VB, er der jo kun den tunge vej gennem access, som jeg flere gange selv forgæves har forsøgt at komme igang med. Men jeg syntes mulighederne var begrænsede i forhold til mit behov.
Mine datafiler er ren ascii-tekst. Hvis du er tæt på målet, så skal du ikke opgive, men har du VB og er der lang vej igen i VBA, så overvej en ny start.
Hej Joern>> Det er ikke desværre ikke fotografier (Hvor er den sød, missekatten), men glansbilleder, så der er også billeder med og motiv henviser til motivet på glansbilledet. Men nogle ark kan bare ikke beskrives med kun 2 ord. Jeg har faktisk nået en del og har ikke helt lyst til at starte forfra, jeg har heller ikk VB. Men tak for forslaget.
bms122: Jeg har ingen forstand på VBA til netop ACCESS, det eneste jeg kan finde ud af er at få VB til at snakke sammen med databaser. Og selv om det måske lyder kompliceret, er det faktisk ufattelig let, hvis man nogle timer på at sætte sig ind i det.
Men hvis al det kode du har (VBA) ikke er skrevet af dig selv men en anden, så er det måske en for stor mundfuld at skulle lære at programmere.
Jeg er sikker på at der er en let måde, man må da kunne søge med wildcards, men jeg kan kun finde ud af dem vis SQL (som mufoxe viser) og forstår ikke så meget af den kode du har vist...
PS: Min filosofi: Jeg bruger aldrig så meget som een linie kode, jeg ikke forstår. Det tager noget tid at få stablet mine programmer på benene, til gengæld kan jeg (næsten) altid spotte fejl på ingen tid, og nemt rette til og ændre programmet. Så tiden der går med at sætte sig ind i koden før man skriver den er godt givet ud.
Man må yde før man kan nyde - og hold da kæft en gang lort jeg lukker ud, hva?
martin_moth>> Nu håber jeg du ikke er stået helt af endnu. Hvis jeg nu finder ud af VB, så skulle det være muligt at få det til at snakke til min access database og hive de oplysninger ud som jeg gerne vil have? Med andre ord hvis jeg køber et VB program og lære at tale VB så kan jeg gøre det? Jeg har engang for rigtig mange år sige lært lidt turbo pascal(det hedder det ikke mere), så programmering er ikke helt udelukket. Men jeg var altså bedre til at finde fejlene i programmeringen end til selve programmeringe. Glædelig jul til dig også.
Visual Basic minder meget(!) om VBA (af naturlige årsager ;o), men det er en helt anden måde at programmere på end i Turbo Pascal. VB/VBA er event-driven programmering, udvalgte dele af koden bliver kørt når brugeren gør noget bestemt (event), fx. trykker på en knap. Men selve syntaksen er ikke så forskellig fra Turbo Pascal endda.
VB bruges som TP til at lave selvstændige programmer. Disse programmer kan så hooke op til en database og trække data ud fra databasen - meget let endda.
Ideen er altså: Du har en database der indeholder dine data - intet mere. Og du laver et program, der håndterer datane (viser dem, søger i dem, tilføjer/sletter osv. Det program laver du i VB. Og du behøver ikke have access for at bruge programmet.
Joerns program er et eksempel på et program skrevet i VB, der snakker med en database.
Ja undskyld hvis det lyder lidt dumt. Det vil sige de fleste databaser man ser rundt omkring, faktisk bare indeholder dataerne(tabeller) og at det er programmering via et eller andet sprog der håndterer dataerne.? Hmmm jeg bliver da klogere og klogere på hvad det er jeg har rodet mig ud i, jeg havde da ikke regnet med at det skulle være et så stort problem at lave en database. Jeg blev klogere. :)
Jeg anvender VB5, som alle 'drengene' vil kalde out af date. Men versionen dækker mit behov og Microsoft er dyr at handle hos. Måske kan man være heldig at finde en VB5 eller VB6 til salg brugt, men ellers er det tusindvis af kroner for en af .net-versionerne.
TurboPascal er mere beslægtet med Borlands Delphi end med VB, der selvfølgelig har tråde tilbage til Basic. Og Borland har frigivet Delphi 6 til ikke kommercielt brug. Jeg har den fra Alt Om Data og kan godt lave en kopi.
Ligesom VB i Pro- og Enterprise-versionerne indeholder en DataBaseEngine, gør Delphi også dette, man behøver altså ikke at have det fulde databaseprogram Paradox.
Skulle du bo i det sydsjællandske (med omliggende øer) eller trods større afstand have lyst til et møde om programmering, så tilbyder jeg at du kan komme her til Stege på Møn.
Nå ja - glemte i skyndingen Delphi, der synktaksmææsig ligner Pascal meget mere end VB gør. Men Delpi er stadig event-driven ligesom VB(A) er, så det er an lidt anden måde du skal tænke på i forhold til Pascal.
Jeg ved ikke hvilke "databaser du ser rundt omkring", så det spørgsmål kan jeg ikke svare på. Men går du på internettet, på en side der viser data af en eller anden art (det gør de fleste jo, fx. www.eksperten,.dk,. hvor spørgsmålene vi skriver ligger i en database et sted), så ligger dataene typisk i databaser, og hentes frem til din browser via et serverside script, fx. en .asp-side (eller php eller cgi eller...). Det er fuldstændigt analogt til det vi taler om her - du laver et program (svarende til asp-siden i din browser), der fungerer som interface mellem dig og databasen.
Hmmm jeg tænker så det knager. Jeg har lysten til at programmere men ikke tiden. Desværre. Familien synes jo allerede at jeg bruger rigelig tid på glansbilleder, så hvis jeg nu kommer og siger at jeg skal forfra og om igen :( joern>> Jeg overvejer at få det gjort, men er jo ikke meget for at hive mange penge om ad lommen, og jeg ville jo så ikke selv kunne rette til. JEg har dog kigget på din side og kan godt lide det jeg ser. Så jeg knager videre ned og henter barn i vuggestuen og videre til zoneterapi, men er tilbage igen iaften.
Hej. Jeg har kigget på http://data.dba.dk under software. Dér er en learning edition af VB6 til salg for 300 kr. Jeg er ikke klar over om man kan kompilere til exe-filer med en learning edition, formentlig kan man ikke. Det vil betyde, at man kun kan køre sit program fra udviklings-miljøet. Det er noget bøvlet. Men ved du mere om Pascal end om Basic er Delphi måske sagen.
Jeg er med på, at du har småbørn (barn) og en kone at passe, så tiden er en mangelvare. Det er bl.a. også derfor jeg tilbyder at introducere dig til VB-udvikling, og hvorledes en eksisterende applikation - når man har kildeteksten - vil kunne tilpasses en anden opgave end den, som den er udviklet til. Jeg tænker på mit fotokartotek. Se evt. http://jkfsoft.dk/kravspec.htm
joern>> Jeg sad lige og kiggede på de programmer der ellers ligger på din side, hvad de kan og sådan. Jeg har - hvilket er det der giver problemer- en rimelig god ide om hvad det er der skal ind i den database/program og hvad det er jeg vil kunne hive ud igen. Det er jo en hel del med søgning og visning af billeder, som jeg selv scanner ind (mine egne glansbilleder). Jeg har nu ikke den store erfaring med programmering, tog første år af DAT 0 på uni for alt for mange år siden, droppede ud og blev bioanalytiker istedet for. Nogle gange må man(jeg) jo kende min begrænsning, og det vil nok tage mig alt for lang tid at lave selv (om jeg kan ved jeg så ikke). Jeg vil nemlig meget gerne have lidt bedre styr på hvad jeg har af gamle glansbilleder i album, som ikke har så godt af at blive læst igen og igen. Så det er meget muligt at jeg vender tilbage til dig. Nå ja og så har jeg mand og to børn. Birgit.
martin_moth>> Hvis du lægger er svar kan jeg tilbyde lidt point for din hjælp.
Joern>> Jeg kan ikke gennemskue om et program som fotokartoteket kan bruges til glansbilleder(med nogle ændringer). Men hvis du har tid og lyst til at vide mere om glansbilleder, vil jeg gerne tale mere med dig om mulighederne. Men jeg tænkte så måske at bruge din egen mail, da det jo egentlig ikke har så meget med spørgsmålet her at gøre. Hvis du vil have lidt point så læg et svar.
Til jer begge nej i har ikke løst mit spørgsmål, men jeg er blevet en del klogere og har en bedre mulighed for at komme videre og det er jeg glad for.
Kvinder er så sjældne på 'Eksperten' at trods det med glansbillederne og afhentning af barn, troede jeg du var en (blød) mand.
Der foreligger en vejledning til fotokartoteket. Det som er substansen er, at der registreres billeder med ialt 21 egenskaber. Hvilke egenskaber styres alene af de anvendte ledetekster ud for felterne. Ledeteksterne er meget nemme at ændre. Felternes størrelse og indbyrdes placering ændres også let. Vi taler om en times tid. Længden på felternes indhold styres ikke af en databases indstillinger, princippielt kan hvert felt være flere tusinde tegn
Fra Jkfsoft er mail-linket til salg@jkfsoft.dk, den er desværre nede netop nu, men wannafind.dk der 'hoster' sitet får den vel op igen. Ellers har jeg jorn@stegenet.dk Har du ikke allerede været dér kan du kigge på http://jkfsoft.dk/hus.htm
Pyt med point, jeg har lige tjekket at der står over 15.000 giv mig ét.
Ang. InStr og VBA. uddybning af svar fra 19/12 kl. 13:03
Kommandoen InStr udfører et gennemløb af en streng og tester på om en tegnfølge forekommer i strengen. I så fald sættes en variabel til det tal hvor den indeholdte streng starter (1.gang)
a = InStr("Små blå blomster", "blå" ) ' a bliver 5
If Instr(streng, sogkrit) > 0 then....
Altså hvis strengen - læst fra databasen, indeholder søgekriteriet så....
Jeg har søgt på Google på VBA & InStr og fundet forskelligt. Jeg ved jo ikke om VBA indeholder kommandoen InStr. Kig i din VBA hjælp.
Ja jeg troede jo egentlig at jeg skulle lukke her, men jeg holder lige fast i jer lidt endnu.
joern>> Jeg ved ikke om instr kan bruges, prøver mig lidt frem har aldrig brugt den. Har ingen hjælp i VBA editoren, så er lige ved at finde ud af om jeg har noget hjælp overhovedt.
Martin_moth>> Instr findes i VBA, jeg skal bare lige finde ud af hvordan den bruges. Du kan altså ikke få nogle point før du lægger et svar :)
undskyld at jeg råber, men nu ser det altså ud som at jeg har fundet noget der kan bruges. Jeg må desværre vente med en endlig test, børnene kalder. Men det ser ud som om strcomp virker. Vender tilbage senere. Snart.
Hvis du har den CD-rom som din Access 2000 er installeret fra, kan du sætte den i, starte installationen og under office-værktøjer finde Visual Basic hjælp (sidste punkt formentlig). Den står med et 1-tal, hvilket betyder at den default ikke installeres. Men det gør du så!
Ang StrComp så tvivler jeg desværre på, at den gør det du søger. Den sammenligner strenge og returnerer som angivet nedenfor. Hvis du søger 'blå' inde i en sætning, er den ikke til gavn.
Syntax: StrComp(string1, string2[, compare])
string1 is less than string2 -1 string1 is equal to string2 0 string1 is greater than string2 1 string1 or string2 is Null Null
Men Instr vil kunne gøre det. Da jeg selvsalgt ikke kender hvorledes du gennemløber dine data, må du nok over i Access-forum og have hjælp. I øvrigt har jeg netop svaret på din mail til mig.
Nå jeg må hellere lukke og slukke. Jeg er nu gået igang med en front-end, så må jeg se hvad det kan blive til, ud over grå hår i hovedet. Håber I har haft en glædelig jul og får et rigtig godt nyt år.
martin_moth>> Du kunne have lagt et svar, hvis du ville have haft en anderledes fordeling. Jeg har ventet. Længe. Ingen af jer løste jo egentligt mit problem. Joern skrev at jeg bare kunne give ham et enkelt point og jeg har taget ham på ordet og givet ham 1 point. Jeg regner med selv at få brug for de få jeg har. Jeg fatter simpelthen ikke al den point polemik. Jo jeg så godt din ;0)
Jeg tror ideen med points er at man giver det som en symbolsk tak for at folk gider tage sig af ens problem.
Points er ikke noget værd, de kan ikke sælges, men kan kun bruges til at belønne andre for svar på spørgsmål man selv stiller. Jeg har flere points end jeg nogensinde får brug for, så derfor har jeg ikke brug for nogle. Hvis du gerne vil af med flere points kan du jo bede om at folk lægger et svar...
Martin_moth>> jeg har efterspurgt et svar fra dig 19/12-2003 20:56:28, men ikke fået noget svar. Jeg kan bedst lige at lukke spørgsmålene, og ja jeg ved godt at jeg har et åbent spørgsmål(gammelt).
Ok - det havde jeg overset. Fejlen ligger alene på min side, beklager, og håber du er kommet videre med dit projekt :o)
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.