Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1140503578
Wood
2006-02-21 09:32
2006.03.12
Закрыть TExcelApplication без сохранения


2-1140520736
TrainerOfDolphins
2006-02-21 14:18
2006.03.12
Назначение обработчика события потомку класса


2-1140617393
LordOfRock
2006-02-22 17:09
2006.03.12
Классы. Удаление "самого себя"


2-1140522139
Pit
2006-02-21 14:42
2006.03.12
Popupmenu


2-1140688805
Wolferio
2006-02-23 13:00
2006.03.12
Rave Reports





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский