Форум: "Базы";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];
ВнизЗачем нужен метод Post? Найти похожие ветки
← →
Viacheslav (2002-09-04 13:37) [0]Мучает меня этот вопрос уже второй день)
Может он и глупый. В умных книгах по Делфи говорится что нужен Post для занесения изменённой методами EDIT, APPEND и INSERT записи в таблицу. А у меня, когда я добавляю запись методом Append, изменения записываются без Post. Так нужно применять этот Пост или нет?.
И ещё один вопрос.
Есть 3 таблицы (созданы на основе фокспро-совских баз данных) - одна главная и две ей подчинённые, связанные по одному и тому же полю.
Так вот вопрос - метод аппенд надо применять для всех трёх таблиц или достаточно для главной?. Я пробовал и так и эдак запись добавляется во все таблицы (вернее только в главную и одну подчинённую). Но при этом к главной прицеплены другие справочные таблицы и в них записи новые не добавляются.
Совета спросить больше не у кого, только у вас уважаемые мастера.)
← →
Mike Kouzmine (2002-09-04 14:04) [1]Он вызывается автоматически при переходе на другую запись. А ты попробуй отредактирую запись, а потом не вызывая post выйди из программы, тогда увидишь.
append надо применять там где надо.
← →
gek (2002-09-04 14:05) [2]после Append Post не надо делать
Для всех а лучше Insert для подчиненных
← →
oss (2002-09-04 14:05) [3]думаю ты можешь написать и сам книгу :)
← →
Mike Kouzmine (2002-09-04 14:08) [4]gek © -> после append надо, после appendrecord - нет
← →
Viacheslav (2002-09-04 14:20) [5]>Mike Kouzmine
Так я и делаю - добавляю в главную таблицу запись Table1.Append,
после этого у меня появляются пустые записи в главной и в подчинённых таблицах. Потом делаю изменения в таблицах, но при этом в главной и в одной из подчинённых данные вносятся, а в другой нет словно она доступна только по чтению, хотя пустая строка появляется.
Данные внесенные в те две таблицы сохраняются и без метода Post.
В DBD32 , когда открываешь таблицы, в главной и одной из подчинённых есть новые введённые записи, а в третьей таблице нет.
Вот я и не пойму почему в одну подчинённую таблицу вводится запись а в другую нет и почему эта третья таблица получается доступной только по чтению, хотя все установки свойств для неё такие же как и для первой подчинённой таблице.
← →
gek (2002-09-04 14:21) [6]> Mike Kouzmine
Да, конечно, именно после appendrecord
Прошу прощения за неточность
← →
Viacheslav (2002-09-04 14:22) [7]oss © (04.09.02 14:05)
Когда стану мастером - напишу))))
сейчас ещё рано - оххх как рано)
← →
Mike Kouzmine (2002-09-04 14:26) [8]После append в главной таблице (если нет обработчика на afterinsert или аналогичный) в подчиненных не появляются новые записи, просто грид показывает пустой набор. А если ты даешь append в подчиненных, то автоматически заполняются связанные поля значениями из главной. Но не более того.
← →
Viacheslav (2002-09-04 14:40) [9]>Mike Kouzmine (04.09.02 14:26)
но в одной из подчинённых таблиц запись добавляется вместе с главной а в другой нет, хотя Append я для них не делаю.
Если делаю Append и для подчинённых таблиц, ситуация никоим образом не меняется, что с аппендом, что без него((
← →
Mike Kouzmine (2002-09-04 14:48) [10]А ты напиши о связях, структуре и текст вставки
← →
Viacheslav (2002-09-04 15:06) [11]Главная таблица - Table1
Ключевое поле - NPytl
Подчиненные таблицы - Table2,Table3 так-же имеют поля NPytl
Связь, главная таблица - подчинённая, осуществляется через поля NPytl
Свойства - MasterSource подчинённых таблиц - DSTable1
MasterField подчинённых таблиц - NPytl
Все три таблицы используют индексы по полю NPytl.
Вставка новой записи я осуществляю нажатием соответствующей кнопки - BtnNew
procedure TFormPytevoiList.BtnNewClick(Sender: TObject);
var ii : Integer;
begin
DMPytl.Table1.Append;
DMPytl.Table2.Append;
DMPytl.Table3.Append;
end;
DMPytl - модуль данных где располагаются компоненты Table и DaraSource
Вот в принципе и всё
← →
Mike Kouzmine (2002-09-04 15:09) [12]А ты после append поставь post и посмотри
← →
Reindeer Moss Eater (2002-09-04 15:20) [13]Зачем запоминать после чего надо делать Post, а после чего не надо? Не проще ли всегда делать так?
if Table1.State in dsEditModes then Table1.Post;
← →
Viacheslav (2002-09-04 15:24) [14]Ставил.
Что с Post-ом, что без него результат один и тот-же
Пробовал и
...
Table1.Post;
...
Во всех случаях - в Table1 и Table2 добавляются записи а в Table3 нет
Пробовал и так..
procedure TFormPytevoiList.BtnNewClick(Sender: TObject);
var ii : Integer;
begin
DMPytl.Table1.Append;
end;
Да, забыл сказать - при попытке
...
DMPytl.Table1.Post;
DMPytl.Table2.Post;
DMPytl.Table3.Post;
....
Делфи ругается что Table2 не находится в режиме вставки и редактирования, но изменённые данные по этой таблице записывает.
В варианте:
...
DMPytl.Table1.Post;
DMPytl.Table3.Post;
DMPytl.Table2.Post;
....
ругается соответственно на Table3, а данные во вторую таблицу записываются.
← →
Mike Kouzmine (2002-09-04 15:29) [15]Мы говорим о принципах
← →
Mike Kouzmine (2002-09-04 15:37) [16]Смысл в след. Ты делаешь append вставляется запись и таблица переходит в режим редактирования, если не сделать пост явно или не явно (переход на другую запись, например), при закрытии таблицы, эти данные потеряются. Посмотри на свой код внимательно, чудес не бывает (как правило).
← →
Viacheslav (2002-09-04 15:40) [17]Ладно. Спасибо всем за советы и рекомендации.
Буду разбираться)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c