Avatar billede olberd Nybegynder
15. januar 2000 - 02:24 Der er 11 kommentarer og
1 løsning

Søg i en formular - How?

Det jeg har brug for er at jeg kan skrive en søgning i et tekst felt i en formular, og derefter trykke på en knap. Og på den måde få Access til at søge efter det i en tabel, og vise mig en ny tabel med resultatet.
Endnu bedre ville det være hvis jeg kunne få access til konstant at søge efter det der står i tekstfeltet, så jeg får resultaterne ligesom når man trykker F1 og bruger index muligheden.
Avatar billede privaten Nybegynder
17. januar 2000 - 14:07 #1

Jeg ville ikke anbefale at lade Access søge konstant, men mindre du starter søgningen efter en on_change event er indtruffen på søgefelet.

Resten lyder som en macro, er efter en on_change event er opstået skyder en SQL afsted og lagrer resultatet i en tabel.

Giver det mening?
Avatar billede olberd Nybegynder
17. januar 2000 - 22:56 #2
Ja, nogenlunde...

men jeg kan ikke bruge det til så meget for jeg aner stadig ikke hvordan jeg skal lave det :-)
Avatar billede privaten Nybegynder
18. januar 2000 - 10:24 #3

Hej igen,

Hvis du sender din db + en beskrivelse af hvad og hvordan du vil søge. Så vil jeg gerne skrue et eksempel sammen til dig der kan bringe dig videre.

privaten@forum.dk
Avatar billede bjarke Nybegynder
24. januar 2000 - 18:01 #4
privaten >> Gider du ikke kort fortælle hvordan du vil gøre det med en makro. Jeg har lavet det et par gange i VB nu, men det er ret besværligt at generere en sql-statement i VBA baseret på hvad der er indtastet i forskellige felter.

Hilsen Bjarke
Avatar billede privaten Nybegynder
25. januar 2000 - 09:10 #5

Jeg forstår ikke hvorfor det er svært at generere et SQL statement.

Hvis du har opretter en sub-rutine, der tager et argument indeholdende søgestrengen, så sammensætter du bare dit statement ala:

sSQL = "SELECT * FROM db WHERE id='" & SeekString & "'"

Søgningen kan eksekveres efter du har rettet i feltet, ved at bruge feltets on_change.

Du opretter on_change metoden ved at:
- markere feltet
- vælge properties
- vælge on change
- vælge code builder (eller hvad den nu hedder)

Så oprettes der automatisk en sub rutine til dig

Skriv din kode og du er i luften.

Hvis du har problemer med koden, vil jeg gerne hjælpe, men så er du nødt til at sende en db jeg kan kigge på....
Avatar billede bjarke Nybegynder
25. januar 2000 - 19:06 #6
Hmmm, jeg ved ikke helt hvordan jeg skal bruge code builder (udtryksgenerator).

Det besværlige i at generere en sql-statement er hvis du har en række felter der skal medgå i din søgning, så får du et eller andet i retning af:

sql = "select * from tabel1 left join tabel2......."
if not markbox1 = 0 then
sql = sql & "where fornavn='" & fornavnbox & "'"
if not markbox1 = 0 and not markbox2=0 then
  sql = sql & " and efternavn='" & efternavnbox & "'"
else sql = sql & "where efternavn='" & efternavnbox "'"

...og så videre. Selvom det godt kan laves en lille smule smartere, så bliver det alligevel irriterende at læse en lang sql statement med den syntaks...
Avatar billede privaten Nybegynder
26. januar 2000 - 09:18 #7
Hej Bjarke,

Hvis du nu brugte funktioner til den slags kan det gøres meget elegant...:


' ---------------------------------------------------------------
' Denne funktion genererer det SQL der skal bruges i søgekriterie
' ---------------------------------------------------------------
Function mySQL() As String
    Dim m1SQL(-1 To 0) As String ' true = -1, false = 0
   
    m1SQL(True) = "WHERE FORNAVN='" & fornavnbox & "'"
    m1SQL(False) = ""
   
    mySQL = "SELECT * FROM MyTable ..." + m1SQL(markbox1)
End Function



Så kalder vi:

SQL = mySQL

Vupti...
Avatar billede region Nybegynder
27. januar 2000 - 23:15 #8
opret en forespørgsel åp baggrund af din tabel. åbn denne i design visning og angiv i kriterier for det enkelte felt en udtryksgenerator. i udtryksgenerator vælges formularen samt tekstfeltets navn. ( såfremt du ønsker at anvende wildcards starter du din udtryksgenerator med LIKE....osv.
i din formular opretter du en underformular baseret på din forespørgsel. det eneste du nu mangler er at opdatere underforlaren når du har skrevet noget. Dette gøres ved i designvisning og egenskaber for din tekstboks at lave en macro der er lig med "vis alle poster ". denne macro skal træde i funktion unde egenskaben " ved klik" på dit tekstelement.

Udtryksgenerator er hammer go' når man ikke forstår sig 100 % på SQL eller VB.

Du skal være velkommen til at henvende dig igen på nt@solar.dk
Avatar billede olberd Nybegynder
28. januar 2000 - 01:25 #9
-> Region: "Du er meget tæt på at få pointene, men før jeg accepterer, er der lige en ting jeg vil vide. Kan man få den til automatisk at forvente et * efter det jeg har skrevet. Sådan at når jeg skriver fx. civ så opfatter den det som civ*"

Hvis du forstår hvad jeg mener!
Avatar billede region Nybegynder
28. januar 2000 - 07:45 #10
ja det kan man godt, men jeg ved ikke helt hvordan...jeg skal spørge vores edb afdeling idag.
Avatar billede privaten Nybegynder
28. januar 2000 - 09:16 #11

>> Bjarke

Gav det mening?
Avatar billede bjarke Nybegynder
28. januar 2000 - 10:12 #12
Jeps, tak skal du have, men jeg synes nu stadig at det er bøvlet. VB/VBA syntaks er lidt irriterende at læse, når den sammensættes med "&" og variabler. Hvis du skal have genereret en 8-10 liniers sql-statement på baggrund af nogle indtastede værdier og udelade ikke-indtastede værdier i andre felter, så bliver det altså bøvlet.
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