2016-07-20 4 views
0

Kann jemand mir helfen zu verstehen, was dieser Teil von VBScript tut. Ich werde auf der Whereclause verloren BitErklären VBScript-Code

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

Sie versuchen, es zu erklären, und ich werde Ihnen sagen, wenn Sie Recht hatten. – Lankymart

+0

WhereClause = von links .. (CVs zurückgeben, (Länge der CVs) -1) –

Antwort

0

beste Vermutung ist als unten ...

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

Wie @ Dave sagte: Sie sind die erste und letzte Zeichen aus dem CVs Zeichenfolge zu entfernen.

wäre ein einfacher Ansatz zu verwenden sein Mid

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

Sie alle drei Zeilen wie diese verbinden könnte:

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

Dies ist sehr typisch für die Serena Business Manager Composer Sprache - AppScript.

Der Code, den Sie geteilt haben, wäre, die Anzahl der Datensätze in einem Multi Relation Feld zu zählen und dann den Wert in ein Feld einzugeben. Ein typisches leeres Multi-Relational-Feld sieht wie dieses ",," aus und wird in etwa so aussehen ", 1,34," mit den Zahlen, die die IDs des Feldes zeigen, auf das dieses MR-Feld zeigt.

Die where-Klausel, die erstellt wird, ist nichts anderes als einfach das erste und das letzte Komma aus dem MR-Feld zu entfernen und dann nach den IDs abzufragen.

lassen Sie mich wissen, wenn Sie noch irgendwelche Zweifel hier haben.