DPS/DataPlatform/filter.cpp

80 lines
1.8 KiB
C++
Raw Normal View History

2025-06-23 10:41:33 +08:00
#pragma execution_character_set("utf-8")
#include"filter.h"
#include"DataRow.h"
Filter::Filter() {
field = "";
condition = "";
value = "";
}
Filter::~Filter()
{}
bool Filter::checkRow(DataRow* data, int type)
{
switch (type)
{//1 int 2 string 3 double
case 1:
{
int tableV = data->getValue(field).toInt();
if (condition.compare("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV == value.toInt());
else if (condition.compare("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV != value.toInt());
else if (condition.compare("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV > value.toInt());
else if (condition.compare("<EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")==0)
return (tableV >= value.toInt());
else if (condition.compare("С<EFBFBD><EFBFBD>")==0)
return (tableV < value.toInt());
else if (condition.compare("С<EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV <= value.toInt());
}
break;
case 2:
{
QString tableV = data->getValue(field).toString();
if (condition.compare("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
{
return (tableV.contains(value));
}
else if (condition.compare("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
{
return (!tableV.contains(value));
}
else if (condition.contains("<EFBFBD><EFBFBD>XX<EFBFBD><EFBFBD>ʼ") == 0)
{
return (tableV.startsWith(value));
}
else if (condition.contains("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>XX<EFBFBD><EFBFBD>ʼ") == 0)
{
return (!tableV.startsWith(value));
}
}
break;
case 3:
{
double tableV = data->getValue(field).toDouble();
if (condition.compare("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV == value.toDouble());
else if (condition.compare("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV != value.toDouble());
else if (condition.compare("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV > value.toDouble());
else if (condition.compare("<EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV >= value.toDouble());
else if (condition.compare("С<EFBFBD><EFBFBD>") == 0)
return (tableV < value.toDouble());
else if (condition.compare("С<EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") == 0)
return (tableV <= value.toDouble());
}
break;
default:
break;
}
return true;
}