MartyConnelly
martyconnelly at shaw.ca
Tue Mar 18 03:04:01 CST 2003
StaRKeY wrote:
>Hi JB,
>
>Declare a var as module and see all the methods you can use to get your work
>done... you can use the modvar.find method probably if you already know the
>procedure name and use the proccountoflines or something to loop through all
>lines and use the deleteline method from module... what it comes down to is
>looping through the proclines and delete them....
>
>I have to say it's a bit too much work to have it laid out to you for now
>but it's almost midnight and I'm going to bed;-) Maybe another member as
>some ready-made code for you..
>
>Good luck,
>Eric
>
>-----Original Message-----
>From: accessd-admin at databaseadvisors.com
>[mailto:accessd-admin at databaseadvisors.com]On Behalf Of John Bartow
>Sent: maandag 17 maart 2003 22:46
>To: AccessD
>Subject: [AccessD] Deleting an Entire Module Procedure via code
>
>
>Anyone have advice on deleting an entire module procedure via code?
>
>JB
>
>
>
Here is a starting point . I just was trying to list subroutines maybe
you can take from there.
You can also do it for forms.
Public Sub DocDatabase()
'====================================================================
' Name: DocDatabase
'
'====================================================================
On Error GoTo Err_DocDatabase
Dim dbs As Database
Dim cnt As Container
Dim doc As Document
Dim intCount As Integer
Set dbs = CurrentDb() ' use CurrentDb() to refresh Collections
Set cnt = dbs.Containers("Modules")
For Each doc In cnt.Documents
Debug.Print doc.Name
ListAllProcsOrig (doc.Name)
Next doc
Set doc = Nothing
Set cnt = Nothing
Set dbs = Nothing
Err_DocDatabase:
MsgBox Err.Number & "-" & Err.Description
GoTo Exit_DocDatabase
Exit_DocDatabase:
End Sub
Function ListAllProcsinForms(strModuleName As String)
'Purpose: lists all procedures/functions for given module
'Example: ListAllProcsinForms ("MyForm")
Dim mdlF As Form
Dim mdl As Module
Dim lngCount As Long, lngCountDecl As Long, lngI As Long
Dim strProcName As String, astrProcNames() As String
Dim intI As Integer, strMsg As String
Dim lngR As Long
' Open specified Module object.
DoCmd.OpenForm strModuleName
' Return reference to Form object.
Set mdlF = Forms(strModuleName)
' Return reference to Module object.
Set mdl = mdlF.Module
' Count lines in module.
lngCount = mdl.CountOfLines
' Count lines in Declaration section in module.
lngCountDecl = mdl.CountOfDeclarationLines
' Determine name of first procedure.
strProcName = mdl.ProcOfLine(lngCountDecl + 1, lngR)
' Initialize counter variable.
intI = 0
' Redimension array.
ReDim Preserve astrProcNames(intI)
' Store name of first procedure in array.
astrProcNames(intI) = strProcName
' Determine procedure name for each line after declarations.
For lngI = lngCountDecl + 1 To lngCount
' Compare procedure name with ProcOfLine property value.
If strProcName <> mdl.ProcOfLine(lngI, lngR) Then
' Increment counter.
intI = intI + 1
strProcName = mdl.ProcOfLine(lngI, lngR)
ReDim Preserve astrProcNames(intI)
' Assign unique procedure names to array.
astrProcNames(intI) = strProcName
End If
Next lngI
strMsg = "Procedures in module '" & strModuleName & "': " _
& vbCrLf & vbCrLf
Debug.Print "Procedures in module '" & strModuleName & "': "
For intI = 0 To UBound(astrProcNames)
strMsg = strMsg & astrProcNames(intI) & vbCrLf
'Print list in debug window:
Debug.Print astrProcNames(intI)
Next intI
' Dialog box listing all procedures in module.
MsgBox strMsg
End Function
Function ListAllProcsOrig(strModuleName As String)
'Purpose: lists all procs subroutine/functions for given module
'Example: ListAllProcs("MyModule")
Dim mdl As Module
Dim lngCount As Long, lngCountDecl As Long, lngI As Long
Dim strProcName As String, astrProcNames() As String
Dim intI As Integer, strMsg As String
Dim lngR As Long
' Open specified Module object.
DoCmd.OpenModule strModuleName
' Return reference to Module object.
Set mdl = Modules(strModuleName)
' Count lines in module.
lngCount = mdl.CountOfLines
' Count lines in Declaration section in module.
lngCountDecl = mdl.CountOfDeclarationLines
' Determine name of first procedure.
strProcName = mdl.ProcOfLine(lngCountDecl + 1, lngR)
' Initialize counter variable.
intI = 0
' Redimension array.
ReDim Preserve astrProcNames(intI)
' Store name of first procedure in array.
astrProcNames(intI) = strProcName
' Determine procedure name for each line after declarations.
For lngI = lngCountDecl + 1 To lngCount
' Compare procedure name with ProcOfLine property value.
If strProcName <> mdl.ProcOfLine(lngI, lngR) Then
' Increment counter.
intI = intI + 1
strProcName = mdl.ProcOfLine(lngI, lngR)
ReDim Preserve astrProcNames(intI)
' Assign unique procedure names to array.
astrProcNames(intI) = strProcName
End If
Next lngI
strMsg = "Procedures in module '" & strModuleName & "': " _
& vbCrLf & vbCrLf
Debug.Print "Procedures in module '" & strModuleName & "': "
For intI = 0 To UBound(astrProcNames)
strMsg = strMsg & astrProcNames(intI) & vbCrLf
'Print list in debug window:
Debug.Print astrProcNames(intI)
Next intI
' Dialog box listing all procedures in module.
MsgBox strMsg
End Function