private bool orderDateAsc(int first, int last, int orderBy)
{
int i = 0;
int j = 0;
int t = 0;
int q = 0;
bool bChanged = false;
t = pEstimateLoops(last - first);
for (i = first + 1; i <= last; i++)
{
bChanged = false;
for (j = last; j >= i; j--)
{
q = q + 1;
int row1 = m_vRowsIndex[j];
int row2 = m_vRowsIndex[j - 1];
DateTime date1 = cReportGlobals.dateValue(cReportGlobals.valVariant(m_rows.Rows[row1][orderBy]));
DateTime date2 = cReportGlobals.dateValue(cReportGlobals.valVariant(m_rows.Rows[row2][orderBy]));
if (date1 < date2)
{
if (!OnProgress("", 0, q, t))
{
return false;
}
changeRow(j, j - 1);
bChanged = true;
}
}
if (!OnProgress("", 0, q, t))
{
return false;
}
if (!bChanged)
{
break;
}
}
return true;
}