Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.137.93] |
|
Сообщ.
#1
,
|
|
|
Народ, такой вопрос:
допустим в таблице 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-запрос для такого действия???? Буду предельно признателен, т.к. это горящий вопрос. |
Сообщ.
#2
,
|
|
|
Покажи строчку, где ты CRecordset открываешь.
А запрос правильный сделать легко: открываешь свою базу в Access и делаешь мастером аналогичный запрос. Потом смотришь его в виде SQL (проблема у тебя в том, что дату просто так, как число подставлять нельзя, эту тему уже поднимали) |
Сообщ.
#3
,
|
|
|
угу, с ентими датами заморочек много..
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' }) типа того.... |
Сообщ.
#4
,
|
|
|
Delete from tbl where time < '02.11.2002'
|