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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 17:52   #1
leklerk
Пользователь
 
Регистрация: 17.02.2012
Сообщений: 38
По умолчанию Многопользовательская работа

Добрый день. Работаю через ADO с SQL Server 2005, запускаю 2 одинаковых exe в одном отменяю (или разрешаю) возможность корректировать данные, а во втором это не отражается, не могу понять, почему. Может, есть какие-то тонкости многопользовательской работы в delphi?
ADODataSet1 формирует запрос, который показывается в DBGrid; ADODataSet2 выполняется, чтобы узнать значение поля, которое показывает, разрешена ли корректировка. ADOCommand1 и ADOCommand2 изменяют соответствующим образом значение этого поля. Вот код:

procedure TForm1.FormCreate(Sender: TObject);
begin
ADODataSet1.Open();
ADODataSet2.Open();
ADODataSet2.First();


if ADODataSet2.Fields[0].Value=1 then begin
DBGrid1.ReadOnly := FALSE;
Button3.Caption:='Запретить корректировку';
end;

if ADODataSet2.Fields[0].Value=0 then begin
DBGrid1.ReadOnly := TRUE;
Button3.Caption:='Разрешить корректировку';
end;

// Кнопка запрета или разрешения корректировки
procedure TForm1.Button3Click(Sender: TObject);
begin
if Button3.Caption='Запретить корректировку' then begin
DBGrid1.ReadOnly := TRUE;
Button3.Caption:='Разрешить корректировку';
ADOCommand1.Execute();
end
else begin
DBGrid1.ReadOnly := FALSE;
Button3.Caption:='Запретить корректировку';
ADOCommand2.Execute();
end;
end;

// Обновление таблицы и времени каждые 10 секунд
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ADODataSet1.Close();
ADODataSet1.Open();

ADODataSet2.Close();
ADODataSet2.Open();
ADODataSet2.First();

if ADODataSet2.Fields[0].Value=1 then begin
DBGrid1.ReadOnly := FALSE;
Button3.Caption:='Запретить корректировку';
end;

if ADODataSet2.Fields[0].Value=0 then begin
DBGrid1.ReadOnly := TRUE;
Button3.Caption:='Разрешить корректировку';
end;
end;
leklerk вне форума Ответить с цитированием
Старый 02.03.2012, 15:16   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

что здесь?
Цитата:
Код:
ADOCommand1.Execute();
и что здесь?
Цитата:
Код:
ADODataSet2.Open();
ADODataSet2.First();

if ADODataSet2.Fields[0].Value=1 then begin
Цитата:
ADODataSet2 выполняется, чтобы узнать значение поля, которое показывает, разрешена ли корректировка. ADOCommand1 и ADOCommand2 изменяют соответствующим образом значение этого поля.
и как они это делают?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.03.2012, 19:19   #3
leklerk
Пользователь
 
Регистрация: 17.02.2012
Сообщений: 38
По умолчанию

Цитата:
что здесь?
Код:
update Табель set Корректировка=0 where
LEFT(Дата, 2)=Day(Getdate())
Цитата:
и что здесь?
Код:
select TOP 1 Корректировка from Табель where 
LEFT(Дата, 2)=Day(Getdate())
leklerk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопользовательская удаленная БД Marx88 Общие вопросы Delphi 5 23.03.2010 15:23
Получается не многопользовательская задача.... Hermiona Microsoft Office Access 3 08.12.2009 16:43
Многопользовательская видеоконференция на C# Adwenturer Общие вопросы .NET 1 23.11.2009 19:44
Многопользовательская RTS+RPG SaintlyHawk Фриланс 1 13.02.2009 22:13
Многопользовательская БД XPAiN БД в Delphi 16 03.01.2008 22:58