Avatar billede geertf Nybegynder
17. maj 2004 - 15:32 Der er 16 kommentarer og
1 løsning

Gemme søgekriterie fra en søgning i en tabel (Access97)

I en Access97-db vil jeg gerne gemme søgekriteriet som brugerne har anvendt til søgning på posterne. Hvordan får man fat i søgekriteriet som brugeren har indtastet?

Hilsen
Geert
17. maj 2004 - 15:34 #1
Hvor har brugeren tastet dem henne? I formularens filter? eller har du lavet en søge-formular, hvor brugeren taster i?
17. maj 2004 - 15:34 #2
Hvis du mener formularens filter, kan du referere til det vha Me.Filter
Avatar billede geertf Nybegynder
19. maj 2004 - 11:06 #3
Har ligget syg derfor den sene tilbagemelding.

Søgekriteriet er skrevet i den almindelig søgefunktion i Access. Min umiddelbare tanke var at bruge den, for udgå at skulle kode søgefunktion selv, men det er måske det letteste/eneste mulige.
Årsagen er, at jeg bliver nød til at logge alle anvendte søgekriterier (jfv. Persondataloven).
19. maj 2004 - 11:09 #4
okay, men jeg er stadig nødt til at få specificeret: Er det når brugeren benytter filter-funktionen eller kikkerten på værktøjslinien?

Filter-funktionene kan aflæses, men kikkert/søgge-funktionen kan ikke...
Avatar billede geertf Nybegynder
19. maj 2004 - 11:16 #5
Ahh, ok! men det er kikkerten, altså Søg, jeg ville anvende, men det kan jeg så ikke med mindre koder en søgeboks selv?
19. maj 2004 - 11:23 #6
hvilken version af Access, bruger du?
19. maj 2004 - 11:23 #7
sorry....det stod der i overskriften :o)
19. maj 2004 - 11:24 #8
Nej, så har du ingen mulighed for at spore det, med mindre du lver søgboksen selv.

Jeg har faktisk en gammel søgboks, som du måske kan bruge?
Avatar billede geertf Nybegynder
19. maj 2004 - 11:27 #9
Det ville da være virkelig stort. Det andet vil tage mig noget tid at komme igennem.
19. maj 2004 - 11:33 #10
ok, den er faktisk lavet i version 97, og jeg har lige hurtigt måttet lave lidt ændringer, da den var specielt tilpasset en anden applikation.

Det, du skal gøre er at copy/paste' nedenstående kode ind i en tekstfil og gemme den på harddisken (f.eks. C:\søgbox.txt).

Herefter åbner du Debug-vinduet i Access (Ctrl+G) og skriver:

Application.LoadFromtext acForm,"Søgbox","C:\Søgbox.txt"

Så skulle den ligge der.

Her kommer den:

