2016-07-20 3 views
0

Может ли кто-нибудь помочь мне понять, что делает этот кусок VBScript. Я теряюсь на WhereClause битогоОбъясните код VBScript

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 
+0

Вы пытаетесь объяснить это, и я скажу вам, были ли вы правы. – Lankymart

+0

WhereClause = слева .. (обратные CV, (длина CV) -1) –

ответ

0

догадка, как показано ниже ...

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 
1

Как заявил @ Dave: Они удаляют первые и последние символы из строки CVs.

Более простой подход будет использовать Mid

WhereClause = Mid(CVs, 2, Len(CVs) - 2)

Вы можете объединить все три линии, как это:

WhereClause = "TS_ID in (" & Mid(CVs, 2, Len(CVs) - 2) & ") and TS_SUPPLIER = " & Supplier 
0

Это очень характерно для языка Serena Business Composer Manager - AppScript.

Код, которым вы поделились, должен был бы подсчитать количество записей в поле Multi Relation и затем ввести значение в поле. Типичные пустые поля Multi Relational выглядят как «,,», и значения будут выглядеть примерно так: «1,34» с номерами, показывающими идентификаторы поля, на которые указывает это поле MR.

Строка where, которая строится, - это просто удаление первой и последней запятой из поля MR, а затем запрос для идентификаторов.

Дайте мне знать, если у вас все еще есть какие-либо сомнения.

Смежные вопросы