Avatar billede ingolf Nybegynder
30. september 2004 - 10:21 Der er 7 kommentarer og
1 løsning

Oprydning i forespørgsler på en nem måde

Jeg har en del forespørgsler liggende som ikke anvendes længere, og som jeg ønsker at fjerne.
Hvordan finder man ud af på en let måde hvilke forespørgsler der er i brug? Kan man ikke undgå at skulle gå ind i hver enkelt rapport og formular for at se hvilken forespørgsel de bygger på?
30. september 2004 - 13:48 #1
I Access 2003 er der en funktion til at få listet alle relaterede objekter. Så jeg går ud fra, at du ikke bruger Access 2003?
30. september 2004 - 13:53 #2
Du kan lægge denne funktion i et modul (kræver reference til DAO):

Public Function SøgEfterOrd(Søgord As String, Optional Erstat_Med As String) As Boolean
'*** Denne funktion søger i alle forespørgsler efter et givent ord (f.eks. en bestelt tabel)
'*** Endvidere søger den i Recordsource på forms og reports
'*** Endvidere søger den på kombobokse og listbokse
    On Error Resume Next
    Dim qdef As QueryDef
    Dim frm As Form, rpt As Report
    Dim ctrl As Control
    Dim n As Integer
    DoCmd.Echo False
   
    'forespørgsler
    For Each qdef In CurrentDb.QueryDefs
        If InStr(1, qdef.SQL, Søgord) > 0 Then
            SøgEfterOrd = True
            Debug.Print "Query", qdef.Name, "SQL"
        End If
    Next qdef
   
    'forms
    For n = 0 To CurrentProject.AllForms.Count - 1
        DoCmd.OpenForm CurrentProject.AllForms(n).Name, acDesign, , , , acHidden
        Set frm = Forms(CurrentProject.AllForms(n).Name)
        If InStr(1, frm.RecordSource, Søgord) > 0 Then
            SøgEfterOrd = True
            Debug.Print "Form", frm.Name, "Recordsource"
        End If
        'controls
        For Each ctrl In frm
            If ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
                If InStr(1, ctrl.RowSource, Søgord) > 0 Then
                    SøgEfterOrd = True
                    Debug.Print "Form", frm.Name, ctrl.Name, "Combo-Rowsource"
                End If
            End If
        Next ctrl
       
       
        Set frm = Nothing
        DoCmd.Close acForm, CurrentProject.AllForms(n).Name, acSaveNo
    Next n
   
    'rapporter
    For n = 0 To CurrentProject.AllReports.Count - 1
        DoCmd.OpenReport CurrentProject.AllReports(n).Name, acViewDesign
        Set rpt = Reports(CurrentProject.AllReports(n).Name)
        If InStr(1, rpt.RecordSource, Søgord) > 0 Then
            SøgEfterOrd = True
            Debug.Print "Report", rpt.Name, "Recordsource"
        End If
       
        'Controls
        For Each ctrl In rpt
            If ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
                If InStr(1, ctrl.RowSource, Søgord) > 0 Then
                    SøgEfterOrd = True
                    Debug.Print "Report", rpt.Name, ctrl.Name, "Combo-Rowsource"
                End If
            End If
        Next ctrl
       
        Set rpt = Nothing
        DoCmd.Close acReport, CurrentProject.AllReports(n).Name, acSaveNo
    Next n
    DoCmd.Echo True
End Function


Herefter kan du - i Immidiate-vinduet (Ctrl-G) - skrive:
call SøgEfterOrd("Din forespørgsel")

NB: Metoden finder dog ikke de steder i din VBA-kode, hvor forespørgslen indgår. Disse skal søges manuelt i VBA-editoren
Avatar billede ingolf Nybegynder
30. september 2004 - 13:53 #3
jeg anvender Access 2002
30. september 2004 - 14:00 #4
ok, så skulle min funktion kunne bruges (husk at sætte referencen til DAO)
Avatar billede ingolf Nybegynder
30. september 2004 - 14:03 #5
thomasjepsen
Det skal jeg have nogle dage til at afprøve. Så hvis du kan vente. Men det ser interessant ud.
30. september 2004 - 19:35 #6
sæ'føli :o)
Avatar billede ingolf Nybegynder
23. september 2005 - 22:16 #7
Undskyld mit fravær i længere tid. Du skal have dine points. Tak for svaret.
25. september 2005 - 14:26 #8
Hvad betyder et år fra eller til, mellem venner? :o)

tak for point :)
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

IT-JOB

IT-Universitetet i København

CIO

Allerød Kommune

Digitaliseringschef

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Faglig teamleder til styring og kvalitetssikring for Rekvirentteam i Forsvaret