Gå til innhold

Anbefalte innlegg

Jeg har kommet bori et lite problem i Access, og har søkt på google og testet en rekke ulike løsninger.

 

Jeg har laget en base med flere tusen poster i, dette fører til et sterkt behov for en søke mulighet for å kunne plukke ut poster av bestemte typer.

 

Følgende felter skal kunne søkes på:

Handling, Dato, Område

 

Her er tanken at ved å klikke på søk, så kommer det opp et eget lite skjema som heter Soke.

Dato legges inn i txtFra og txtTil, som er to tekstbokser i dette skjemaet.

 

Tanken er at soke_resultat skjema skal benyttes for å vise de postene som passer etter søkene.

Til dette formål benyttes en spørring som henter soke_sporring.

 

Jeg forsøkte meg med følgende kode:

Like [forms]![soke]![txtfra] & "*"

Denne fungerer fint, men den gir bare den ene datoen.

Forsøkte med en

Between [forms]![soke]![txtfra] & "*" And [forms]![soke]![txtTil] & "*"

Men det fungerer ikke.

 

Noen forslag på noe annet enn å gjøre dette via et recordset i Visual Basic for Applications?

 

Edit: grunnen til * bak datoene, er at dersom dato feltene er tomme, så skal alle datoer aksepteres.

Det er tenkt slik at dersom du fyller inn en eller flere av søke kriteriene (dato, hendelse og område.), så skal de postene som matcher vises, og dersom ingen søkekritereie er satt ,så skal alle postene komme som resultat.

Endret av Wolverin
Lenke til kommentar
Videoannonse
Annonse
...

Jeg forsøkte meg med følgende kode:

Like [forms]![soke]![txtfra] & "*"

Denne fungerer fint, men den gir bare den ene datoen.

Forsøkte med en

Between [forms]![soke]![txtfra] & "*" And [forms]![soke]![txtTil] & "*"

Men det fungerer ikke.

7719451[/snapback]

Du er på rett spor i værtfall. Det eneste du mangler er å sortere vilkårene dine.

Når du ser på spørringen i utformningsvisning har du skrevet inn vilkåret nederst. Det vilkåret du har kommet frem til er nesten rett, bare at du må fordele der over to linjer. Linje to blir da "eller" (som d også står helt til venstre)

Første vilkår blir da som følger:

Between [forms]![soke]![txtfra] And [forms]![soke]![txtTil]

Mens vilkår 2 blir:

Like "*"

7721416[/snapback]

 

Heisann, og hjertelig takk for svar.

Problemet med å legge inn en OR, eller å legge inn på linje nummer 2, det er at da blir det slik at skrives det inn dato på feltene, så slår dem til, også slår neste vilkår inn og lister ut resten av postene som egentlig ikke skal listes ut dersom første vilkåret er utfylt.

 

Eks:

1 post er registert med dato 01.01.2007, dersom jeg skriver 01.01.2007 på txtFra og 01.01.2007 på txtTil, så skal bare denne ene posten komme frem, mens skriver jeg en OR inn, så får jeg først denne ene posten, også får jeg resten av postene etter på.

Lenke til kommentar
Heisann, og hjertelig takk for svar.

Problemet med å legge inn en OR, eller å legge inn på linje nummer 2, det er at da blir det slik at skrives det inn dato på feltene, så slår dem til, også slår neste vilkår inn og lister ut resten av postene som egentlig ikke skal listes ut dersom første vilkåret er utfylt.

7721462[/snapback]

Jepp, fant dette ut når jeg skulle teste det ut rett etter jeg postet...

Forresten så kan du forbedre den første søkestringen du hadde, som søkte etter en tekststring med

Like "*" & [forms]![soke]![txtfra] & "*"

Dermed kan den søke etter bokstaver/tall inne i feltet, og ikke bare fra begynnelsen av.

Endret av t0my
Lenke til kommentar
Heisann, og hjertelig takk for svar.

Problemet med å legge inn en OR, eller å legge inn på linje nummer 2, det er at da blir det slik at skrives det inn dato på feltene, så slår dem til, også slår neste vilkår inn og lister ut resten av postene som egentlig ikke skal listes ut dersom første vilkåret er utfylt.

7721462[/snapback]

Jepp, fant dette ut når jeg skulle teste det ut rett etter jeg postet...

Forresten så kan du forbedre den første søkestringen du hadde, som søkte etter en tekststring med

Like "*" & [forms]![soke]![txtfra] & "*"

Dermed kan den søke etter bokstaver/tall inne i feltet, og ikke bare fra begynnelsen av.

7721492[/snapback]

 

Det var en god ide. :thumbup:

Får likevel ikke til å søke bare om feltet er skrevet noe i... :(

Lenke til kommentar
Jepp, fant dette ut når jeg skulle teste det ut rett etter jeg postet...

Forresten så kan du forbedre den første søkestringen du hadde, som søkte etter en tekststring med

Like "*" & [forms]![soke]![txtfra] & "*"

Dermed kan den søke etter bokstaver/tall inne i feltet, og ikke bare fra begynnelsen av.

7721492[/snapback]

 

Jeg har laget en work-around som ordnet dette.

Laget en liten sak på komando knappen som heter cmd_sok.

Her la jeg inn følgende kode

Private Sub cmd_soke_Click()
'DoCmd.Close
   Dim stDocName As String
   Dim stLinkCriteria As String
   If Me.txtFra = "" Then
   Me.txtFra = "01.01.1900"
   Me.txtTil = Date
   End If
   stDocName = "sok_resultat"
   DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub

 

Her setter jeg altså at om datoene ikke fylles ut, så settes datoene med et område som fører til at alle datoene i basen vil være mellom disse.

 

På spørringen benyttet jeg da koden

Between [forms]![soke]![txtFra] And [forms]![soke]![txtTil]

 

Dette fungerer, men jeg var ikke fornøyd med å gjøre det slik, for det er ikke noen bra programmering slik jeg ser det.

Endret av Wolverin
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...