MyQuery while

Обсуждение возникших проблем, предложений и ошибок MyDAC компонентов
Закрыто
MrKreDo
Сообщения: 2
Зарегистрирован: Пн 21 ноя 2011 13:16
Контактная информация:

MyQuery while

Сообщение MrKreDo » Пн 05 дек 2011 21:23

Добрый вечер.

Пытаюсь сделать на основе выведенных данных, блокировать нужный Label.

В данный момент блокируется TLabel1, а второе значение TLabel6 не блокируется. ( не ставится переменная Enabled на false ).

Неоходимо сделать так что бы TLabel1 и TLabel6 , при совпадении ставилось значение Enabled:=false.

Код: Выделить всё

MyQuery6.SQL.Clear;
MyQuery6.SQL.Add('SELECT * FROM `soft_admin_access` WHERE `id_user`="'+MyQuery5.FieldByName('id').AsString+'"');
MyQuery6.Execute;
MyQuery6.Open;
while not (MyQuery6.Eof) do
begin
if (MyQuery6.FieldByName('category').AsString = 'avto_vkl') then
begin
TLabel6.Enabled:=false;
end else
begin
TLabel6.Enabled:=true;
end;

if (MyQuery6.FieldByName('category').AsString = 'public1') then
begin
TLabel1.Enabled:=false;
end else
begin
TLabel1.Enabled:=true;
end;
MyQuery6.Next;
Спасибо.

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Сообщение AndreyZ » Вт 06 дек 2011 10:37

Здравствуйте,

Если Вы хотите определить существуют ли категории avto_vkl и public1 в таблице soft_admin_access для пользователя id_user и отразить это на форме установкой свойств TLabel.Enabled в False, Вам следует использовать следующий код:

Код: Выделить всё

MyQuery6.SQL.Clear;
MyQuery6.SQL.Add('SELECT * FROM `soft_admin_access` WHERE `id_user`="'+MyQuery5.FieldByName('id').AsString+'"');
MyQuery6.Open;
TLabel1.Enabled := True;
TLabel6.Enabled := True;
while not (MyQuery6.Eof) do begin 
  if (MyQuery6.FieldByName('category').AsString = 'avto_vkl') then
    TLabel6.Enabled := False;
  if (MyQuery6.FieldByName('category').AsString = 'public1') then 
    TLabel1.Enabled := False;
 MyQuery6.Next;
end;
Ваш код в данном случае приведет к ошибочным результатам. Например, если последняя запись в MyQuery6 содержит категорию отличную от avto_vkl и public1, то обе Ваши метки будут иметь свойство Enabled=True, хотя эти категории были в предыдущих записях. Если Вам нужна другая функциональность, опишите ее подробнее и мы попытаемся Вам помочь.

MrKreDo
Сообщения: 2
Зарегистрирован: Пн 21 ноя 2011 13:16
Контактная информация:

Сообщение MrKreDo » Вт 06 дек 2011 20:38

AndreyZ писал(а):Здравствуйте,

Если Вы хотите определить существуют ли категории avto_vkl и public1 в таблице soft_admin_access для пользователя id_user и отразить это на форме установкой свойств TLabel.Enabled в False, Вам следует использовать следующий код:

Код: Выделить всё

MyQuery6.SQL.Clear;
MyQuery6.SQL.Add('SELECT * FROM `soft_admin_access` WHERE `id_user`="'+MyQuery5.FieldByName('id').AsString+'"');
MyQuery6.Open;
TLabel1.Enabled := True;
TLabel6.Enabled := True;
while not (MyQuery6.Eof) do begin 
  if (MyQuery6.FieldByName('category').AsString = 'avto_vkl') then
    TLabel6.Enabled := False;
  if (MyQuery6.FieldByName('category').AsString = 'public1') then 
    TLabel1.Enabled := False;
 MyQuery6.Next;
end;
Ваш код в данном случае приведет к ошибочным результатам. Например, если последняя запись в MyQuery6 содержит категорию отличную от avto_vkl и public1, то обе Ваши метки будут иметь свойство Enabled=True, хотя эти категории были в предыдущих записях. Если Вам нужна другая функциональность, опишите ее подробнее и мы попытаемся Вам помочь.
Спасибо. Код работает как надо.

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Сообщение AndreyZ » Ср 07 дек 2011 11:25

Мы рады что смогли Вам помочь. Пишите нам если у Вас возникнут дальнейшие вопросы по MyDAC.

Закрыто