![]() |
|
|
![]()
|
|
| Treefeed |
|
|||
|
Unregistered |
Доброго времени суток.
Такая ситуация: Использую ADO, Microsoft.Jet.OLEDB.4.0. В главной форме открыт ADODataSet. Для редактирования данных использую модальную форму, которую динамически загружаю из Dll. В модальной форме открываю другой ADODataSet(соответственно и ADOConnection другой) и беру те же данные, что и в главной форме. После закрытия модальной формы в главной делаю ADODataSet1.Requery. Вопрос: почему обновление в главной форме иногда происходит а иногда нет? Если после изменения данных опять открою модальную форму для изменения, то предыдущие изменения видны, хотя в главной их не видно. Может можно как-то заставить обновить какую-то определенную запись? |
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
>и беру те же данные, что и в главной форме
ты радотаешь с одной базой или с несколькими и вообще БД какая? А зачем в другой форме открывать дубликат набора данных. Просто перенеси данные текущей записи (которую хочешь редактировать) в модальную форму, меняй их там как душе угодно, а при закрытии этой формы (или по нажатию кнопочки) делай проверку на данные. Если они тебя удавлетворяют, то просто меняй их в первом наборе данных. Может и Requery не понадобиться. Но второй ADOConnection и второй ADODataSet это иж точно. Это сообщение отредактировал(а) kirilllius - 15.4.2005, 16:47 |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Работаю с одной базой(Access 2003)
А данные как переносить? Просто прередавать строковые константы? |
|||
|
||||
| Treefeed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.4.2005 Где: Киев Репутация: нет Всего: нет |
kirilllius Или может можно как-то передать курсор?
Кстати после того, как повторно(или третий раз.... |
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Да, просто строковые константы в TEdit или TMemo и т.п.
А после внесения изменений, что-то типа Процедура кнопки принять проверка введеных данных на удовлетворение условий и если что-то не нравиться то прекратить выполнение процедуры (Exit) (ну конечно если нужно проверять введенные данныее) набор данных открыть для редактирования или для вставки (Edit или Append) передать данные в базу принять изменения в наборе данных (Post) и затем закрыть наше окошко (Close) |
|||
|
||||
| Treefeed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.4.2005 Где: Киев Репутация: нет Всего: нет |
И что, передавать в Dll около 15 строк? Это конечно можно... Я думал что может есть что-то получше, чем передавать строки...
|
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
А для каких челей dll нужен?
|
|||
|
||||
| Treefeed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.4.2005 Где: Киев Репутация: нет Всего: нет |
А для чего вообще Длл-ки нужны?
|
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Если у тебя там только модальное окно храниться то
|
|||
|
||||
| Treefeed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.4.2005 Где: Киев Репутация: нет Всего: нет |
Это уже
А по делу? |
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Что по делу? Я не понял. Что тебя интересует, опиши задачу и что делает твоя dll.
Это сообщение отредактировал(а) kirilllius - 17.4.2005, 19:22 |
|||
|
||||
| Treefeed |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.4.2005 Где: Киев Репутация: нет Всего: нет |
В модальном окне редактирую данные. А при выходе:
В главной форме:
Но изменения видны не сразу, а после того как сделаю ADODataSet1.Requery 2-3, а то и больше раз. Это сообщение отредактировал(а) Treefeed - 18.4.2005, 11:09 |
||||
|
|||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
А зачем в модальной форме пользоваться компонентами ADO. Я же говорил, просто переноси в простые компоненты, а затем назад
TFORM1. DataSet.Edit; // ADODSFactories: TADODataSet TFORM1. DataSet.FieldByName('A_REGION').AsInteger := StrToInt(Edit1.Text); TFORM1. DataSet.FieldByName('GROUP').AsInteger := StrToInt(Edit2.Text); ... TFORM1. DataSet.Post; TFORM1. DataSet - это DataSet находящийся на главной форме а перед вызовом модального окна ТМодальное окно.Edit1.Text := DataSet.FieldByName('A_REGION').AsString; ТМодальное окно.Edit2.Text := TFORM1. DataSet.FieldByName('GROUP').AsString; и удали из модального окна все компоненты ADO заменив их на простые и DataSet ведь он открыт у тебя в главном окне. Зачем два раза открывать одни и те же данные это ведь память жрет. |
|||
|
||||
| Treefeed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.4.2005 Где: Киев Репутация: нет Всего: нет |
В базе добавление планируется производить редко, а редактирование - еще реже. Поэтому я использую динамическую загрузку модальной формы(она используется для редактирования и добавления) из Dll. Так я меньше жру память - форма то динамически загружается. Если же делать модальную форму в Exe-файле так тогда память будет постоянно выделяться под модальную форму.
Но я так и не понял, почему обновления видны не сразу... Это сообщение отредактировал(а) Treefeed - 18.4.2005, 17:39 |
|||
|
||||
| offline |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
А попробуй Форма.Showmodal - для показа Форма.Free - для удаления ее из памяти после Форма.Close Модальная форма занимает намного меньше памяти чем второй экземпляр набора данных (на мой взгляд).
Попробуй внести изменения не во второй открытый набор данных (вообще его не открывай), а непосредственно в самнабор данных вот и посмотришь результат. Обнавления будут ведны сразу. Поэтому делай, как писал выше |
||||
|
|||||
| Treefeed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.4.2005 Где: Киев Репутация: нет Всего: нет |
Ок. Проверю. Спасибо за информацию
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |