Description
A log table can have a tree-like structure, that is, its rows can have child rows (in this case, the parent row is called the log folder). For example, the script log can contain folders, which you have created using the Log.CreateFolder or Log.AppendFolder method.
The ChildRowCount property returns the total number of child rows of the given table row. To obtain a single child row by its index, use the ChildRow property.
Declaration
LogTableRowObj.ChildRowCount
| Read-Only Property | Integer | 
| LogTableRowObj | An expression, variable or parameter that specifies a reference to a LogTableRow object | |||
Applies To
The property is applied to the following object:
Property Value
An integer number that signifies the total number of child rows for the given table row.
Example
The following example iterates through log rows and posts information they contain to an external text file.
JavaScript
var ExportFile;
function ProcessRows()
{
// Obtains a log item
var LogItem = Project.Logs.LogItem(0);
// Checks whether the log item’s data scheme corresponds to the table
var LogData = LogItem.Data(0);
DType = LogData.Scheme.DataType;
if (DType == 0)
{
// Opens a text file for recording
ExportFileName = "D:\\Work Folder\\ExportedLog\\LogRows.txt";
FS = getActiveXObject("Scripting.FileSystemObject");
ExportFile = FS.CreateTextFile(ExportFileName, true);
// Iterates through the log table rows and exports them to the external file
for (var i = 0; i < LogData.RowCount; i++)
{
// Obtains the current row
Row = LogData.Rows(i);
ExportLog(Row, LogData);
}
// Closes the file
ExportFile.Close();
}
}
function ExportLog(ALogRow, ALogData)
{
var Scheme = ALogData.Scheme;
Post = "";
Count = Scheme.ColumnCount;
// Iterates through the log columns
for (var i = 0; i < Count; i++)
{
var Column = Scheme.Column(i);
// If the column does not contain images...
if (Column.DataType != 4)
{
// Obtains the value stored in the cell
Value = aqConvert.VarToStr(ALogRow.ValueByIndex(i));
Post = Post + Value + " ";
}
}
// Posts the row to the external file
ExportFile.WriteLine(Post);
// If the current log row has child rows, posts them to the external file
if (ALogRow.ChildRowCount > 0)
{
for (var i = 0; i < ALogRow.ChildRowCount; i++)
{
var ChildRow = ALogRow.ChildRow(i);
ExportLog(ChildRow, ALogData);
}
}
}
JScript
var ExportFile;
function ProcessRows()
{
// Obtains a log item
var LogItem = Project.Logs.LogItem(0);
// Checks whether the log item’s data scheme corresponds to the table
var LogData = LogItem.Data(0);
DType = LogData.Scheme.DataType;
if (DType == 0)
{
// Opens a text file for recording
ExportFileName = "D:\\Work Folder\\ExportedLog\\LogRows.txt";
FS = Sys.OleObject("Scripting.FileSystemObject");
ExportFile = FS.CreateTextFile(ExportFileName, true);
// Iterates through the log table rows and exports them to the external file
for (var i = 0; i < LogData.RowCount; i++)
{
// Obtains the current row
Row = LogData.Rows(i);
ExportLog(Row, LogData);
}
// Closes the file
ExportFile.Close();
}
}
function ExportLog(ALogRow, ALogData)
{
var Scheme = ALogData.Scheme;
Post = "";
Count = Scheme.ColumnCount;
// Iterates through the log columns
for (var i = 0; i < Count; i++)
{
var Column = Scheme.Column(i);
// If the column does not contain images...
if (Column.DataType != 4)
{
// Obtains the value stored in the cell
Value = aqConvert.VarToStr(ALogRow.ValueByIndex(i));
Post = Post + Value + " ";
}
}
// Posts the row to the external file
ExportFile.WriteLine(Post);
// If the current log row has child rows, posts them to the external file
if (ALogRow.ChildRowCount > 0)
{
for (var i = 0; i < ALogRow.ChildRowCount; i++)
{
var ChildRow = ALogRow.ChildRow(i);
ExportLog(ChildRow, ALogData);
}
}
}
Python
def ProcessRows():
  # Obtains a log item
  LogItem = Project.Logs.LogItem[0]
  # Checks whether the log item's data scheme corresponds to the table
  LogData = LogItem.Data[0]
  DType = LogData.Scheme.DataType
  if DType == 0:
    # Opens a text file for recording
    ExportFileName = "D:\\Work Folder\\ExportedLog\\LogRows.txt"
    FS = Sys.OleObject["Scripting.FileSystemObject"]
    ExportFile = FS.CreateTextFile(ExportFileName, True)
    # Iterates through the log table rows and exports them to the external file
    for i in range(0, LogData.RowCount):
      # Obtains the current row
      Row = LogData.Rows[i]
      ExportLog(Row, LogData, ExportFile)
    # Closes the file
    ExportFile.Close()
def ExportLog(ALogRow, ALogData, ExportedFile):
  Scheme = ALogData.Scheme
  Post = ""
  Count = Scheme.ColumnCount
  # Iterates through the log columns
  for i in range(0, Count):
    Column = Scheme.Column[i]
    # If the column does not contain images...
    if Column.DataType != 4:
      # Obtains the value stored in the cell
      Value = aqConvert.VarToStr(ALogRow.ValueByIndex[i])
      Post = Post + Value + " "
  # Posts the row to the external file
  ExportedFile.WriteLine(Post)
  # If the current log row has child rows, posts them to the external file
  if ALogRow.ChildRowCount > 0:
    for i in range(0, ALogRow.ChildRowCount):
      ChildRow = ALogRow.ChildRow[i]
      ExportLog(ChildRow, ALogData)VBScript
