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

Начинаете изучать Ананас? Задавайте вопросы здесь. С чего начать? Где найти? Как сделать? А можно...?

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

Сообщение Yvgen » Вт дек 29, 2009 1:37 pm

Код: Выделить всё
      Mes("Перед первым условием");
         Mes(cat.Value(val));
         Mes(String(valName));
         if((cat.Value(val))==(valName))  {  Mes("Первое условие выполнилось!");}

Cat.Value(val) - в этом поле ID элемента с другого справочника
valName = ID элемента (то, которое я знаю с другого справочника)
Мне нужно на их совпадение в данном справочнике получить значение поля.
НО
Условие не выполняется?!
Код: Выделить всё
Перед первым условием
435
435
Последний раз редактировалось Yvgen Чт фев 04, 2010 12:33 pm, всего редактировалось 1 раз.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

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

Сообщение Yvgen » Вт дек 29, 2009 2:14 pm

Решил данную задачу с помощью чистого SQL.
Но вопрос открыт все же.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

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

Сообщение Yvgen » Вт дек 29, 2009 4:25 pm

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

Поддерживается только выражение select. Если случилась ошибка, возвращается false. Для перемещения по результатам используйте функции First(), Next(), Prev(), Last(). Для получения сведений об ошибке - функцией LastError().
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

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

Сообщение Yvgen » Вт дек 29, 2009 4:50 pm

При апдейте:
Unknown column 'undefined' in 'where clause'

но поля указаны 100% верно.
Я из выводил и проверял в базе.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

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

Сообщение Креатив » Вт дек 29, 2009 8:39 pm

Если не вдаваться в смысл, то
if((cat.Value(val))==String(valName)) { Mes("Первое условие выполнилось!");}
Но может я не прав, тогда надо уже думать.
Креатив
 
Сообщения: 10
Зарегистрирован: Ср фев 25, 2009 12:23 am

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

Сообщение anton » Вт дек 29, 2009 9:23 pm

Проблема вовсе не в 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("");
}

anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск

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

Сообщение Yvgen » Ср дек 30, 2009 2:46 pm

не получается.
: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());
      }
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

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

Сообщение anton » Ср дек 30, 2009 5:53 pm

Ужоснах!!
Код: Выделить всё
cat.SetFilter(val, valName);
cat.Select();
if(cat.First())
  Mes("Нашлось");

кстати, судя по именам пременных должно быть наоборот valName (название значения), val (значние). Но я написал пример исходя из Вашего примера.
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск


Вернуться в Вопросы новичков

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

cron