17. maj 2004 - 15:32Der 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?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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).
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.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
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"
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.