Dim ExportFile
Sub ProcessRows
' Obtains a log item
Set LogItem = Project.Logs.LogItem(0)
' Checks whether the log item’s data scheme corresponds to the table
Set LogData = LogItem.Data(0)
DType = LogData.Scheme.DataType
If DType = 0 Then
' Opens a text file for recording
ExportFileName = "D:\Work Folder\ExportedLog\LogRows.txt"
Set FS = Sys.OleObject("Scripting.FileSystemObject")
Set ExportFile = FS.CreateTextFile(ExportFileName, True)
' Iterates through the log table rows and exports them to the external file
For i = 0 To LogData.RowCount - 1
' Obtains the current row
Set Row = LogData.Rows(i)
Call ExportLog(Row, LogData)
Next
' Closes the file
ExportFile.Close
End If
End Sub
Sub ExportLog(ALogRow, ALogData)
Set Scheme = ALogData.Scheme
Post = ""
Count = Scheme.ColumnCount
' Iterates through the log columns
For i = 0 To Count - 1
Set Column= Scheme.Column(i)
' If the column does not contain images...
If Column.DataType <> 4 Then
' Obtains the value stored in the cell
Value = aqConvert.VarToStr(ALogRow.ValueByIndex(i))
Post = Post & Value & " "
End If
Next
' Posts the row to the external file
ExportFile.WriteLine Post
' If the current log row has child rows, posts them to the external file
If ALogRow.ChildRowCount > 0 Then
For i = 0 To ALogRow.ChildRowCount - 1
Set ChildRow = ALogRow.ChildRow(i)
Call ExportLog(ChildRow, ALogData)
Next
End If
End Sub
DelphiScript
var ExportFile;
// Procedure declaration
procedure ExportLog(ALogRow, ALogData); forward;
procedure ProcessRows();
var LogItem, LogData, DType, ExportFileName, i , Row;
begin
// Obtains a log item
LogItem := Project.Logs.LogItem[0];
// Checks whether the log item’s data scheme corresponds to the table
LogData := LogItem.Data[0];
DType := LogData.Scheme.DataType;
if DType = 0 then
begin
// Opens a text file for recording
ExportFileName := 'D:\Work Folder\ExportedLog\LogRows.txt';
AssignFile(ExportFile, ExportFileName);
Rewrite(ExportFile);
// Iterates through the log table rows and exports them to the external file
for i := 0 to LogData.RowCount - 1 do
begin
// Obtains the current row
Row := LogData.Rows[i];
ExportLog(Row, LogData);
end;
// Closes the file
CloseFile(ExportFile);
end;
end;
procedure ExportLog(ALogRow, ALogData);
var Scheme, Post, Column, Value, ChildRow, Count, i;
begin
Scheme := ALogData.Scheme;
Post := '';
Count := Scheme.ColumnCount;
// Iterates through the log columns
for i := 0 to Count - 1 do
begin
Column := Scheme.Column[i];
// If the column does not contain images...
if Column.DataType <> 4 then
begin
// Obtains the value stored in the cell
Value := aqConvert.VarToStr(ALogRow.ValueByIndex[i]);
Post := Post + Value + ' ';
end;
end;
// Posts the row to the external file
WriteLn(ExportFile, Post);
// If the current log row has child rows, posts them to the external file
if ALogRow.ChildRowCount > 0 then
begin
for i := 0 to ALogRow.ChildRowCount - 1 do
begin
ChildRow := ALogRow.ChildRow[i];
ExportLog(ChildRow, ALogData);
end;
end;
end;
C++Script, C#Script
var ExportFile;
function ProcessRows()
{
// Obtains a log item
var LogItem = Project["Logs"]["LogItem"](0);
// Checks whether the log item’s data scheme corresponds to the table
var LogData = LogItem["Data"](0);
DType = LogData.Scheme.DataType;
if (DType == 0)
{
// Opens a text file for recording
ExportFileName = "D:\\Work Folder\\ExportedLog\\LogRows.txt";
FS = Sys["OleObject"]("Scripting.FileSystemObject");
ExportFile = FS["CreateTextFile"](ExportFileName, true);
// Iterates through the log table rows and exports them to the external file
for (var i = 0; i < LogData["RowCount"]; i++)
{
// Obtains the current row
Row = LogData["Rows"](i);
ExportLog(Row, LogData);
}
// Closes the file
ExportFile["Close"]();
}
}
function ExportLog(ALogRow, ALogData)
{
var Scheme = ALogData["Scheme"];
Post = "";
Count = Scheme["ColumnCount"];
// Iterates through the log columns
for (var i = 0; i < Count; i++)
{
var Column = Scheme["Column"](i);
// If the column does not contain images...
if (Column["DataType"] != 4)
{
// Obtains the value stored in the cell
Value = aqConvert["VarToStr"](ALogRow["ValueByIndex"](i));
Post = Post + Value + " ";
}
}
// Posts the row to the external file
ExportFile["WriteLine"](Post);
// If the current log row has child rows, posts them to the external file
if (ALogRow["ChildRowCount"] > 0)
{
for (var i = 0; i < ALogRow["ChildRowCount"]; i++)
{
var ChildRow = ALogRow["ChildRow"](i);
ExportLog(ChildRow, ALogData);
}
}
}
