Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

обновление в таблице ?   Найти похожие ветки 

 
Василь Быков   (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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.044 c
6-1132861630
Николай2005
2005-11-24 22:47
2006.03.12
Ошибка 411 при отправке запроса через TIdHTTP методом POST


15-1140181761
Mirror
2006-02-17 16:09
2006.03.12
Jpeg2000


2-1140975612
Volkodav
2006-02-26 20:40
2006.03.12
Полоса перемотки для MediaPlayer1


2-1140621520
mihauzen
2006-02-22 18:18
2006.03.12
Чем/как реализовать "многооконность" в одном приложении?


3-1137372262
DimonS
2006-01-16 03:44
2006.03.12
Access +SQL