Created
January 2, 2018 22:38
-
-
Save NPS-ARCN-CAKN/41595c23a626390ed1bf93ac0c556080 to your computer and use it in GitHub Desktop.
A function to return a DataTable of metadata about a DataTable
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' <summary> | |
''' Returns a DataTable containing metadata about the structure of the submitted DataTable | |
''' </summary> | |
''' <param name="InputDataTable">DataTable to describe.</param> | |
''' <returns>DataTable</returns> | |
Public Function GetMetadataDataTable(InputDataTable As DataTable) As DataTable | |
Dim ColumnsDataTable As New DataTable("Columns") | |
'column names column | |
Dim ColumnNameColumn As New DataColumn | |
With ColumnNameColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "Column name" | |
.ColumnName = "ColumnName" | |
End With | |
'ColumnDescription column | |
Dim ColumnDescriptionColumn As New DataColumn | |
With ColumnDescriptionColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "Description" | |
.ColumnName = "ColumnDescription" | |
End With | |
'data type column | |
Dim DataTypeColumn As New DataColumn | |
With DataTypeColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "Data type" | |
.ColumnName = "DataType" | |
End With | |
'units column | |
Dim UnitsColumn As New DataColumn | |
With UnitsColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "Units" | |
.ColumnName = "Units" | |
End With | |
'allowdbnull column | |
Dim AllowDBNullColumn As New DataColumn | |
With AllowDBNullColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "AllowDBNULL" | |
.ColumnName = "AllowDBNull" | |
End With | |
'AutoIncrement column | |
Dim AutoIncrementColumn As New DataColumn | |
With AutoIncrementColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "AutoIncrement" | |
.ColumnName = "AutoIncrement" | |
End With | |
'AutoIncrementSeed column | |
Dim AutoIncrementSeedColumn As New DataColumn | |
With AutoIncrementSeedColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "AutoIncrementSeed" | |
.ColumnName = "AutoIncrementSeed" | |
End With | |
'AutoIncrementStep column | |
Dim AutoIncrementStepColumn As New DataColumn | |
With AutoIncrementStepColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "AutoIncrementStep" | |
.ColumnName = "AutoIncrementStep" | |
End With | |
'Caption column | |
Dim CaptionColumn As New DataColumn | |
With CaptionColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "Caption" | |
.ColumnName = "Caption" | |
End With | |
'ColumnMapping column | |
Dim ColumnMappingColumn As New DataColumn | |
With ColumnMappingColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "ColumnMapping" | |
.ColumnName = "ColumnMapping" | |
End With | |
'DateTimeMode column | |
Dim DateTimeModeColumn As New DataColumn | |
With DateTimeModeColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "DateTimeMode" | |
.ColumnName = "DateTimeMode" | |
End With | |
'DefaultValue column | |
Dim DefaultValueColumn As New DataColumn | |
With DefaultValueColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "DefaultValue" | |
.ColumnName = "DefaultValue" | |
End With | |
'Expression column | |
Dim ExpressionColumn As New DataColumn | |
With ExpressionColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "Expression" | |
.ColumnName = "Expression" | |
End With | |
'ExtendedProperties column | |
'Dim ExtendedPropertiesColumn As New DataColumn | |
'With ExtendedPropertiesColumn | |
' .DataType = System.Type.GetType("System.String") | |
' .Caption = "ExtendedProperties" | |
' .ColumnName = "ExtendedProperties" | |
'End With | |
'MaxLength column | |
Dim MaxLengthColumn As New DataColumn | |
With MaxLengthColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "MaxLength" | |
.ColumnName = "MaxLength" | |
End With | |
'Table column | |
Dim TableColumn As New DataColumn | |
With TableColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "Table" | |
.ColumnName = "Table" | |
End With | |
'Unique column | |
Dim UniqueColumn As New DataColumn | |
With UniqueColumn | |
.DataType = System.Type.GetType("System.String") | |
.Caption = "Unique" | |
.ColumnName = "Unique" | |
End With | |
'add the columns to the datatable | |
ColumnsDataTable.Columns.Add(ColumnNameColumn) | |
ColumnsDataTable.Columns.Add(CaptionColumn) | |
ColumnsDataTable.Columns.Add(DataTypeColumn) | |
ColumnsDataTable.Columns.Add(ColumnDescriptionColumn) | |
ColumnsDataTable.Columns.Add(UnitsColumn) | |
ColumnsDataTable.Columns.Add(AllowDBNullColumn) | |
ColumnsDataTable.Columns.Add(UniqueColumn) | |
ColumnsDataTable.Columns.Add(DefaultValueColumn) | |
ColumnsDataTable.Columns.Add(AutoIncrementColumn) | |
ColumnsDataTable.Columns.Add(AutoIncrementSeedColumn) | |
ColumnsDataTable.Columns.Add(AutoIncrementStepColumn) | |
ColumnsDataTable.Columns.Add(ColumnMappingColumn) | |
ColumnsDataTable.Columns.Add(ExpressionColumn) | |
'ColumnsDataTable.Columns.Add(ExtendedPropertiesColumn) | |
ColumnsDataTable.Columns.Add(MaxLengthColumn) | |
ColumnsDataTable.Columns.Add(TableColumn) | |
ColumnsDataTable.Columns.Add(DateTimeModeColumn) | |
Try | |
'load the columns data table with info about the input data table | |
For Each Column As DataColumn In InputDataTable.Columns | |
Dim NewRow As DataRow = ColumnsDataTable.NewRow | |
NewRow.Item("ColumnName") = Column.ColumnName | |
NewRow.Item("DataType") = Column.DataType.ToString.Replace("System.", "") | |
NewRow.Item("AllowDBNull") = Column.AllowDBNull | |
NewRow.Item("DefaultValue") = Column.DefaultValue | |
NewRow.Item("AutoIncrement") = Column.AutoIncrement | |
NewRow.Item("AutoIncrementSeed") = Column.AutoIncrementSeed | |
NewRow.Item("AutoIncrementStep") = Column.AutoIncrementStep | |
NewRow.Item("Caption") = Column.Caption | |
NewRow.Item("ColumnDescription") = Column.Caption | |
NewRow.Item("ColumnMapping") = Column.ColumnMapping | |
NewRow.Item("Expression") = Column.Expression | |
'NewRow.Item("ExtendedProperties") = Column.ExtendedProperties | |
NewRow.Item("MaxLength") = Column.MaxLength | |
NewRow.Item("Table") = Column.Table | |
NewRow.Item("Unique") = Column.Unique | |
NewRow.Item("DateTimeMode") = Column.DateTimeMode | |
'add the row to the table | |
ColumnsDataTable.Rows.Add(NewRow) | |
Next | |
Catch ex As Exception | |
MsgBox(ex.Message) | |
End Try | |
'return the metadata datatable | |
Return ColumnsDataTable | |
End Function |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment