| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Как узнать последнюю добавленную запись в бд? |
| Автор: ahito1 14.8.2009, 11:27 |
| Нужно узнать какая запись была добавлена последней, т.е. свежее всех. И вывести данные из этой записи в edit-ы. То есть например есть таблица где есть поля машина и номер, и нужно узнать какая машина была добавлена последней, вывести её имя и номер в Edit. |
| Автор: vovk 14.8.2009, 11:36 |
| а какие в таблице поля есть? |
| Автор: ahito1 14.8.2009, 11:50 |
| vovk, поле(столбец) машина и номер, нужно узнать последнюю добавленную машину и её номер. |
| Автор: ahito1 14.8.2009, 14:40 |
| неужели никто не знает??? |
| Автор: Frees 14.8.2009, 14:59 | ||
выполнить запрос
|
| Автор: vovk 14.8.2009, 15:29 |
| Frees, Мне вот чтото не понятно откуда ты id взял ? Он же сказал что только номер и машина есть больше полей нет |
| Автор: ahito1 14.8.2009, 15:44 |
| Frees, а можно подробнее, что такое "desc" и "id"? |
| Автор: vovk 14.8.2009, 16:07 |
| Думаеш я зря у тебя про поля в таблице спросил "Z->a" если как текст.А "id" это имелось в виду в таблице поле первичныйк ключ идентификатор какбы |
| Автор: Данкинг 15.8.2009, 00:03 |
| Добавляй в таблицу дату и время, и потом уже по ним ориентируйся. |
| Автор: ahito1 16.8.2009, 19:03 |
| Данкинг, с этими датами в парадоксе уже замучался, приходится делать DateTostr, в таблицах хранить даты в виде текста, иначе никак, paradox выдает ошибку несовместимости даты:( |
| Автор: Данкинг 16.8.2009, 19:15 |
| ahito1, откажись от парадокса. Да, ну а преобразование "на лету" из текста в дату, ведь, наверное, и там делать можно. |
| Автор: ahito1 16.8.2009, 19:24 |
| можно, но потом нужно будет перебирать всю таблицу чтоб узнать одну дату, а это долго, sql запросом намного быстрее. Что использовать вместо парадокса на локальной машине, аксесс не хочу. |
| Автор: ahito1 16.8.2009, 21:27 |
| Данкинг, спасибо, для Char - cstr, а для даты или текста? |
| Автор: offline 16.8.2009, 21:32 |
| так последняя запись добавляется вроде в конец таблицы. Встань на нее методом Last и прочитай данные |
| Автор: Данкинг 16.8.2009, 22:01 |
А что - в парадоксе то же самое? Не знаю, как в парадоксе, но для всяких СУБД вроде тех же Access или Firebird данное утверждение будет неверным. |
| Автор: offline 16.8.2009, 22:29 |
| я думаю что метод Last переходит на последнюю добавленную запись если в таблице присутствует автоинкремент и сортировка идет по нему ;) Но если метод Last не нравится то можно сделать совсем просто, после каждого добавления записи забирать ID этой записи и хранить ее в таблице настроек или в любом текстовом файле. Тогда соответственно последнее ID и есть свежая запись. А встать на запись по известному ID это пару секунд. |
| Автор: ahito1 17.8.2009, 10:03 |
| Данкинг, не знаю, как в парадоксе, поищу, спасибо! offline, спасибо, наверно придется дописывать id. |
| Автор: pseud 17.8.2009, 17:17 | ||||
Добавить колонку id ("+" = тип автоинкремент) - обязательно. К ней и будешь вязаться. В других СУБД, напрмер Oracle, когда БД распределена на n-серверов с таким полем могут возникнуть проблемы и необходимо вязаться на поле дата/время. Определять последнюю запись так:
Добавлено через 1 минуту и 19 секунд Уточнение:
|
| Автор: ahito1 21.8.2009, 23:42 |
| спасибо |
| Автор: Akella 22.8.2009, 00:30 | ||||
парадокс прекрасно работает с датами Добавлено через 53 секунды firebird Добавлено через 1 минуту и 44 секунды
Не угадал. А если выполнить не Dataset.append, а Dataset.insert? Добавлено через 2 минуты и 58 секунд Правильнее будет сказать - на последнюю запись. А последняя и последняя добавленная - это разные вещи |