Version = 17
VersionRequired = 17
Checksum = 878511094
Begin Form
    AllowFilters = NotDefault
    PopUp = NotDefault
    Modal = NotDefault
    RecordSelectors = NotDefault
    MaxButton = NotDefault
    MinButton = NotDefault
    ShortcutMenu = NotDefault
    AutoCenter = NotDefault
    NavigationButtons = NotDefault
    DefaultView = 0
    AllowUpdating = 2
    ScrollBars = 0
    ViewsAllowed = 1
    BorderStyle = 3
    GridX = 5
    GridY = 5
    Width = 5760
    ItemSuffix = 51
    Left = 1455
    Top = 1920
    Right = 8235
    Bottom = 5640
    TimerInterval = 100
    RecSrcDt = Begin
        0xd8575895ee6ee140
    End
    Caption ="Søg efter post"
    OnOpen ="[Event Procedure]"
    OnLoad ="[Event Procedure]"
    Begin
        Begin Rectangle
            Width = 850
            Height = 850
        End
        Begin CommandButton
            TextFontFamily = 2
            Width = 1701
            Height = 283
        End
        Begin OptionGroup
            Width = 1701
            Height = 1701
        End
        Begin TextBox
            Width = 1701
            LabelX = -1701
        End
        Begin Section
            SpecialEffect = 1
            Height = 2124
            BackColor = -2147483633
            Name ="Detail0"
            Begin
                Begin TextBox
                    Enabled = NotDefault
                    Locked = NotDefault
                    TabStop = NotDefault
                    OldBorderStyle = 0
                    OverlapFlags = 93
                    BackStyle = 0
                    Left = 90
                    Top = 45
                    Width = 5520
                    Height = 285
                    FontSize = 10
                    TabIndex = 4
                    BackColor = 12632256
                    Name ="Overskrift"
                    FontName ="Tahoma"
                End
                Begin TextBox
                    SpecialEffect = 2
                    OverlapFlags = 95
                    AccessKey = 69
                    BackStyle = 0
                    Left = 1164
                    Top = 465
                    Width = 2646
                    Name ="Kriterie"
                    FontName ="Tahoma"
                    OnKeyPress ="[Event Procedure]"
                    Begin
                        Begin Label
                            BackStyle = 0
                            OverlapFlags = 93
                            Left = 225
                            Top = 465
                            Width = 930
                            Height = 240
                            Name ="Text3"
                            Caption ="Søg &efter:"
                            FontName ="Tahoma"
                        End
                    End
                End
                Begin Label
                    BackStyle = 0
                    OverlapFlags = 95
                    Left = 225
                    Top = 705
                    Width = 2670
                    Height = 270
                    FontSize = 7
                    Name ="Text11"
                    Caption ="Brug * for at angive ukendte tegn!"
                    FontName ="Tahoma"
                End
                Begin CommandButton
                    Default = NotDefault
                    OverlapFlags = 93
                    AccessKey = 70
                    TextFontFamily = 34
                    Left = 4185
                    Top = 465
                    Width = 1320
                    Height = 315
                    FontWeight = 400
                    TabIndex = 1
                    Name ="cmdSøg"
                    Caption ="&Find"
                    OnClick ="[Event Procedure]"
                    FontName ="Tahoma"
                End
                Begin CommandButton
                    Cancel = NotDefault
                    OverlapFlags = 93
                    AccessKey = 65
                    TextFontFamily = 34
                    Left = 4188
                    Top = 1551
                    Width = 1320
                    Height = 315
                    FontWeight = 400
                    TabIndex = 3
                    Name ="cmdCancel"
                    Caption ="&Annullér"
                    OnClick ="[Event Procedure]"
                    FontName ="Tahoma"
                End
                Begin CommandButton
                    OverlapFlags = 93
                    AccessKey = 78
                    TextFontFamily = 34
                    Left = 4185
                    Top = 888
                    Width = 1320
                    Height = 315
                    FontWeight = 400
                    TabIndex = 2
                    Name ="cmdNext"
                    Caption ="Find &næste"
                    OnClick ="[Event Procedure]"
                    FontName ="Tahoma"
                End
                Begin OptionGroup
                    SpecialEffect = 3
                    OverlapFlags = 93
                    AccessKey = 83
                    Left = 2145
                    Top = 1110
                    Width = 1613
                    Height = 756
                    TabIndex = 5
                    BorderColor = 8421504
                    Name ="Retning"
                    AfterUpdate ="[Event Procedure]"
                    DefaultValue ="1"
                    Begin
                        Begin Label
                            OverlapFlags = 223
                            Left = 2220
                            Top = 975
                            Width = 1005
                            Height = 240
                            BackColor = -2147483633
                            Name ="Text1"
                            Caption ="&Søge-retning"
                            FontName ="Tahoma"
                        End
                        Begin OptionButton
                            SpecialEffect = 2
                            OverlapFlags = 87
                            Left = 2280
                            Top = 1290
                            OptionValue = 1
                            Name ="Button49"
                            Begin
                                Begin Label
                                    BackStyle = 0
                                    OverlapFlags = 87
                                    Left = 2535
                                    Top = 1260
                                    Width = 765
                                    Height = 240
                                    Name ="Text50"
                                    Caption ="Forlæns"
                                    FontName ="Tahoma"
                                End
                            End
                        End
                        Begin OptionButton
                            SpecialEffect = 2
                            OverlapFlags = 87
                            Left = 2280
                            Top = 1605
                            Height = 176
                            OptionValue = 0
                            Name ="Button47"
                            Begin
                                Begin Label
                                    BackStyle = 0
                                    OverlapFlags = 87
                                    Left = 2535
                                    Top = 1575
                                    Width = 825
                                    Height = 240
                                    Name ="Text48"
                                    Caption ="Baglæns"
                                    FontName ="Tahoma"
                                End
                            End
                        End
                    End
                End
                Begin OptionGroup
                    SpecialEffect = 3
                    OverlapFlags = 93
                    AccessKey = 216
                    Left = 210
                    Top = 1110
                    Width = 1776
                    Height = 756
                    TabIndex = 6
                    BorderColor = 8421504
                    Name ="Søgefelt"
                    AfterUpdate ="[Event Procedure]"
                    DefaultValue ="1"
                    Begin
                        Begin Label
                            OverlapFlags = 223
                            Left = 300
                            Top = 972
                            Width = 675
                            Height = 240
                            BackColor = -2147483633
                            Name ="Text42"
                            Caption ="S&øgefelt"
                            FontName ="Tahoma"
                        End
                        Begin OptionButton
                            SpecialEffect = 2
                            OverlapFlags = 87
                            Left = 390
                            Top = 1290
                            OptionValue = 1
                            Name ="button6"
                            Begin
                                Begin Label
                                    BackStyle = 0
                                    OverlapFlags = 247
                                    Left = 615
                                    Top = 1260
                                    Width = 1350
                                    Height = 240
                                    BackColor = 12632256
                                    Name ="lblAktuelt"
                                    Caption ="Aktuelt"
                                    FontName ="Tahoma"
                                End
                            End
                        End
                        Begin OptionButton
                            SpecialEffect = 2
                            OverlapFlags = 87
                            Left = 390
                            Top = 1605
                            OptionValue = 0
                            Name ="Button43"
                            Begin
                                Begin Label
                                    BackStyle = 0
                                    OverlapFlags = 247
                                    Left = 615
                                    Top = 1575
                                    Width = 900
                                    Height = 240
                                    BackColor = 12632256
                                    Name ="Text44"
                                    Caption ="Alle felter"
                                    FontName ="Tahoma"
                                End
                            End
                        End
                    End
                End
                Begin Rectangle
                    SpecialEffect = 3
                    BackStyle = 0
                    OverlapFlags = 247
                    Left = 75
                    Top = 345
                    Width = 3849
                    Height = 1644
                    BackColor = 12632256
                    BorderColor = 8421504
                    Name ="Box19"
                End
                Begin Rectangle
                    SpecialEffect = 3
                    BackStyle = 0
                    OverlapFlags = 215
                    Left = 4035
                    Top = 345
                    Width = 1614
                    Height = 1644
                    BackColor = 12632256
                    BorderColor = 8421504
                    Name ="Box46"
                End
            End
        End
    End
End
CodeBehindForm
Option Compare Database  'Use database order for string comparisons
Option Explicit

Dim Søgeform As Form
Dim Søgkriterie As String
Dim SøgeControlfelt As Control

Private Sub CaseSensitiv_AfterUpdate()
    Me![Kriterie].SetFocus
End Sub

Private Sub cmdCancel_Click()
    On Error Resume Next
    DoCmd.Close A_FORM, "Søgbox"
End Sub

Private Sub cmdNext_Click()
    DoCmd.Close
    DoCmd.FindNext
End Sub

Private Sub cmdSøg_Click()
    On Error GoTo Err_Søg
    DoCmd.Echo False
    Dim AktueltFelt As String
    Dim X
    Me.Visible = False
    Søgkriterie = Me![Kriterie]
    If Screen.ActiveForm.Name = "Biler" Then
        AktueltFelt = Screen.ActiveControl.Name
        Forms![Biler].Requery
        X = DoEvents()
        Forms![Biler](AktueltFelt).SetFocus
    End If
    DoCmd.FindRecord Me![Kriterie], A_ENTIRE, 0, CInt(Me![Retning]), True, Me![Søgefelt]
    If Not Screen.ActiveControl Like Søgkriterie Then
        MsgBox "Det lykkedes ikke systemet at finde nogle poster," & Chr(13) & Chr(10) & "som passede til søgekriteriet!", 48, "Ingen poster fundet!"
        Me.Visible = True
        Me!Kriterie.SetFocus
        DoCmd.Echo True
        Exit Sub
    End If
    Forms![Søgbox].Visible = True
    DoCmd.Close A_FORM, "Søgbox"
    DoCmd.Echo True
    Exit Sub
