Files correlati : bs Commento : - Sistemato aggiunta nuovo programma - Creata libreria di utility con funzioni in comune - Cambiato metodo di pulizia db git-svn-id: svn://10.65.10.50/branches/R_10_00@24423 c028cbd2-c16b-5b4b-a496-9718f37d4682
104 lines
1.8 KiB
C++
104 lines
1.8 KiB
C++
#include "bsutility.h"
|
|
|
|
|
|
// Converte una TDate in una data SQL
|
|
const TString& date2sql(const TDate& d, int hour)
|
|
{
|
|
TString& tmp = get_tmp_string();
|
|
if (d.ok())
|
|
{
|
|
tmp.format("'%04d-%02d-%02d", d.year(), d.month(), d.day());
|
|
switch (hour)
|
|
{
|
|
case 1:
|
|
tmp << "T00:00:00.000'";
|
|
break;
|
|
case 2:
|
|
tmp << "T23:59:59.999'";
|
|
break;
|
|
default:
|
|
case 0:
|
|
tmp << "'";
|
|
}
|
|
}
|
|
else
|
|
tmp = "NULL";
|
|
return tmp;
|
|
}
|
|
|
|
const TString& var2sql(const TVariant& var)
|
|
{
|
|
TString& tmp = get_tmp_string();
|
|
switch (var.type())
|
|
{
|
|
case _nullfld:
|
|
tmp = "NULL";
|
|
break;
|
|
case _boolfld:
|
|
tmp = var.as_bool() ? "1" : "0";
|
|
break;
|
|
case _datefld:
|
|
tmp = date2sql(var.as_date());
|
|
break;
|
|
case _intfld:
|
|
case _longfld:
|
|
var.as_string(tmp);
|
|
break;
|
|
case _realfld:
|
|
if (var.is_empty())
|
|
tmp = "0";
|
|
else
|
|
{
|
|
tmp = var.as_real().string(0, 2);
|
|
if (tmp.ends_with(".00"))
|
|
tmp.rtrim(3);
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
var.as_string(tmp);
|
|
const int pos = tmp.find('\'');
|
|
if (pos >= 0)
|
|
{
|
|
for (int i = tmp.len() - 1; i >= pos; i--)
|
|
if (tmp[i] == '\'') tmp.insert("'", i);
|
|
}
|
|
tmp.insert("'");
|
|
tmp << "'";
|
|
}
|
|
break;
|
|
}
|
|
return tmp;
|
|
}
|
|
|
|
|
|
const TString& expr2sql(const TISAM_recordset& set, const char* expr)
|
|
{
|
|
TVariant var;
|
|
TExpression e(expr, _strexpr, true);
|
|
if (e.numvar() == 0)
|
|
{
|
|
if (real::is_natural(expr))
|
|
var = atoi(expr);
|
|
else
|
|
var = expr;
|
|
}
|
|
else
|
|
if (e.numvar() == 1 && xvt_str_same(e.varname(0), expr))
|
|
{
|
|
var = set.get(expr);
|
|
}
|
|
else
|
|
{
|
|
for (int v = e.numvar() - 1; v >= 0; v--)
|
|
{
|
|
var = set.get(e.varname(v));
|
|
if (var.is_real() || var.is_bool())
|
|
e.setvar(v, var.as_real());
|
|
else
|
|
e.setvar(v, var.as_string());
|
|
}
|
|
var = e.as_string();
|
|
}
|
|
return var2sql(var);
|
|
} |