На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела C/C++: Базы данных
Модераторы: B.V.
  
    > работа c MDB
      Народ, такой вопрос:

      допустим в таблице tbl есть поле time, нужно удалить все записи в которых поле time меньше заданного значения времени (например 2.11.2002), при таком коде

      CTime t(2002,11,2,0,0,0);
      try
      {
        while (!tbl_rec.ISEOF())
        {
             if (tbl_rec.m_time < time) tbl_rec.Delete();
             tbl.rec.MoveNext();
        }
      }
      catch (CDBException e)
      {
      e.ErrorReport();
      }

      программина валится со словами "Multiple rows were updated." (причем здесь update я не понимаю.)

      потом попробовал так
      try
      {
       db->ExecuteSQL("Delete from tbl where time < 2.11.2002");
      }
      catch (CDBException e)
      {
      e.ErrorReport();
      }

      в этом случае говорит, что SQL-statement не правильный....

      Может кто подскажет в чем проблема??? почему валится прога в случае с исспользованиeм CRecordset или как написать SQL-запрос для такого действия????

      Буду предельно признателен, т.к. это горящий вопрос.



        Покажи строчку, где ты CRecordset открываешь.
        А запрос правильный сделать легко: открываешь свою базу в Access и делаешь мастером аналогичный запрос. Потом смотришь его в виде SQL (проблема у тебя в том, что дату просто так, как число подставлять нельзя, эту тему уже поднимали)
          угу, с ентими датами заморочек много..
          Darklink правильно советует..
          А ваще-то я поковырявшись решил писать дату в строковом формате...
          Аксес берет настойки даты, разделители всякие из системных настроек виндовса.
          примеры запроса с датой:

          SELECT t1.id, t1.date FROM t1 WHERE (((table1.date)=#03/12/2002 12:10:0#));
          или
          SELECT (...) FROM (...)
          WHERE (Time > { ts '2002-03-12 12:10:00' })

          типа того....
            Delete from tbl where time < '02.11.2002'
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0169 ]   [ 15 queries used ]   [ Generated: 18.05.24, 17:43 GMT ]