Function DownloadRecipe()
On Error Resume Next
DownloadRecipe = False
Dim ArchiveId, DMVarName(), RecipeName, RecipeVersion
Dim list, tem1, tem2, tem3, tem4, i, obj1, sqlQuery
Dim validFlag : validFlag = True
Set obj1 = HMIRuntime.Screens("Main.Center.Center2").ScreenItems("Sel")
If obj1 Is Nothing Then
LogError "DownloadRecipe错误:未找到控件Sel"
validFlag = False
Else
RecipeName = obj1.SelText
If RecipeName = "" Then
LogError "DownloadRecipe错误:配方名称为空"
validFlag = False
End If
End If
RecipeVersion = HMIRuntime.Tags("CurrentRecipeVersion").Read
If Err.Number <> 0 Then
LogError "DownloadRecipe错误:读取标签失败 - " & Err.Description
Err.Clear
validFlag = False
End If
If Not validFlag Then Exit Function
sqlQuery = "SELECT [ArchiveID] FROM [dbo].[UAArchive] WHERE name=N'Recipe'" tem1 = SQL(sqlQuery, 1, 0)(1)
If Not IsArray(tem1) Or UBound(tem1, 2) < 0 Then
LogError "DownloadRecipe错误:未查询到Recipe的Archive记录(SQL:" & sqlQuery & ")"
Exit Function
End If
ArchiveId = tem1(0, 0, 1)
If Not IsNumeric(ArchiveId) Then
LogError "DownloadRecipe错误:ArchiveID不是有效数字 - " & ArchiveId
Exit Function
End If
sqlQuery = "SELECT [DMVarName] FROM [dbo].[UAField] " & _ "WHERE [ArchiveID] = " & CLng(ArchiveId) & " ORDER BY position ASC"
tem3 = SQL(sqlQuery, 1, 0)(1)
If Not IsArray(tem3) Then
LogError "DownloadRecipe错误:未查询到配方变量(SQL:" & sqlQuery & ")"
Exit Function
End If
ReDim DMVarName(UBound(tem3, 1))
For i = 0 To UBound(tem3, 1)
DMVarName(i) = tem3(i, 0, 1)
Next
sqlQuery = "SELECT TOP 1 * FROM [dbo].[UARecipe] " & _ "WHERE RecipeName = N'" & EscapeSQL(RecipeName) & "' " & _
"AND recipeversion = " & RecipeVersion & " " & _
"ORDER BY RecipeVersion DESC"
list = SQL(sqlQuery, 0, 0)(1)
If Err.Number <> 0 Then
LogError "DownloadRecipe错误:查询配方失败 - " & Err.Description & "(SQL:" & sqlQuery & ")"
Err.Clear
Exit Function
End If
If IsArray(list) And UBound(list) >= 0 Then
Dim maxCol : maxCol = UBound(list, 2)
If maxCol < 5 Then
LogError "DownloadRecipe错误:配方表列数不足,无法赋值变量"
Exit Function
End If
For i = 4 To maxCol - 2
If i < UBound(DMVarName) And DMVarName(i) <> "" Then
Dim tagValue : tagValue = list(0, i + 1, 1)
HMIRuntime.Tags(DMVarName(i)).Write tagValue
If Err.Number <> 0 Then
LogError "DownloadRecipe错误:写入标签" & DMVarName(i) & "失败 - " & Err.Description
Err.Clear
End If
End If
Next
HMIRuntime.Tags("DownLoadRecipe").Write RecipeName
HMIRuntime.Tags("DownLoadRecipeVersion").Write RecipeVersion
Call ViewRecipe()
Else
LogError "DownloadRecipe错误:未查询到匹配的配方(名称:" & RecipeName & ",版本:" & RecipeVersion & ")"
End If
If Err.Number <> 0 Then
LogError "DownloadRecipe错误:未知异常 - " & Err.Description
Err.Clear
End If
End Function
往期推荐
您的「」、「」都会成为我继续更新的动力,快点击右下角「」、「」、转发给朋友吧