| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Как определить измемнение набора записей? |
| Автор: Lunatikus 24.7.2009, 08:24 | ||
| Здравствуйте. Помогите, пожалуйста. Пытался сделать это через:
Однако, они всегда не равны, даже если набор данных в источнике(база MS SQL 2005) не изменился. Каким способом можно поймать момент изменения данных(да хотя бы не в самом источнике, а в DBGridEh)?Среди событий грида подходящих не увидел. Через сохранение записей в массив и сравнение массивов знаю как, но хотелось бы более простой и удобный способ. |
| Автор: Romikgy 24.7.2009, 11:08 |
| все классы в дельфи это указатели ! это сравнение указателей т.к. у тя два разных датасета тогда и указатели разные ..... если надо сравнить датасеты имхо их надо сравнивать пробегая по ним и сверяя друг с другом , или как то исхитрится это организовать через запрос , а вообще не понятна сама цель зачем сравнивать датасеты? |
| Автор: Lunatikus 24.7.2009, 11:45 |
| черт,действительно, указатели. совсем я с 1С заработался. Датасеты, потому что это первое, что пришло в голову для сравнения данных до и после обновления.Потому и спрашиваю, что тогда еще сравнивать, если не датасеты? Пока организовал сохранение полученных через ADOquery данных в массив. После обновления новые данные в новый массив и сравниваю эти два массива. Но если будет более простой вариант - будет хорошо. |
| Автор: Romikgy 24.7.2009, 12:15 |
| а кто делает обновления? и еще раз повторюсь зачем сравнивать ? |
| Автор: Lunatikus 24.7.2009, 12:27 |
| ADoquery.Open обновляет он. Сравнивать, чтобы при изменении данных выдавать звуковой сигнал, например. |
| Автор: Lunatikus 24.7.2009, 13:46 |
| я могу только считывать данные.изменять таблицу мне не по правам. а набор записей будет очень небольшим: строк 20-40 |
| Автор: Romikgy 24.7.2009, 14:53 |
| тогда запоминай при последнем обращении значение поля у которого автоинкримент и при повторном обращении сравнивай максимальный ид с тем что в памяти , если не одинаковые тогда есть изменения , (это если изменения типа инсерт ) а вот с изменениями типа апдейт имхо сложнее , было бы проще добавить какое то поле типа дата+время , и что бы оно автоматом добавлялось к каждой записи при изменении , ну что то типа тригера прицепить .... и потом по времени отслеживать любые изменения.... |
| Автор: Lunatikus 24.7.2009, 15:42 |
| да но только изменения важно отследить именно апдейтные, а не инсертные) в общем, я пока так и осталю. Благо,записей немного и их считывание/сравнение почти не заметно глазу. спасибо за поддержку |
| Автор: Romikgy 24.7.2009, 20:41 |
а бд заведуешь ты ? тогда тригеры добавь )) |