Newsgroup: it.comp.appl.access
Titolo: R: Che fine ha fatto il segugio?

davanti a te)
Cioč, tu saresti andato ad una cena di cazzeggio con la cravatta?!!?!?
E allora sei proprio una ditta cerri altro che sib!!!
Antonio

 davanti a te)
come no!!!
--


Era arrivata per il Sito Comune la funzione "Segugio" by LoreCoro e
DittaCerri, che individuava le query inutilizzate in un DB. La funzione
arrivata per il sito dovrebbe essere incompleta.
E' pronta la versione definitiva?
--


E' pronta la versione definitiva?
Ca#@§%$&!
Ero sicuro di averla spedita, forse l'ho mandata su icda :-X
Rimedio subito.
Sarebbe bene che qualche anima pia facesse un po' di test.
Sib, a te l'onore ;-)
###begin###
Public Function Segugio(Nome As String, Optional dettagli As Boolean)
As Boolean
'serve per verificare se una query o tabella e' usata in una form o in
un Report
'se si imposta dettagli a true, vengono elencati form e report
contenenti la stringa
On Error GoTo annulla
Dim ro As Recordset
Dim f As Variant
Dim m As Module
Dim qdf As QueryDef
Dim str As String
Dim intL As Integer
Dim intP As Integer
'Dim intMas As Integer 'Serve per riaprire le maschere
'Dim strMasAp() As String 'Serve per riaprire le maschere
Segugio = False
Set ro = CurrentDb.OpenRecordset("SELECT Name, Type FROM MSysObjects
WHERE Flags = 0;", dbOpenSnapshot)
ro.MoveFirst
DoCmd.Echo False
DoCmd.SetWarnings False
'intMas = MaschereAperte(strMasAp) 'Serve per riaprire le maschere
Do Until ro.EOF
    Select Case ro!Type
        Case -32768 'form
            DoCmd.OpenForm ro!Name, acDesign, , , , acHidden
            Set f = Forms(ro!Name)
            If TrovaStringa(Nome, f.RecordSource) Or TrovaDentro(Nome,
Forms(ro!Name)) Then
                Segugio = True
                If dettagli Then Debug.Print "Form " & ro!Name & vbCr;
Else GoTo esci
            End If
            If f.HasModule Then
                Set m = f.Module
                If TrovaNelModulo(m, Nome) Then
                    Segugio = True
                    If dettagli Then Debug.Print "Modulo di classe
della form " & ro!Name & vbCr; Else GoTo esci
                End If
            End If
            DoCmd.Close acForm, ro!Name, acSaveNo
        Case -32764 'report
            DoCmd.OpenReport ro!Name, acViewDesign
            Set f = Reports(ro!Name)
            If TrovaStringa(Nome, f.RecordSource) Then
                Segugio = True
                If dettagli Then Debug.Print "Report " & ro!Name &
vbCr; Else GoTo esci
            End If
            If f.HasModule Then
                Set m = f.Module
                If TrovaNelModulo(m, Nome) Then
                    Segugio = True
                    If dettagli Then Debug.Print "Modulo di classe del
report " & ro!Name & vbCr; Else GoTo esci
                End If
            End If
            DoCmd.Close acReport, ro!Name, acSaveNo
        Case -32761 'moduli
            DoCmd.OpenModule ro!Name
            Set m = Modules(ro!Name)
            If TrovaNelModulo(m, Nome) Then
                Segugio = True
                If dettagli Then Debug.Print "Modulo " & ro!Name &
vbCr; Else GoTo esci
            End If
            DoCmd.Close acModule, ro!Name, acSaveNo
        Case 5 'query
            Set qdf = CurrentDb.QueryDefs(ro!Name)
            intP = InStr(1, qdf.SQL, "FROM", vbTextCompare) + 5
            If InStr(1, qdf.SQL, "WHERE", vbTextCompare) > 0 Then
                intL = InStr(1, qdf.SQL, "WHERE", vbTextCompare) -
(InStr(1, qdf.SQL, "FROM", vbTextCompare) + 5)
            Else
                intL = Len(qdf.SQL) - (InStr(1, qdf.SQL, "FROM",
vbTextCompare) + 5)
            End If
            str = Mid(qdf.SQL, intP, intL)
            If TrovaStringa(Nome, str) Then
                Segugio = True
                If dettagli Then Debug.Print "Query " & ro!Name &
vbCr; Else GoTo esci
            End If
        Case Else
    End Select
    ro.MoveNext
Loop
esci:
DoCmd.Echo True
DoCmd.SetWarnings True
Set ro = Nothing
Set f = Nothing
Set m = Nothing
Set qdf = Nothing
'Serve per riaprire le maschere
'If intMas > 0 Then
'    For intL = 1 To intMas
'        DoCmd.OpenForm strMasAp(intL, 1), , , strMasAp(intL, 2)
'    Next
'End If
Exit Function
annulla:
MsgBox "Si è verificato un errore (" & Err.Number & ")" &
Error(Err.Number), vbCritical + vbOKOnly, "Errore"
Resume esci
End Function
###end###
--
Lorenzo Coronati
--
ICDA Forever official member
<<...buona la pasta coi ricci>>
--