392 lines
17 KiB
VB.net
392 lines
17 KiB
VB.net
|
|
Imports UTS_Core.Database
|
|||
|
|
Imports UTS_Core.UTSModule.DbTableModel.Customer
|
|||
|
|
Imports UTS_Core.UTSModule.Test
|
|||
|
|
Imports UTS_Core.UTSModule.Test.TestResult
|
|||
|
|
|
|||
|
|
Public Class AttributeTest
|
|||
|
|
|
|||
|
|
Enum ColNames
|
|||
|
|
No
|
|||
|
|
Content
|
|||
|
|
DataSource
|
|||
|
|
SendData
|
|||
|
|
PassResult
|
|||
|
|
RetryCount
|
|||
|
|
RetryInterval
|
|||
|
|
ReadInterval
|
|||
|
|
OperatingMode
|
|||
|
|
Lower
|
|||
|
|
Upper
|
|||
|
|
TestVal
|
|||
|
|
TestResult
|
|||
|
|
IsRecord
|
|||
|
|
RecordName
|
|||
|
|
Max
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
Public Val_mac As String
|
|||
|
|
Public Val_version As String
|
|||
|
|
Public Val_voltage As String
|
|||
|
|
Public Val_tempre As String
|
|||
|
|
Public Val_humiture As String
|
|||
|
|
Public Val_keyleft As String
|
|||
|
|
Public Val_keyright As String
|
|||
|
|
Public Val_pir As String
|
|||
|
|
|
|||
|
|
Public Userkeyval_Key As IO.Ports.SerialPort
|
|||
|
|
Public Userkeyval_Rictext As RichTextBox
|
|||
|
|
Public cmdcolor As Color
|
|||
|
|
Public txtcolor As Color
|
|||
|
|
|
|||
|
|
Public Userkeyval_ComboBox As ComboBox
|
|||
|
|
Public Userkeyval_ProgressBar As ProgressBar
|
|||
|
|
Public Userkeyval_Station As Label
|
|||
|
|
Public Userkeyval_PASS As Label
|
|||
|
|
Public Userkeyval_StepTip As Label
|
|||
|
|
Public Userkeyval_Tip As Label
|
|||
|
|
Public Userkeyval_check As CheckBox
|
|||
|
|
Public Userkeyval_grid As FlexCell.Grid
|
|||
|
|
|
|||
|
|
Public Userkeyval_TestTable As TestResult
|
|||
|
|
|
|||
|
|
Sub New(ByRef grid As FlexCell.Grid)
|
|||
|
|
Userkeyval_grid = grid
|
|||
|
|
UpdateStepTestRecord1()
|
|||
|
|
DefaultData()
|
|||
|
|
Userkeyval_TestTable = New TestResult
|
|||
|
|
End Sub
|
|||
|
|
#Region "初始化表格"
|
|||
|
|
Public Sub UpdateStepTestRecord1()
|
|||
|
|
With Userkeyval_grid
|
|||
|
|
.AutoRedraw = False
|
|||
|
|
'.AutoSize = True
|
|||
|
|
.Cols = ColNames.Max
|
|||
|
|
.Rows = 1
|
|||
|
|
.ExtendLastCol = True '最后一列自动扩充
|
|||
|
|
.DisplayRowNumber = True '首列显示数字
|
|||
|
|
|
|||
|
|
For col As Integer = 0 To ColNames.Max - 1
|
|||
|
|
.Cell(0, col).Text = [Enum].GetName(GetType(ColNames), col) '设置列名
|
|||
|
|
.Column(col).CellType = FlexCell.CellTypeEnum.TextBox '设置列型
|
|||
|
|
If col = ColNames.Content OrElse col = ColNames.SendData Then
|
|||
|
|
.Column(col).Width = 140 '设置列宽
|
|||
|
|
Else
|
|||
|
|
.Column(col).Width = 70 '设置列宽
|
|||
|
|
End If
|
|||
|
|
.Column(col).Alignment = FlexCell.AlignmentEnum.RightCenter '设置对齐位置
|
|||
|
|
Next
|
|||
|
|
.ForeColorComment = Color.Blue
|
|||
|
|
|
|||
|
|
' .FrozenCols = ColNames.Description '冻结列
|
|||
|
|
|
|||
|
|
.AutoRedraw = True
|
|||
|
|
.Refresh()
|
|||
|
|
End With
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
#Region "加載表格數據"
|
|||
|
|
Public Sub DefaultData()
|
|||
|
|
|
|||
|
|
Dim SendDatalist As New List(Of List(Of String))
|
|||
|
|
UartSendDataList(SendDatalist, "确认设备MAC地址", "设备", "mac", "", "5", "100", "", "len", "", "", "", "", "Y", "DUT_SN")
|
|||
|
|
UartSendDataList(SendDatalist, "确认设备固件版本", "设备", "version", "", "5", "100", "", "comparison", "0.1.1.1", "0.1.1.1", "", "", "Y", "FW_Ver")
|
|||
|
|
UartSendDataList(SendDatalist, "确认设备电压", "设备", "voltage", "", "5", "100", "", "scope", "1.8", "2.3", "", "", "Y", "Volt")
|
|||
|
|
UartSendDataList(SendDatalist, "确认设备温度", "设备", "tempre", "", "5", "100", "", "null", "", "", "", "", "Y", "DUT_Temp")
|
|||
|
|
UartSendDataList(SendDatalist, "确认设备湿度", "设备", "humiture", "", "5", "100", "", "null", "", "", "", "", "Y", "DUT_Humid")
|
|||
|
|
UartSendDataList(SendDatalist, "确认环境温度", "uts", "tempre", "", "", "", "", "null", "", "", "", "", "Y", "Enov_Temp")
|
|||
|
|
UartSendDataList(SendDatalist, "确认环境湿度", "uts", "humiture", "", "", "", "", "null", "", "", "", "", "Y", "Enov_Humdi")
|
|||
|
|
UartSendDataList(SendDatalist, "确认温度误差", "设备-uts", "4", "6", "", "", "", "null", "", "", "", "", "Y", "Diff_Temp")
|
|||
|
|
UartSendDataList(SendDatalist, "确认湿度误差", "设备-uts", "5", "7", "", "", "", "null", "", "", "", "", "Y", "Diff_Humidi")
|
|||
|
|
UartSendDataList(SendDatalist, "确认PIR数值", "设备", "pir", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "提示:请打开PIR窗口", "设备", "tip", "", "", "", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认PIR数值", "设备", "pir", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "提示:请关闭PIR窗口", "设备", "tip", "", "", "", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认PIR数值", "设备", "pir", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认左键键值", "设备", "keyleft", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认右键键值", "设备", "keyright", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "提示:请按下左键", "设备", "tip", "", "", "", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认左键键值", "设备", "keyleft", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认右键键值", "设备", "keyright", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "提示:请按下右键", "设备", "tip", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
|
|||
|
|
UartSendDataList(SendDatalist, "确认左键键值", "设备", "keyleft", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认右键键值", "设备", "keyright", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "提示:请松开按键", "设备", "tip", "", "", "", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认左键键值", "设备", "keyleft", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "确认右键键值", "设备", "keyright", "", "5", "100", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "读取平均电流", "uts", "run", "", "", "", "", "null", "", "", "", "", "", "")
|
|||
|
|
UartSendDataList(SendDatalist, "读取峰值电流", "uts", "current", "", "", "", "", "null", "", "", "", "", "", "")
|
|||
|
|
Grid5AddRow(SendDatalist)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Function GetDeviceData(rowid As Integer, attri As String) As Boolean
|
|||
|
|
If attri.ToLower.Equals("mac") Then
|
|||
|
|
Return checkoutRusli(Val_mac, rowid)
|
|||
|
|
ElseIf attri.ToLower.Equals("version") Then
|
|||
|
|
'SetAttriGridt(Userkeyval_grid, rowid, ColNames.TestVal, )
|
|||
|
|
Return checkoutRusli(Val_version, rowid)
|
|||
|
|
ElseIf attri.ToLower.Equals("voltage") Then
|
|||
|
|
Return checkoutRusli(Val_voltage, rowid)
|
|||
|
|
ElseIf attri.ToLower.Equals("tempre") Then
|
|||
|
|
Return checkoutRusli(Val_tempre, rowid)
|
|||
|
|
ElseIf attri.ToLower.Equals("humiture") Then
|
|||
|
|
Return checkoutRusli(Val_humiture, rowid)
|
|||
|
|
ElseIf attri.ToLower.Equals("pir") Then
|
|||
|
|
Return checkoutRusli(Val_pir, rowid)
|
|||
|
|
ElseIf attri.ToLower.Equals("keyleft") Then
|
|||
|
|
Return checkoutRusli(Val_keyleft, rowid)
|
|||
|
|
ElseIf attri.ToLower.Equals("keyright") Then
|
|||
|
|
Return checkoutRusli(Val_keyright, rowid)
|
|||
|
|
ElseIf attri.ToLower.Equals("tip") Then
|
|||
|
|
Settiptext(Userkeyval_Tip, Userkeyval_grid.Cell(rowid, ColNames.Content).Text.Trim)
|
|||
|
|
Return True
|
|||
|
|
End If
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Function checkoutRusli(Attri As String, rowid As Integer) As Boolean
|
|||
|
|
Dim celltxt As String = Userkeyval_grid.Cell(rowid, ColNames.OperatingMode).Text.Trim
|
|||
|
|
SetAttriGridt(Userkeyval_grid, rowid, ColNames.TestVal, Attri)
|
|||
|
|
If celltxt.Equals("len") Then
|
|||
|
|
If Attri.Length = 6 Then
|
|||
|
|
Return True
|
|||
|
|
Else
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
ElseIf celltxt.Equals("comparison") Then
|
|||
|
|
Dim Lower As String = Userkeyval_grid.Cell(rowid, ColNames.Lower).Text.Trim
|
|||
|
|
Dim Upper As String = Userkeyval_grid.Cell(rowid, ColNames.Upper).Text.Trim
|
|||
|
|
If Attri.Contains(Lower) OrElse Attri.Contains(Upper) Then
|
|||
|
|
Return True
|
|||
|
|
Else
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
ElseIf celltxt.Equals("scope") Then
|
|||
|
|
Dim Attriint As Double = 0
|
|||
|
|
Dim Lowerint As Double = 0
|
|||
|
|
Dim Upperint As Double = 0
|
|||
|
|
|
|||
|
|
If Not Double.TryParse(Attri, Attriint) OrElse Not Double.TryParse(Attri, Lowerint) OrElse Not Double.TryParse(Attri, Lowerint) Then
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
If Attriint > Lowerint OrElse Attriint < Upperint Then
|
|||
|
|
Return False
|
|||
|
|
Else
|
|||
|
|
Return True
|
|||
|
|
End If
|
|||
|
|
ElseIf celltxt.Equals("Null") Then
|
|||
|
|
Return True
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Function UartSendDataList(ByRef SendDatalist As List(Of List(Of String)), ParamArray ptr() As String) As List(Of String)
|
|||
|
|
|
|||
|
|
Dim Datalist As New List(Of String)
|
|||
|
|
Datalist.AddRange(ptr)
|
|||
|
|
SendDatalist.Add(Datalist)
|
|||
|
|
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
Public Sub Grid5AddRow(SendDatalist As List(Of List(Of String)))
|
|||
|
|
If SendDatalist.Count < 1 Then Return
|
|||
|
|
|
|||
|
|
For rowindex As Integer = 0 To SendDatalist.Count - 1
|
|||
|
|
|
|||
|
|
Dim Datalist As List(Of String) = SendDatalist.Item(rowindex)
|
|||
|
|
|
|||
|
|
|
|||
|
|
AddRowToTable(Userkeyval_grid, Datalist)
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Public Sub AddRowToTable(tablegrid As FlexCell.Grid, Datalist As List(Of String))
|
|||
|
|
tablegrid.AddItem("")
|
|||
|
|
For colid As Integer = 1 To ColNames.Max - 1
|
|||
|
|
tablegrid.Cell(tablegrid.Rows - 1, colid).Text = Datalist.Item(colid - 1)
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
#Region "流程动作"
|
|||
|
|
|
|||
|
|
Delegate Sub IPSettiptext(tablegrid As Label, txt As String)
|
|||
|
|
Public Sub Settiptext(tablegrid As Label, txt As String)
|
|||
|
|
If tablegrid.InvokeRequired Then
|
|||
|
|
tablegrid.Invoke(New IPSettiptext(AddressOf Settiptext), New Object() {tablegrid, txt})
|
|||
|
|
Else
|
|||
|
|
tablegrid.Text = txt
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Delegate Sub IPSetAttriGridt(tablegrid As FlexCell.Grid, trowel As Integer, tcol As Integer, txt As String)
|
|||
|
|
Public Sub SetAttriGridt(tablegrid As FlexCell.Grid, trowel As Integer, tcol As Integer, txt As String)
|
|||
|
|
If tablegrid.InvokeRequired Then
|
|||
|
|
tablegrid.Invoke(New IPSetAttriGridt(AddressOf SetAttriGridt), New Object() {tablegrid, trowel, tcol, txt})
|
|||
|
|
Else
|
|||
|
|
tablegrid.Cell(trowel, tcol).Text = txt
|
|||
|
|
If trowel = ColNames.TestResult Then
|
|||
|
|
Userkeyval_PASS.Text = txt
|
|||
|
|
If txt.ToLower.Equals("pass") Then
|
|||
|
|
Userkeyval_PASS.BackColor = Color.Green
|
|||
|
|
ElseIf txt.ToLower.Equals("false") Then
|
|||
|
|
Userkeyval_PASS.BackColor = Color.Red
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Userkeyval_ProgressBar.Value =trowel
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Sub clearGridResult(tablegrid As FlexCell.Grid)
|
|||
|
|
For rowid As Integer = 1 To tablegrid.Rows - 1
|
|||
|
|
SetAttriGridt(tablegrid, rowid, ColNames.TestResult, "")
|
|||
|
|
SetAttriGridt(tablegrid, rowid, ColNames.TestVal, "")
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Function ADDTestRecordVal(testattribute As TestTableAttribute) As Dictionary(Of String, String)
|
|||
|
|
Dim dic As New Dictionary(Of String, String) From {
|
|||
|
|
{$"{TestLogTable.ColNames.UserID}", testattribute.UserID.ToString()},
|
|||
|
|
{$"{TestLogTable.ColNames.ServiceID}", testattribute.ServiceID.ToString()},
|
|||
|
|
{$"{TestLogTable.ColNames.DUT_SN}", testattribute._dutSn},
|
|||
|
|
{$"{TestLogTable.ColNames.AppName}", testattribute.AppName},
|
|||
|
|
{$"{TestLogTable.ColNames.TestPlan}", testattribute.TestPlan},
|
|||
|
|
{$"{TestLogTable.ColNames.StartTime}", testattribute.StartTime.ToString("yyyy-MM-dd HH:mm:ss")},
|
|||
|
|
{$"{TestLogTable.ColNames.UsedTime}", testattribute.TotalSeconds.ToString("F2")},
|
|||
|
|
{$"{TestLogTable.ColNames.TestResult}", IIf(testattribute.TestResult = TestResultEnum.Fail, 0, 1).ToString()},
|
|||
|
|
{$"{TestLogTable.ColNames.ErrCode}", testattribute.ErrCode},
|
|||
|
|
{$"{TestLogTable.ColNames.ProductionLineID}", testattribute.ProductionLineID.ToString()},
|
|||
|
|
{$"{TestLogTable.ColNames.OrderID}", testattribute.OrderID.ToString()}
|
|||
|
|
}
|
|||
|
|
dic.Add($"{TestLogTable.ColNames.FailSteps}", testattribute.rownum.ToString())
|
|||
|
|
dic.Add($"{TestLogTable.ColNames.FailMsg}", testattribute.TertResult & testattribute.UpVal & testattribute.loadVal)
|
|||
|
|
|
|||
|
|
For Each keyValue As KeyValuePair(Of String, String) In testattribute.AddSelf
|
|||
|
|
If dic.ContainsKey(keyValue.Key) Then
|
|||
|
|
dic(keyValue.Key) = keyValue.Value
|
|||
|
|
Else
|
|||
|
|
dic.Add(keyValue.Key, keyValue.Value)
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
Return dic
|
|||
|
|
End Function
|
|||
|
|
Public Sub UpdateTestLogToRemote(db As DbExecutor, dbName As String, tbName As String, result As TestTableAttribute)
|
|||
|
|
Dim field As Dictionary(Of String, String) = ADDTestRecordVal(result)
|
|||
|
|
|
|||
|
|
'新增不存在的字段
|
|||
|
|
CheckTestLogFiledToRemote(db, dbName, tbName, field)
|
|||
|
|
|
|||
|
|
'添加测试记录
|
|||
|
|
Dim cmdText As String = db.CmdHelper.DbInsert(dbName, tbName, field)
|
|||
|
|
db.ExecuteNonQuery(cmdText)
|
|||
|
|
End Sub
|
|||
|
|
#End Region
|
|||
|
|
''' <summary>
|
|||
|
|
''' 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长
|
|||
|
|
''' </summary>
|
|||
|
|
''' <param name="db">数据库执行器</param>
|
|||
|
|
''' <param name="dbName">数据库名</param>
|
|||
|
|
''' <param name="tbName">数据表名</param>
|
|||
|
|
''' <param name="field">测试记录字段集合</param>
|
|||
|
|
Public Shared Sub CheckTestLogFiledToRemote(db As DbExecutor, dbName As String, tbName As String, field As Dictionary(Of String, String))
|
|||
|
|
Dim dtCol As DataTable = db.ExecuteDataTable(db.CmdHelper.DbSearchAll(dbName, tbName, "1 = 0"))
|
|||
|
|
|
|||
|
|
Dim fieldName As List(Of String) = field.Keys.ToList
|
|||
|
|
Dim typeString As String
|
|||
|
|
Dim length As Integer
|
|||
|
|
For Each colName As String In fieldName
|
|||
|
|
If String.IsNullOrWhiteSpace(colName) Then Continue For '剔除无效数据库字段名
|
|||
|
|
|
|||
|
|
If dtCol.Columns.Contains(colName) Then '当前数据表是否已经存在对应列信息
|
|||
|
|
Select Case dtCol.Columns(colName).DataType.Name
|
|||
|
|
Case "String" '仅处理VarChar类型
|
|||
|
|
If field(colName).Length > dtCol.Columns(colName).MaxLength Then
|
|||
|
|
length = GetFiledLength(field(colName).Length)
|
|||
|
|
If length = -1 Then
|
|||
|
|
Throw New Exception($"字段[{colName}] 超过最大长度2048的限制,无法入库!")
|
|||
|
|
Else
|
|||
|
|
typeString = $"varchar({length})"
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'修改列字段长度
|
|||
|
|
db.ExecuteNonQuery($"Call `{dbName}`.`AlterTestLogFiled`('{dbName}','{tbName}','{colName}','{length}')")
|
|||
|
|
End If
|
|||
|
|
Case Else
|
|||
|
|
Console.WriteLine(colName & ":" & dtCol.Columns(colName).DataType.Name)
|
|||
|
|
End Select
|
|||
|
|
Else
|
|||
|
|
length = GetFiledLength(field(colName).Length)
|
|||
|
|
If length = -1 Then
|
|||
|
|
Throw New Exception($"字段[{colName}] 超过最大长度4096的限制,无法入库!")
|
|||
|
|
Else
|
|||
|
|
typeString = $"varchar({length})"
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'插入字段语句
|
|||
|
|
db.ExecuteNonQuery($"Call `{dbName}`.`AlterTestLogFiled`('{dbName}','{tbName}','{colName}','{length}')")
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
Private Shared Function GetFiledLength(len As Integer) As Integer
|
|||
|
|
Dim result As Integer
|
|||
|
|
If len = 0 Then
|
|||
|
|
result = 8
|
|||
|
|
ElseIf len <= 2048 Then
|
|||
|
|
If len Mod 8 = 0 Then
|
|||
|
|
result = len
|
|||
|
|
Else
|
|||
|
|
result = ((len \ 8) + 1) * 8
|
|||
|
|
End If
|
|||
|
|
Else
|
|||
|
|
result = -1
|
|||
|
|
End If
|
|||
|
|
Return result
|
|||
|
|
End Function
|
|||
|
|
End Class
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Class TestTableAttribute
|
|||
|
|
Public UserID As String
|
|||
|
|
Public ServiceID As String
|
|||
|
|
Public _dutSn As String
|
|||
|
|
Public AppName As String
|
|||
|
|
Public TestPlan As String
|
|||
|
|
Public StartTime As Date
|
|||
|
|
Public TotalSeconds As Double
|
|||
|
|
Public TestResult As TestResultEnum
|
|||
|
|
Public ErrCode As String
|
|||
|
|
Public ProductionLineID As Integer
|
|||
|
|
Public OrderID As Integer
|
|||
|
|
|
|||
|
|
Public rownum As Integer
|
|||
|
|
Public TertResult As String
|
|||
|
|
Public UpVal As String
|
|||
|
|
Public loadVal As String
|
|||
|
|
|
|||
|
|
Public AddSelf As Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
Public Sub New()
|
|||
|
|
AddSelf = New Dictionary(Of String, String)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Sub AddSelfAttribute(clunm As String, val As String)
|
|||
|
|
AddSelf.Add(clunm, val)
|
|||
|
|
End Sub
|
|||
|
|
Public Sub AddSelfClear()
|
|||
|
|
AddSelf.Clear()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Class
|
|||
|
|
|