Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Code Block
languagesql
      'TITLE:  ATTACHMENT EXAMPLE.BAS
      'DESCRIPTION:  This macro exports attachment data for each bound
      '	attachment for every selected table in the active model.
      '	The file name and path is "C:\Attachment Data.txt"
      '
      
      
      
      ' Dim ER/Studio variables
      Dim diag As Diagram
      Dim ent As Entity
      Dim attmnt As Attachment
      Dim battmnt As BoundAttachment
      Dim mdl As Model
      Dim submdl As SubModel
      Dim so As SelectedObject
      Dim notepad As Object
      
      ' output string
      Dim outstring As String
      
      
      
      Sub Main
      
      	Set diag = DiagramManager.ActiveDiagram
      	Set mdl = diag.ActiveModel
      	Set submdl = mdl.ActiveSubModel
      
      	'loop through the selected objects
      	For Each so In submdl.SelectedObjects
      
      		'only get the entities.
      		If so.Type = 1 Then
      
      			'grab entity using the ID from the selected object
      			Set ent = mdl.Entities.Item(so.ID)
      
      			'outstring will be used to write to the text file
      			'write the entity name and table name
      			outstring = outstring & "Entity Name:  " & ent.EntityName & vbCrLf & "Table Name: " & ent.TableName & vbCrLf
      
      			'determine if there are any bound attachments
      			If ent.BoundAttachments.Count = 0 Then
      
      				outstring = outstring & vbTab & "No attachments on entity/table." & vbCrLf
      
      			Else
      
      				'loop through bound attachments
      				For Each battmnt In ent.BoundAttachments
      
      					'set attachment object to the base attachment from the data dictionary.
      					Set attmnt = battmnt.Attachment
      
      					'output the name (from the attachment in dictionary)
      					outstring = outstring & vbTab & "Attachment Name:  " & attmnt.Name & vbCrLf
      
      					'output the type the attachment belongs to (again from the dictionary)
      					outstring = outstring & vbTab & vbTab & "Parent Type:      " & attmnt.AttachmentType.Name & vbCrLf
      
      					'output the override value, this comes from the bound attachment since the value
      					'is overridden on the table
      					outstring = outstring & vbTab & vbTab & "Override value:   " & battmnt.ValueOverride & vbCrLf
      
      					'output the default value, this is from the attachment in the data dictionary.
      					outstring = outstring & vbTab & vbTab & "Default Value:    " & attmnt.ValueDefault & vbCrLf
      
      					outstring = outstring & vbCrLf
      	
      				Next
      
      			End If
      
      			outstring = outstring & vbCrLf
      
      		End If
      
      	Next
      
      	'write outstring to file
      	Open "C:\Attachment Data.txt" For Output As #1
      	Print #1, outstring
      	Close #1
      
      	MsgBox("Done!  See ""c:\Attachment Data.txt""",vbOkOnly)
      
      End Sub
      

     



'TITLE: ATTACHMENT EXAMPLE.BAS 'DESCRIPTION: This macro exports attachment data for each bound ' attachment for every selected table in the active model. ' The file name and path is "C:\Attachment Data.txt" ' ' Dim ER/Studio variables Dim diag As Diagram Dim ent As Entity Dim attmnt As Attachment Dim battmnt As BoundAttachment Dim mdl As Model Dim submdl As SubModel Dim so As SelectedObject Dim notepad As Object ' output string Dim outstring As String Sub Main Set diag = DiagramManager.ActiveDiagram Set mdl = diag.ActiveModel Set submdl = mdl.ActiveSubModel 'loop through the selected objects For Each so In submdl.SelectedObjects 'only get the entities. If so.Type = 1 Then 'grab entity using the ID from the selected object Set ent = mdl.Entities.Item(so.ID) 'outstring will be used to write to the text file 'write the entity name and table name outstring = outstring & "Entity Name: " & ent.EntityName & vbCrLf & "Table Name: " & ent.TableName & vbCrLf 'determine if there are any bound attachments If ent.BoundAttachments.Count = 0 Then outstring = outstring & vbTab & "No attachments on entity/table." & vbCrLf Else 'loop through bound attachments For Each battmnt In ent.BoundAttachments 'set attachment object to the base attachment from the data dictionary. Set attmnt = battmnt.Attachment 'output the name (from the attachment in dictionary) outstring = outstring & vbTab & "Attachment Name: " & attmnt.Name & vbCrLf 'output the type the attachment belongs to (again from the dictionary) outstring = outstring & vbTab & vbTab & "Parent Type: " & attmnt.AttachmentType.Name & vbCrLf 'output the override value, this comes from the bound attachment since the value 'is overridden on the table outstring = outstring & vbTab & vbTab & "Override value: " & battmnt.ValueOverride & vbCrLf 'output the default value, this is from the attachment in the data dictionary. outstring = outstring & vbTab & vbTab & "Default Value: " & attmnt.ValueDefault & vbCrLf outstring = outstring & vbCrLf Next End If outstring = outstring & vbCrLf End If Next 'write outstring to file Open "C:\Attachment Data.txt" For Output As #1 Print #1, outstring Close #1 MsgBox("Done! See ""c:\Attachment Data.txt""",vbOkOnly) End Sub