I'm trying to script against IM_PhysicalCountWrkst_rpt but keep getting "The Module Code is Required" when calling nSetKey(). Script sample is below. We are running 5.10.4.0. Anyone have any suggestions on what to try?
Const HKEY_CURRENT_USER = &H80000001
Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
oReg.GetExpandedStringValue HKEY_CURRENT_USER,"Software\Sage Software\MAS 90 Business Desktop\Settings","MAS90RootDirectory",PathRoot
PathHome = PathRoot & "\Home"
Set oReg = Nothing
Set oScript = CreateObject ("ProvideX.Script")
oScript.Init(PathHome)
Set oSS = oScript.NewObject("SY_Session")
retVAL = oSS.nLogon()
If retVAL = 0 Then
ShowError "Logon", oSS.sLastErrorMsg
End If
retVAL = oSS.nSetCompany("TST", 1)
If retVAL = 0 Then
ShowError "SetCompany", oSS.sLastErrorMsg
End If
retVAL = oSS.nSetDate("I/M","20150128")
If retVAL = 0 Then
ShowError "SetDate", oSS.sLastErrorMsg
End If
retVAL = oSS.nSetModule("I/M")
If retVAL = 0 Then
ShowError "SetModule", oSS.sLastErrorMsg
End If
retVAL = oSS.nSetProgram(oSS.nLookupTask("IM_PhysicalCountWrkst_ui"))
If retVAL = 0 Then
ShowError "SetProgram", oSS.sLastErrorMsg
End If
Set oPhysCount = oScript.NewObject("IM_PhysicalCountWrkst_rpt", oSS)
retVAL = oPhysCount.nSelectReportSetting("STANDARD")
If retVAL = 0 Then
ShowError "SelectReportSetting", oPhysCount.sLastErrorMsg
End If
retVAL = oPhysCount.nSetKeyValue("ReportSetting$", "STANDARD")
If retVAL = 0 Then
ShowError "SetKeyValue, ReportSetting$", oPhysCount.sLastErrorMsg
End If
retVAL = oPhysCount.nSetKeyValue("RowKey$", "1")
If retVAL = 0 Then
ShowError "SetKeyValue, RowKey$", oPhysCount.sLastErrorMsg
End If
strOp = ""
retVAL = oPhysCount.nGetOptions(strOp)
If retVAL = 0 Then
ShowError "GetOptions", oPhysCount.sLastErrorMsg
End If
retVAL = oPhysCount.nSetKey() ' <-- Error here: "The Module Code is Required."
If retVAL = 0 Then
ShowError "SetKey", oPhysCount.sLastErrorMsg
End If
'
'
'
Cleanup
Sub Cleanup
If IsObject(oPhysCount) Then
oPhysCount.DropObject()
End If
oSS.nCleanup()
oSS.DropObject()
Set oPhysCount = Nothing
Set oSS = Nothing
Set oScript = Nothing
End Sub
Sub ShowError(sOperation, sMessage)
MsgBox "Error (" + sOperation + "): " + sMessage
Cleanup
WScript.Quit
End Sub