Обсуждение:«Быстрые» выборки из базы данных

0 (0)
  • Развернуть Обсуждение:«Быстрые» выборки из базы данных ( Обсуждение примера  02.02.2011 12:21 )
    0(0)
    Класс RowSet облегчает написание выборок из баз данных с помощью фильтров и механизмов обратного вызова. Поддерживает метод CreateEnum, поэтому может использоваться в цикле for.

    Описание методов класса с примерами внутри архива.
    Посмотреть пример
    >> Ответить
    • Развернуть Очень понравилось, буду использовать, спасибо ( Vic_Tomsk  03.02.2011 07:47 )
      0(0)
      Not specified
      >> Ответить
      • Развернуть Сегодня исправил баги ( ironjava  04.02.2011 17:56 )
        0(0)
        с совместным использованием методов Key и Field.

        с падением программы из-за удаления сборщиком мусора объекта, который используется в Filter и Map
        >> Ответить
        • Развернуть невыходит :( ( Vic_Tomsk  07.02.2011 11:09 )
          0(0)
          задача - вывести значения счетов "47411" и их остатки на дату 31/01/2011
          var dt = date(31,1,2011);
          class Account
            macro check(acc)
              return true; // чтобы не усложнять код
            end;
          end;
          
          var accs;
          var acc;
          accs = RowSet("account").Field("Balance", "47411").Filter(Account, "check");
          for(acc, accs)
            println(string(acc.Account:f), ";", RestA(acc.Account, dt));
          end;
          

          терминал валится в эксепшен.
          >> Ответить
    • Развернуть еще проблемка ( Vic_Tomsk  24.02.2011 07:52 )
      0(0)
      docs = RowSet("arhdoc").Key("Date_Carry", dt1, dt2).Filter(Document, "check");

      при
      var dt1 = date(1,1,2011),
      dt2 = date(31,1,2011);

      Выборка не срабатывает, делаю dt1 = date(11,1,2011) - рабочий день, ключ в БД существует - все работает.

      Как бы сделать универсально? Есть период дат (ключ) - получаю выборку не зависимо от присутствия значений?

      docs = RowSet("arhdoc").Key("Date_Carry", dt1).Filter(Document, "check"); - пустая выборка, тут все верно, если dt1 = date(1,1,2011) - нет архива, пустая выборка, а вот если диапазон значений ключа...

      >> Ответить