嵌套循环附加到文件

时间:2017-10-25 14:01:01

标签: vbscript

我正在使用一个名为Chronoscan的软件,它使用的是VBScript。

我正在尝试创建并附加到文件,这部分是成功的。但是,我试图根据子表来设置一个关于是否导出数据的参数。

首先,我计算一个名为' batch'的表中包含的记录数。 (唯一的id)并将此循环与记录号我分配变量,在这个循环中我有另一个循环,它对名为' Grid'的子表做同样的事情。再次分配变量。然后我将这些变量写入文件。因此,我正在为其父级中保存的每个记录写入子表中保存的记录数。

我真正想做的是反对子表,只有在符合我的论点时才写出记录。

子表有一个名为SkuType的字段,它有3个可能的值M,A或NULL。

我的论证需要是,如果子表的值为M,则写入记录,否则,如果子表在与其关联的任何记录中没有M值,则只写来自子表的第一条记录并忽略其余部分。

请参阅下面的代码示例,该代码适用于从子表中导出所有记录。

Dim fso
Dim FilePathName
Dim FilePath
Dim NumDocs
Dim numRows
Dim Station
Dim StationDate
Dim StationTime
Dim StationName
Dim Exp

GridPanel = 1 'first panel
Set Batch = ChronoApp.GetCurrentBatch
CurrentBatchname = Batch.Getname
NumDocs = Batch.GetDocCount

'Set output filename and path here
Station = ChronoApp.GetVariableValue("station_user")
StationDate = Left(ChronoApp.GetVariableValue("station_date_full"), 10)
StationName = ChronoApp.GetVariableValue("station_name")

Set fso = CreateObject("Scripting.FileSystemObject")

'Loop the batch here
For numDoc = 0 To NumDocs-1
    FilePath = "C:\Users\" & Station & "\Google Drive\Driver Scans\ChronoPlans\" &_
        Left(Batch.GetUserField(numDoc, "Movement Date"),2) &_
        Mid(Batch.GetUserField(numDoc, "Movement Date"),4,2) &_
        Right(Batch.GetUserField(numDoc, "Movement Date"),2) & "\"

    FilePathName = FilePath & StationName & "_" & StationDate & ".CSV"

    If Not fso.FolderExists(FilePath) Then FSO.CreateFolder (FilePath) 'create folder if it does not exist
    Set inputFile = fso.OpenTextFile(FilePathName, 8, True)

    'Get header level fields here 
    StationTime= Left(ChronoApp.GetVariableValue("station_date_full"), 16)

    'Loop grid here   
    numRows = Batch.GetXgridRowCount (numDoc, GridPanel)
    For row = 0 To numRows-1
        'Get grid level fields here
        SkuType = Batch.GetXgridFieldValue (numDoc, GridPanel, row, "SkuType") 
'Get Serial
        SKU = Batch.GetXgridFieldValue (numDoc, GridPanel, row, "SKU") 

        'Write to file here
        inputFile.WriteLine(_
            Chr(34) & SKU & Chr(34) &  "," &_
            Chr(34) & StationTime & Chr(34)& "," &_
            Chr(34) & SkuType & Chr(34) )
    Next 'loop Grid
    inputFile.Close 
Next 'Loop Batch
'Now cleanup
inputFile.Close 
Set inputFile = Nothing
Set fso = Nothing

0 个答案:

没有答案