Err_Søg:
    DoCmd.Echo True
    Me.Visible = True
    Select Case Err
        Case 2162: MsgBox "Der kan ikke søge på de angivne argumenter!" & Chr(13) & Chr(10) & "Prøv at ændre på indstillingerne.", 48, "Kan ikke søge!"
        Case Else: MsgBox Error & Chr(13) & Chr(10) & "Fejl nr: " & Str(Err)
    End Select
    Exit Sub
End Sub

Private Sub Form_Load()
    On Error Resume Next
    Me![Overskrift] = "Søg på feltet: " & SøgeControlfelt.Name
    Me![lblAktuelt].Caption = SøgeControlfelt.Name
    Me![Kriterie] = Søgkriterie
End Sub

Private Sub Form_Open(Cancel As Integer)
'    On Error GoTo Err_Søg_Open
'    Set Søgeform = Screen.ActiveForm
'    Set SøgeControlfelt = Screen.ActiveControl
'    If Screen.ActiveForm.Tag <> "OK" Then
'        MsgBox "Kan ikke søge på dette Skærmbillede", 48, "Kan ikke søge!"
'        DoCmd.CancelEvent
'        Exit Sub
'    End If
'    If Screen.ActiveControl.Tag = "Niks" Then
'        MsgBox "Kan ikke søge på dette felt" & IIf(Screen.ActiveControl.Name = "Bilnr", Chr(13) & Chr(10) & "Indtast blot bilnummeret i feltet!", ""), 48, "Kan ikke søge!"
'        DoCmd.CancelEvent
'    End If
'
'    Exit Sub
'Err_Søg_Open:
'    MsgBox "Der er intet at søge på!", 48, "Kan ikke søge!"
'    DoCmd.CancelEvent
'    Exit Sub
End Sub
Private Sub Kriterie_KeyPress(KeyAscii As Integer)
    KeyAscii = Asc(UCase(Chr$(KeyAscii)))
End Sub

Private Sub Retning_AfterUpdate()
    Me![Kriterie].SetFocus
End Sub

Private Sub Søgefelt_AfterUpdate()
    Me![Kriterie].SetFocus
    If Søgefelt = 0 Then
        Me![Overskrift] = "Søg på feltet: " & SøgeControlfelt.Name
    Else
        Me![Overskrift] = "Søg på alle felter"
    End If
End Sub
19. maj 2004 - 11:35 #11
Herefter skal du så have lagt noget kode på søg-knappen, som gemmer kriterierne f.eks. i en tabel vha recordsets eller SQL.
19. maj 2004 - 11:37 #12
hmm, jeg kan faktisk se, at jeg oprindelig har lavet den helt tilbage i Access 2.0. Men den virker stadig.

Du kan kalde den på flere måder. Enten lægger du den som knap på værktøjslinien i stedet for kikkerten. Eller også laver du bare en kommandoknap på din formular med denne kode:
Screen.Previouscontrol.setfocus
docmd.Openform "Søgbox"
Avatar billede geertf Nybegynder
19. maj 2004 - 11:39 #13
Det må jeg sige, den er virkelig grundig! Jeg kigger på den med det samme. Tak for det.
Avatar billede geertf Nybegynder
19. maj 2004 - 11:51 #14
Ja, og så er der jo selvfølge dem her - de er jo dine. Jeg smider lige en besked om jeg kan få det til at virke. Tak.
19. maj 2004 - 11:52 #15
tak for det, men du havde ikke behøvet give mig point før du vidste om du kunne bruge det :o)
Avatar billede geertf Nybegynder
19. maj 2004 - 12:01 #16
Du svarede jo på mit spørgsmål, så derfor point. Søgeboksen må være bonus i den sammenhæng.
19. maj 2004 - 12:02 #17
tak så :o)
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