Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Внизобновление в таблице ? Найти похожие ветки
← →
Василь Быков (2006-02-20 17:32) [0][code]ADOTable1.append; //переводим таблицу в режим добавления новой записи
ADOTable1.fieldbyname("fldФамилия").asString:=edit2.Text;//присваиваем значение полей
ADOTable1.post;//сохраняем изменения"
adotable1.Close ;
adotable1.Open ;[/code]
но когда я закрываю форму редактирования данных и нажимаю на кнопку "просмотр" то данные не меняются ! они изменяются только при последующем запуске программы !
как зделать так чтоб данные сразу же обновлялись ?
← →
Ega23 © (2006-02-20 17:34) [1]applyUpdates поди забыл сделать...
← →
Василь Быков (2006-02-20 17:34) [2]а где эту строку прописать?
← →
Ega23 © (2006-02-20 17:35) [3]По-идее после Post.
← →
Василь Быков (2006-02-20 17:39) [4]непомогает!
← →
Рустем © (2006-02-20 17:43) [5]
> Василь Быков
А какое свойство LockType у компонента ADOTable1? Не ltBatchOptimistic случайно?
← →
Василь Быков (2006-02-20 17:57) [6]имеенно такое !!!!!!!!!!
← →
Василь Быков (2006-02-20 17:58) [7]ltOptimistic
← →
Василь Быков (2006-02-20 17:59) [8]а на что влияет это свойство ?
← →
Рустем © (2006-02-20 18:05) [9]
> а на что влияет это свойство ?
F1 иногда помогает...
Судя по коду такого не должно происходить... Может ты чего-то не договариваешь?
← →
Василь Быков (2006-02-20 18:10) [10]что я могу недоговаривать?
чтоб ивидеть изменения приходиться перезапускать программу вот и все!
← →
Рустем © (2006-02-20 18:24) [11]А напиши код нажатия на кнопку "просмотр"...
← →
Василь Быков (2006-02-20 18:31) [12]
form3.Show;
form1.Hide ;
у меня на 3-й форме расположен DBGrid в котором я и просматриваю эту таблицу!
← →
Рустем © (2006-02-20 19:03) [13]Парадокс прямо какой-то!
Скинь на rusty@list.ru свой проект - посмотрю на него...
← →
Desdechado © (2006-02-20 19:13) [14]на форме просмотра, небось, другой Table стоит, который надо переоткрыть/перечитать
← →
Василь Быков (2006-02-20 19:44) [15]по кнопке просмотр пишу AdoTable1.open
а дальше что?
← →
Рустем © (2006-02-20 19:58) [16]
> по кнопке просмотр пишу AdoTable1.open
Зачем? Таблица у тебя уже открыта. Перепроверь связку, чтобы DBGrid был связан именно с ADOTable1...
> а дальше что?
В каком смысле?
← →
Василь Быков (2006-02-20 20:00) [17]Dbgrid у меня связан с DataSet который в свою очередь связан с AdoTable1
← →
Рустем © (2006-02-20 21:44) [18]Код проекта получил. Теперь давай разбирать твои ошибки.
Дабы открыть тайну, покрытую мраком, и закрыть ветку, отвечу прямо на форуме.
На второй и третьей формах у тебя компонент TADOTable, который ссылается на одну и туже таблицу. Этого делать, в твоем случае, абсолютно не требуется. Помести его на первую форму и больше никуда. Компонент TDataSource можешь поместить либо на первую форму, либо на форму, на которой расположен DBGrid. Вообще для этих целей желательно использовать DataModule и туда поместить оба компонента, дабы избавиться от перекрестных ссылок.
Т.е. у тебя получается так: во второй форме ты добавляешь данные в таблицу и переоткрываешь ее, закрываешь эту форму. После чего открываешь третью форму, на которой находится такой же компонент ADOTable с сылкой на ту же таблицу и пытаешься в DBGride увидеть добавленную запись, не переоткрыв ее.
Твой проект заработает, если ты в процедуру нажатия кнопки добавишь следующее (выделено жирным):
procedure TForm1.Button2Click(Sender: TObject);
begin
form3.ADOTable1.Requery;
form3.ShowModal ;
end;
Но это не есть хорошо (см. выше). И прав был Desdechado [14].
Кроме того, давай будем учиться писать тексты программ лаконично. Например твой код:
procedure TForm2.Button1Click(Sender: TObject);
begin
ADOTable1.append; //переводим таблицу в режим добавления новой записи
ADOTable1.fieldbyname("Фамилия").asString:= edit1.Text ;//присваиваем значение полей
ADOTable1.fieldbyname("Имя").asString:= edit2.Text ;
ADOTable1.fieldbyname("Отчество").asString:= edit3.Text ;
ADOTable1.post;//сохраняем изменения
AdoTable1.Close;
AdoTable1.Open;
close;
end;
лучше и, наверное, правильнее писать так:
procedure TForm2.Button1Click(Sender: TObject);
begin
with ADOTable1 do
begin
Append; //переводим таблицу в режим добавления новой записи
FieldByName("Фамилия").AsString := Edit1.Text ;//присваиваем значение полей
FieldByName("Имя").AsString := Edit2.Text ;
FieldByName("Отчество").AsString := Edit3.Text ;
Post;//сохраняем изменения
Requery;
end;
Close;
end;
И конечно же, рекомендую почитать литературу. Если интересует, могу скинуть ссылочки...
← →
Рустем © (2006-02-20 21:53) [19]Извини, ошибся. Строку:
form3.ADOTable1.Requery;
следует добавить после Close в обработчике события нажатия кнопки Button1 формы Form2, т.е.:
procedure TForm2.Button1Click(Sender: TObject);
begin
with ADOTable1 do
begin
Append; //переводим таблицу в режим добавления новой записи
FieldByName("Фамилия").AsString := Edit1.Text ;//присваиваем значение полей
FieldByName("Имя").AsString := Edit2.Text ;
FieldByName("Отчество").AsString := Edit3.Text ;
Post;//сохраняем изменения
Requery;
end;
form3.ADOTable1.Requery;
Close;
end;
← →
Василь Быков (2006-02-20 23:58) [20]Спасибо тебе Добрый человек!!!!!!!!
кинь ссылочки!
неплохо бы по отчетам почитать ! а то немогу гикак разобраться!
Кладу на форму компонент QuickRep1(отчет)
на него кладу QRDBText1 связываю через Adotable с таблицей,
выбираю поле которое должно отображаться,но он показывает первую запись в таблице,
как ему указать чтоб он показывал выбранную запись в DBGride ?
← →
ЮЮ © (2006-02-21 03:49) [21]Мотому что QuickRep1 выводит отчет по всему НаборуДанных, начиная с первой записи. Если бы ты положил QRDBText1, как положено, в Detail-секцию отчета, то увидел бы все записи таблицы. Если хочешь получить отчет по одной записи, то и Набор Данных должен содерать одну запись, т.е. либо фильтровать исходный Набор Данных, либо использовать другой, который бы содержал только одну -нужную -запись
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.014 c