ChildRowCount Property

Applies to TestComplete 14.10, last modified on June 5, 2019

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

// Global variable
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

// Global variable
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

' Global variable
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

// Global variable
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

// Global variable
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);
    }
  }

}

See Also

Access Test Log Contents from Tests
ChildRow Property

Highlight search results