我正在使用一个名为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