Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

обновление в таблице ? [D7]


Страницы:   1 2

Василь Быков ©   (2006-02-20 17:32:00) 

[code]ADOTable1.append; //переводим таблицу в режим добавления новой записи
ADOTable1.fieldbyname('fldФамилия').asString:=edit2.Text;//присваиваем значение полей
ADOTable1.post;//сохраняем изменения'
adotable1.Close ;
adotable1.Open ;[/code]
но когда я закрываю форму редактирования данных и нажимаю на кнопку "просмотр" то данные не меняются ! они изменяются только при последующем запуске программы !
как зделать так чтоб данные сразу же обновлялись ?


ЮЮ   (2006-02-21 03:49:00) [1]

Мотому что QuickRep1 выводит отчет по всему НаборуДанных, начиная с первой записи. Если бы ты положил QRDBText1, как положено, в Detail-секцию отчета, то увидел бы все записи таблицы. Если хочешь получить отчет по одной записи, то и Набор Данных должен содерать одну запись, т.е. либо фильтровать исходный Набор Данных, либо использовать другой, который бы содержал только одну -нужную -запись


Василь Быков   (2006-02-20 23:58:00) [2]

Спасибо тебе Добрый человек!!!!!!!!
кинь ссылочки!
неплохо бы по отчетам почитать ! а то немогу гикак разобраться!
Кладу на форму компонент QuickRep1(отчет)
на него кладу QRDBText1 связываю через Adotable  с таблицей,
выбираю поле которое должно отображаться,но он показывает первую запись в таблице,
как ему указать чтоб он показывал выбранную запись в DBGride ?


Рустем   (2006-02-20 21:53:00) [3]

Извини, ошибся. Строку:

  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 21:44:00) [4]

Код проекта получил. Теперь давай разбирать твои ошибки.
Дабы открыть тайну, покрытую мраком, и закрыть ветку, отвечу прямо на форуме.

На второй и третьей формах у тебя компонент 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 20:00:00) [5]

Dbgrid у меня связан с DataSet который в свою очередь связан с AdoTable1


Рустем   (2006-02-20 19:58:00) [6]


> по кнопке просмотр пишу AdoTable1.open

Зачем? Таблица у тебя уже открыта. Перепроверь связку, чтобы DBGrid был связан именно с ADOTable1...

> а дальше что?

В каком смысле?


Василь Быков   (2006-02-20 19:44:00) [7]

по кнопке просмотр пишу AdoTable1.open
а дальше что?


Desdechado   (2006-02-20 19:13:00) [8]

на форме просмотра, небось, другой Table стоит, который надо переоткрыть/перечитать


Рустем   (2006-02-20 19:03:00) [9]

Парадокс прямо какой-то!
Скинь на rusty@list.ru свой проект - посмотрю на него...


Василь Быков   (2006-02-20 18:31:00) [10]

form3.Show;
form1.Hide ;

у меня на 3-й форме расположен DBGrid в котором я и просматриваю эту таблицу!


Рустем   (2006-02-20 18:24:00) [11]

А напиши код нажатия на кнопку "просмотр"...


Василь Быков   (2006-02-20 18:10:00) [12]

что я могу недоговаривать?
чтоб ивидеть изменения приходиться перезапускать программу вот и все!


Рустем   (2006-02-20 18:05:00) [13]


> а на что влияет это свойство ?

F1 иногда помогает...

Судя по коду такого не должно происходить... Может ты чего-то не договариваешь?


Василь Быков   (2006-02-20 17:59:00) [14]

а на что влияет это свойство ?


Василь Быков   (2006-02-20 17:58:00) [15]

ltOptimistic


Василь Быков   (2006-02-20 17:57:00) [16]

имеенно такое !!!!!!!!!!


Рустем   (2006-02-20 17:43:00) [17]


> Василь Быков

А какое свойство LockType у компонента ADOTable1? Не ltBatchOptimistic случайно?


Василь Быков   (2006-02-20 17:39:00) [18]

непомогает!


Ega23   (2006-02-20 17:35:00) [19]

По-идее после Post.


Ega23   (2006-02-20 17:34:00) [20]

applyUpdates поди забыл сделать...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо