Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2015, 21:03   #11
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не увидит. И что?
Как это "что" получается "1 опер" это update писал для себя и это изменение БД не фиксируется . Вот за это я думаю что редактирование данных через Grid глупость . или надо что то придумать commit надо да ?

Последний раз редактировалось xxbesoxx; 07.08.2015 в 21:06.
xxbesoxx вне форума Ответить с цитированием
Старый 07.08.2015, 21:18   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А, типа бегинтран, а коммит через час? Естесно так нельзя. Между ними не должно быть ничего лишнего и ни каких ожиданий. И не делается так, что за фантазии. На клиенте в трехзвенке все обновления инкапсулируются в данных ClientDataSet-ов например. Запускается начало транзакции и эти данные отправляются на сервер приложений, на основании которых генерируются запросы на обновления данных в базе. Завершение транзакции. Все
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2015, 21:52   #13
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
обновления инкапсулируются в данных ClientDataSet-ов например. Запускается начало транзакции и эти данные отправляются на сервер приложений, на основании которых генерируются запросы на обновления данных в базе. Завершение транзакции. Все
Да вы прав , извините
подключил Oracle учебное схеме HR обновил Salary в таблице Employees где employee_id=102 через DBGridEh1 . Потом писал через PL/SQL Developer
Код:
rollback;
Но изменение который бил через DBGridEh1 не возвращал предыдущий состояние.! Вы прав да .... Но я ошибся потому что если написать
Код:
update Employees set salary=200 where employee_id=102;
и потом
Код:
rollback;
то транзакция откатывается и селект
Код:
select * from Employees where employee_id=102;
salary не равно 200 ... Понял мои ошибка зря спорил , извините пожалуйста
xxbesoxx вне форума Ответить с цитированием
Старый 11.08.2015, 16:43   #14
Jenny89
Пользователь
 
Регистрация: 14.07.2015
Сообщений: 30
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
1)
Код:
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin  // Отключаем  RowSelect
 DBGrid1.Options := DBGrid1.Options - [dgRowSelect];
end;
2)
Код:
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
begin  // момент перехода на следующий строк включаем заново  RowSelect
 DBGrid1.Options := DBGrid1.Options + [dgRowSelect];
end;
Но скажу что редактирование данных через Grid это глупость . А на курсовой проекте можно если работаешь субд Access или Paradox

OnDblClick, к сожалению не работает...
Jenny89 вне форума Ответить с цитированием
Старый 11.08.2015, 17:52   #15
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Код:
procedure TForm1.ADOQuery1BeforeScroll(DataSet: TDataSet);
begin // включаем заново  RowSelect
  DBGrid1.Options := DBGrid1.Options + [dgRowSelect];
end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin  // Отключаем  RowSelect
  DBGrid1.Options := DBGrid1.Options - [dgRowSelect];
  DBGrid1.Options := [dgEditing] ;

end;
После отключение это хватить DBGrid1.Options := [dgEditing] ; Вот https://yadi.sk/d/N4NOU5B0iPgU2

Последний раз редактировалось xxbesoxx; 11.08.2015 в 18:11.
xxbesoxx вне форума Ответить с цитированием
Старый 12.08.2015, 11:10   #16
Jenny89
Пользователь
 
Регистрация: 14.07.2015
Сообщений: 30
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Код:
procedure TForm1.ADOQuery1BeforeScroll(DataSet: TDataSet);
begin // включаем заново  RowSelect
  DBGrid1.Options := DBGrid1.Options + [dgRowSelect];
end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin  // Отключаем  RowSelect
  DBGrid1.Options := DBGrid1.Options - [dgRowSelect];
  DBGrid1.Options := [dgEditing] ;

end;
После отключение это хватить DBGrid1.Options := [dgEditing] ; Вот https://yadi.sk/d/N4NOU5B0iPgU2

Спасибо!!!
Jenny89 вне форума Ответить с цитированием
Старый 14.08.2015, 12:33   #17
VHomer
Пользователь
 
Регистрация: 11.10.2008
Сообщений: 82
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Смотрите ! Не спорю просто вопрос
2 оператор обращается на пример на сервере Oracle
"1 Опер " писал UPDATE Tab1 SET Field = 'чай' WHERE ID=2 и он "находится открытом транзакцию"
"2 Опер" пишет SELECT * FROM Tab1 WHERE ID=2
Друг , "2 опер" не увидит эту изменение который делал "1 Опер " потому что не било commit

Используй OraQuery и AutoCommit в true выстави
VHomer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программно выделить строку в ListView and1733 C++ Builder 1 21.05.2013 08:37
Как выделить строку? o818 Microsoft Office Excel 3 02.11.2012 10:13
выделить строку в DBGrid All517 БД в Delphi 5 24.08.2012 12:43
Выделить строку RichEdit жирным Aleksandr Общие вопросы Delphi 4 11.07.2011 14:36
ValueListEditor - как выделить строку? AssistentAlex Помощь студентам 2 07.01.2009 18:39