VCS_Relation.bas 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. Option Compare Database
  2. Option Private Module
  3. Option Explicit
  4. Public Sub ExportRelation(ByVal rel As DAO.Relation, ByVal filepath As String)
  5. Dim fso As Object
  6. Dim OutFile As Object
  7. Set fso = CreateObject("Scripting.FileSystemObject")
  8. Set OutFile = fso.CreateTextFile(filepath, overwrite:=True, unicode:=False)
  9. OutFile.WriteLine rel.Attributes 'RelationAttributeEnum
  10. OutFile.WriteLine rel.name
  11. OutFile.WriteLine rel.table
  12. OutFile.WriteLine rel.foreignTable
  13. Dim f As DAO.Field
  14. For Each f In rel.Fields
  15. OutFile.WriteLine "Field = Begin"
  16. OutFile.WriteLine f.name
  17. OutFile.WriteLine f.ForeignName
  18. OutFile.WriteLine "End"
  19. Next
  20. OutFile.Close
  21. logger "ExportRelation", "DEBUG", "Relation " & rel.name & " exported to " & filepath
  22. End Sub
  23. Public Sub ImportRelation(ByVal filepath As String)
  24. Dim fso As Object
  25. Dim InFile As Object
  26. Set fso = CreateObject("Scripting.FileSystemObject")
  27. Set InFile = fso.OpenTextFile(filepath, iomode:=ForReading, create:=False, Format:=TristateFalse)
  28. Dim rel As DAO.Relation
  29. Set rel = New DAO.Relation
  30. rel.Attributes = InFile.readline
  31. rel.name = InFile.readline
  32. rel.table = InFile.readline
  33. rel.foreignTable = InFile.readline
  34. Dim f As DAO.Field
  35. Do Until InFile.AtEndOfStream
  36. If "Field = Begin" = InFile.readline Then
  37. Set f = New DAO.Field
  38. f.name = InFile.readline
  39. f.ForeignName = InFile.readline
  40. If "End" <> InFile.readline Then
  41. Set f = Nothing
  42. err.Raise 40000, "ImportRelation", "Missing 'End' for a 'Begin' in " & filepath
  43. End If
  44. rel.Fields.Append f
  45. End If
  46. Loop
  47. InFile.Close
  48. CurrentDb.Relations.Append rel
  49. logger "ImportRelation", "DEBUG", "Relation " & rel.name & " imported from " & filepath
  50. End Sub