Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 294

/ вопрос открыт /

Здравствуйте уважаемые эксперты!
Помогите пожалуйста начинающему
Я работаю с ADO при помощи DBEdit-ов у меня отображаются данные из базы. Как можно при помощи этих же DBEdit-ов ввести новую запись в базу?

senyor Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: senyor (статус: Посетитель)
Вопрос отправлен: 16 октября 2009, 18:46
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, senyor!
Перед добавлением надо вставить пустую запись (сами DBEdit'ы автоматом её отобразят)
AdoTable1.Append;
(можно и с помощью AdoTable1.Insert)
эту строку можно вставить в OnCreate/OnShow формы добавления записи
после того, как пользователь введёт запись, её надо "закрепить" строкой
AdoTable1.Post;
Если пользователь нажал "Отмена", то откатываемся
AdoTable1.Cancel;

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 16 октября 2009, 19:05


Мини-форум вопроса

Всего сообщений: 9; последнее сообщение — 17 октября 2009, 13:01; участников в обсуждении: 3.
Егор

Егор (статус: 10-ый класс), 16 октября 2009, 19:41 [#1]:

как вариант, можно подключить компонент DBNavigator, в котором есть кнопочка "+" - нажали - добавили запись :)
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 16 октября 2009, 19:42 [#2]:

кстати, Вадим К:, а в чём разница между Append и Insert?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Вадим К

Вадим К (статус: Академик), 16 октября 2009, 20:08 [#3]:

Вообще то она очень тонкая и можно считать что ее нет. Если знаем английский - можно почитать тут
http://jdmullin.blogspot.com/2008_08_01_archive.html
Галочка "подтверждения прочтения" - вселенское зло.
Вадим К

Вадим К (статус: Академик), 16 октября 2009, 21:37 [#4]:

Мережников Андрей:
Пожалуйста не вводите людей в заблуждение и не показывайте свое незнание предмета.
Ещё раз пишу
для реляционных баз данных нет понятия "добавить запись в конец". О порядке записей в базе нельзя говорить. Можно говорить о порядке записей в конкретной выборке. А то что запись обычно попадает в конец - не более, чем побочный эффект. Как только с таблицы начнутся активно удаляться записи, всё будет по другому.
Но обычно у таблиц делают индекс, по которому и сортируют...
У меня знакомого за фразу "вставить запись в середину таблицы" уволили с работы - за незнание основополагающих принципов.
Более того, на практике оказывается, что при добавлении большого количества Insert оказывается быстрее.
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 17 октября 2009, 07:36 [#5]:

to Вадим К: О порядке записей в БД действительно не всегда корректно говорить. Но можно говорить о положении информации в файле. Те различия в Insert/Append, о которых я говорил, относятся именно к этому. К сожалению я ошибся в том, что это относится не ко всем случаям - совсем не относится к SQL серверам. Но, например, FoxPro 2.5 поступает с Insert/Append именно так. Append - добавляет запись в конец файла dbf, а Insert - вставляет новую запись перед текущей, т.е. физически происходит перестроение всего файла dbf.
Вадим К

Вадим К (статус: Академик), 17 октября 2009, 10:33 [#6]:

Я не против, что это может быть истинной в каком то конкретном случае. Но в целом - нет.
Открою одну маленькую тайну, почему это так.
Многие базы данных под одну запись выделяют фиксированное место.
И вот, когда удаляется одна запись где то в середине, то весь файл не перестраивается (для больших баз это было бы катастрофой - переписывать пришлось обычно пол файла), а просто запись помечается как удаленная (обычно каждая запись имеем либо бит "удаленная/в деле", или есть специальные таблицы и так дальше). И вот, когда снова добавляется запись и есть блок подходящего размера - запись вставляется туда.
Я думаю после этого станет всё на место. И почему существует такое понятие как "упаковка".
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 17 октября 2009, 11:11 [#7]:

to Вадим К - про "маленькую тайну" - я знаю :-). Но бывают случаи - когда это не работает. По крайней мере в тех СУБД, которые поддерживают восстановление удаленных записей.
Вадим К

Вадим К (статус: Академик), 17 октября 2009, 12:00 [#8]:

Обычно восстановить можно только "не затертые". Но для собтвенно восстановления давно придумали другие методы.
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 17 октября 2009, 13:01 [#9]:

в некоторых СУБД есть даже команды для восстановления удаленных данных (например в FoxPro - recall). Запись, помеченная как удаленная, хранится там до бесконечности, либо до выполнения команды pack. Впрочем, наши дальнейшие рассуждения не имеют отношения к сути заданного вопроса - это уже оффтоп. Потому предлагаю закончить дискуссию :-)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:53
Выполнено за 0.02 сек.