Объяснить код VBScript
Может кто-нибудь помочь мне понять, что делает этот кусок VBScript. Я теряюсь в бите WhereClause
If CVs = "," or CVs = ",," Then
ExistingSupplierCVs = 0
Else
Set CVRecords = Ext.CreateAppRecordList( ActivityTableId )
WhereClause = Left(CVs, Len(CVs)-1)
WhereClause = Right(WhereClause, Len(WhereClause)-1)
WhereClause = "TS_ID in (" & WhereClause & ") and TS_SUPPLIER = " & Supplier
If Not CVRecords.ReadWithWhere( WhereClause ) then
Call Ext.LogErrorMsg( "TeamScript Error : Cannot find " & QUOTE & WhereClause & QUOTE & " in table " & QUOTE & "USR_ACTIVITY" & QUOTE )
Exit Sub
End If
ExistingSupplierCVs = CVRecords.Length()
End If
4 ответа
Как @Dave заявил: они удаляют первый и последний символы из CVs
строка.
Более простой подход будет использовать Mid
WhereClause = Mid(CVs, 2, Len(CVs) - 2)
Вы можете объединить все три строки следующим образом:
WhereClause = "TS_ID in (" & Mid(CVs, 2, Len(CVs) - 2) & ") and TS_SUPPLIER = " & Supplier
Поскольку это AppScript (вариант VBScript для SBM), вы получите лучшие ответы, разместив его на сайте сообщества Serena (теперь часть MicroFocus).
Это очень типично для языка Serena Business Manager Composer - AppScript.
Код, которым вы поделились, будет подсчитывать количество записей в поле Multi Relation, а затем вводить значение в поле. Типичные пустые поля Multi Relational выглядят как ",," и будут иметь значения, которые будут выглядеть примерно так: "1,34" с числами, показывающими идентификаторы поля, на которое указывает это поле MR.
Строящееся предложение where является не чем иным, как простым удалением первой и последней запятой из поля MR и последующим запросом идентификаторов.
дайте мне знать, если у вас все еще есть какие-либо сомнения здесь.
Лучшее предположение, как показано ниже...
If CVs = "," or CVs = ",," Then
ExistingSupplierCVs = 0 ' if the string is empty advise that the number of CVs is zero
Else
Set CVRecords = Ext.CreateAppRecordList( ActivityTableId ) ' extract a list of CVRecords
WhereClause = Left(CVs, Len(CVs)-1) ' strip the last char from this string
WhereClause = Right(WhereClause, Len(WhereClause)-1) ' strip the first char from this string
WhereClause = "TS_ID in (" & WhereClause & ") and TS_SUPPLIER = " & Supplier ' insert the values into (presumably) a SQL query
If Not CVRecords.ReadWithWhere( WhereClause ) then ' if executing the query returns false
Call Ext.LogErrorMsg( "TeamScript Error : Cannot find " & QUOTE & WhereClause & QUOTE & " in table " & QUOTE & "USR_ACTIVITY" & QUOTE ) 'report an error and exit the subroutine.
Exit Sub
End If
ExistingSupplierCVs = CVRecords.Length() ' return the number of records from the query
End If