powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Добавление удаление записей в DBGrid (CBuilder)?
23 сообщений из 23, страница 1 из 1
Добавление удаление записей в DBGrid (CBuilder)?
    #32130157
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. DBGrid + ADOTable выбираю данные из таблицы Access, добавляю через DBGrid новую запись, затем не выходя из формы пытаюсь её же удалить -> получаю в ответ сообщение "Row cannot be located for updating. Some values may have been changed since it was last read."
2. Следующий момент становлюсь на добавление новой записи в гриде, но передумываю её добавлять и пытаюсь выйти с этой записи -> опять же получаю в ответ такое сообщение "Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record." Привычная кнопка Esc не помагает.

Подскажите пожалуйста какие свойства DBGrid или ADOTable нужно установить или как с этим бороться, чтобы не получать эти сообщения (раньше с VB работал - таких вещей не возникало). Если есть какие интересные ссылки по работе с БД в CBuilder киньте пожалуйста.
Заранее спасибо.
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130580
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поищи патч на ADO компоненты...
да и не советую использовать TADOTable, лучше TADOQUERY
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130621
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее все у вас в таблице первичный ключ создается на сервере, так?
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130683
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2>StarWind
>поищи патч на ADO компоненты...

думаешь поможет???


2>funikovyuri
>Скорее все у вас в таблице первичный ключ создается на сервере, так?

Немного не понял суть вопроса. База Access соответственно первичный ключ там же, хотя думаю ты спросил не об этом!?
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130695
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я знаю что поможет...
у самого была такая же проблема, ответ был найдет в этом форуме.... причем не задавая вопроса, а просто воспользовался поисковиком по форуму...
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130700
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстате, патч лежит на борланде... по крайней мере дельфевый... хотя библиотека одна, так что должен подойти и для билдера... посмотри внимательно, может перед апгрейдом компонент ADO потребуется апгрейд билдера
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130767
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел на borland.com патч 'BCB5ADOUpgrade1.exe' в описании как раз сказано о данной проблеме 'Most commonly, the following error is generated when closing an empty dataset: "Either EOF or BOF is True, or the current record has been deleted. Requested operation requires a current record". The same error may also occur when canceling an edit operation. Affected applications should be recompiled after the update is installed.' Щас качну если все получится отпишу. В любом случае СПАСИБО!!!
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130798
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Uriy: Я имел ввиду что возможно ваш ключ создается Access'ом - так что когда вы создаете запись в builder'e значение ключа еще не известно ( точнее builder будет считать его пустым ). Если проблема в этом - то patch вам не поможет.
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130934
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2>funikovyuri
>Я имел ввиду что возможно ваш ключ создается Access'ом - так что когда вы создаете запись в builder'e значение ключа еще не известно ( точнее builder будет считать его пустым ). Если проблема в этом - то patch вам не поможет.

Patch должен исправить второй пункт моего вопроса. Что же касается первого, то действительно при добавлении новой записи builder значение ключа считает пустым, как с этим бороться не знаю. Может подскажешь?
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32130998
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут есть разные варианты, самый простой это Close/Open - но он и самый кривой

в ADO для этого есть такое свойство как 'Update Resync', оно относится к Dynamic Properties для RecordSet'a -> технически на C++ это выглядит так

(*ADOQuery->Properties)["Update Resync"]->Value = adResyncAll;

Можете попробывать - но скорее всего у вас это или не будет работать или не скомпилится - есть способ заставить компилиться - но , IMHO он не надежный
я предлогаю создать DynamicProperties.pas unit

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
// ---------------------------------------------------------------------------
 
unit DynamicProperties;


interface
uses adodb,adoint;
procedure SetUpdateResyncProperty( var data_set: TADOQuery );

implementation

procedure SetUpdateResyncProperty( var data_set: TADOQuery );
begin
	data_set.properties['Update Resync'].value := adResyncAll;
end;



end.


И добавить его в ваш проект
Затем просто используете эту функцию в Builder'e
Например в OnAfterOpen() так как это свойство применимо только к уже открытому RecordSet'у
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131083
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2>funikovyuri

Кроме этого, других вариантов нет?
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131133
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2>funikovyuri
Только что попробовал методы Close и Open в событии AfterPost - после этого запись удаляется без проблем. В чем кривизна этих методов? Единственное что не нравится так это то что курсор переходит на первую запись грида. Как заставить его оставаться на текущей записи? Может есть что-то типа закладок?
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131151
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Uriy: попробуйте работать с look up полями - нет возможности обновлять datail таблицы не зная ключ master table + увеличение трафика

Update Resync делает тоже самое только автоматически и только необходимых полей
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131213
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2funikovyuri
Update Resync может и хорош, да только не имею опыта подключения к проекту делфовых модулей. Look up в чем преимущество?
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131219
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Uriy: если нету опыта тогда ...
lookup это не приимущество - это идеология
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131442
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу технологий... откажись от компонента таблиц.... получишь большое удовольствие.... особенно при большой загрузке сервера работе по сети... причем не ты один получишь, еще возрадуется и админ сетки... сколь приятных веще одним махом....
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131732
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2StarWind
Спасибо! Ты прав TADOQUERY гораздо удобнее, если в запрос не включать ключевые поля - вновь добавленые записи удаляются без всяких обновлений.
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131910
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Uriy: о боже, он еще и ключевые поля убрал из запроса ....
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32131935
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2funikovyuri
А в чем собственно проблема!?
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32132065
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Uriy: а как вы думаете, почему теперь вдруг все стало "работать"
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32132120
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2funikovyuri
>а как вы думаете, почему теперь вдруг все стало "работать"

Точно не скажу, в жизни есть вещи которые мы не можем обьяснить. Может Вы поясните!?
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32132143
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эту еще как - он теперь место запроса
delete from table_name where id = :id

посылает запрос
delete from table_name where f1 = :f1 and ... and fn=:fn

А так как у вас больше вычисляемых на сервере полей нет то все и работет
...
Рейтинг: 0 / 0
Добавление удаление записей в DBGrid (CBuilder)?
    #32132167
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну работает же НОРМАЛЬНО, без 'Update Resync' который может поглючить в любой момент и всяких необьяснимых идеологий (lookup)!?
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Добавление удаление записей в DBGrid (CBuilder)?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]