Страница 1 из 1

[РЕШЕНО] Проблема!! С if

СообщениеДобавлено: Вт дек 29, 2009 1:37 pm
Yvgen
Код: Выделить всё
      Mes("Перед первым условием");
         Mes(cat.Value(val));
         Mes(String(valName));
         if((cat.Value(val))==(valName))  {  Mes("Первое условие выполнилось!");}

Cat.Value(val) - в этом поле ID элемента с другого справочника
valName = ID элемента (то, которое я знаю с другого справочника)
Мне нужно на их совпадение в данном справочнике получить значение поля.
НО
Условие не выполняется?!
Код: Выделить всё
Перед первым условием
435
435

Re: Проблема!! С if

СообщениеДобавлено: Вт дек 29, 2009 2:14 pm
Yvgen
Решил данную задачу с помощью чистого SQL.
Но вопрос открыт все же.

Re: Проблема!! С if

СообщениеДобавлено: Вт дек 29, 2009 4:25 pm
Yvgen
В общем приплыли.
С помощью SQL апдейт не сделаешь.
bool aExtSQL::ExecQuery ( const QString & query ) [slot]
Функция для выполнения sql запроса.

Поддерживается только выражение select. Если случилась ошибка, возвращается false. Для перемещения по результатам используйте функции First(), Next(), Prev(), Last(). Для получения сведений об ошибке - функцией LastError().

Re: Проблема!! С if

СообщениеДобавлено: Вт дек 29, 2009 4:50 pm
Yvgen
При апдейте:
Unknown column 'undefined' in 'where clause'

но поля указаны 100% верно.
Я из выводил и проверял в базе.

Re: Проблема!! С if

СообщениеДобавлено: Вт дек 29, 2009 8:39 pm
Креатив
Если не вдаваться в смысл, то
if((cat.Value(val))==String(valName)) { Mes("Первое условие выполнилось!");}
Но может я не прав, тогда надо уже думать.

Re: Проблема!! С if

СообщениеДобавлено: Вт дек 29, 2009 9:23 pm
anton
Проблема вовсе не в if, а в aObject.Value() и она давно известна. Дело в том, что uid имеет тип Q_ULLONG, а qsa не поддерживает его.
Есть способ обхода:
присвоить свойству типа String любого объекта (пример, aExtExample.message, QLineEdit.caption)
Код: Выделить всё
var sample = new AExtExample;
sample.message = obj.Value("Справочник");
var uid = sample.message;

проверено неоднократно
впрочем, если не страшно пересобирать из исходников, то
aobject.cpp метод Value()
Код: Выделить всё
QVariant
aObject::Value( const QString & name, const QString &tableName )
{

        aDataTable *t = table( tableName );
   QString trName = trSysName(name);

   if ( trName != "" ) return sysValue( trName );
   else
   {
      QVariant res;
           if ( t )  res = t->value( name );
           if(res.type()==QVariant::ULongLong || res.type()==QVariant::LongLong) return res.toString();
           return res;
   }
        return QVariant("");
}


Re: Проблема!! С if

СообщениеДобавлено: Ср дек 30, 2009 2:46 pm
Yvgen
не получается.
:Error. Use of undefined variable 'QLineEdit' Стэк:( getValueCat2(globalmodule:146) (global context) on_tabupdate(:141) )

тоже самое и с AExtExample
Я сейчас опишу, что я хочу сделать, а вы может подскажете.
Код: Выделить всё
    var  cat = new Catalogue(catName);
//    var res = "<"+valName + "> нет элемента в справочнике";
    var res = 0;
    if(!cat) return "нет справочника с именем"+catName;
    cat.Select();
    if(cat.First())
    {
          do
     { 
         Mes("Перед первым условием");
         Mes(cat.Value(val));
         Mes(svalName);
         if((cat.Value(val))==(valName))   { Mes("Первое условие выполнилось!");
       // if (cat.Value(val2)==valName2)
        
        Mes("Нашли скидку!!");
        res = String(cat.Value("Скидка"));
        break;
         }   
       Mes("---- перебор эл");
       Mes(cat.Value(val));
       Mes(valName);
       Mes(cat.Value(val2));
       Mes(valName2);
   
     }while(cat.Next());
      }

Re: Проблема!! С if

СообщениеДобавлено: Ср дек 30, 2009 5:53 pm
anton
Ужоснах!!
Код: Выделить всё
cat.SetFilter(val, valName);
cat.Select();
if(cat.First())
  Mes("Нашлось");

кстати, судя по именам пременных должно быть наоборот valName (название значения), val (значние). Но я написал пример исходя из Вашего примера.