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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2009, 14:47   #1
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию Проверка, является ли число равным одному из чисел, получаемых из запроса Adoquery

Есть запрос в Delphi
Код:
Adoquery2.SQL.Text:=
'select cab_id from cab_users '+
'Where us_id='+chr(39)+inttostr(c)+chr(39);
Adoquery2.Active:=true;
Он возвращает как я понял несколько значений, т.е cab_id Мне нужно проверить теперь равняется ли одно из этих чисел, числу d, где с d проблем нет. Я делаю так, и никакой реакции, даже ошибок не выдает.
Код:
ADOQuery2.First;
for k:=0 to Adoquery2.FieldCount-1
do
begin
if d=adoquery2.Fields[0].AsInteger
then
  begin
  showmessage('Такой кабинет уже есть');
  exit;
  end;
 ADOQuery2.Next;
 end;
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 01.05.2009, 15:52   #2
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

Может никакой реакции нет, потому что совпадений нет?)
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 01.05.2009, 16:10   #3
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Код:
if d=adoquery2.Fields[0].AsInteger
не [0], а [k]

Код:
if d=adoquery2.Fields[k].AsInteger
Gorychev вне форума Ответить с цитированием
Старый 01.05.2009, 16:31   #4
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Спасибо Gorychev, но так тоже пробовал, тоже никакой реакции, может я неправильно понимаю логику работы Adoquery?
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 01.05.2009, 16:40   #5
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Ну вы блин даете, не
Код:
Adoquery2.FieldCount-1
а
Код:
ADOQuery1.RecordCount-1
FieldCount - кол-во столбцов
RecordCount - кол-во записей
Gorychev вне форума Ответить с цитированием
Старый 01.05.2009, 16:50   #6
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Теперь выдает ошибку List index out of bounds(0).
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 01.05.2009, 16:53   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

проще это все проверить через запрос
Код:
Adoquery2.SQL.Text:=
format('select count(cab_id) cnt from cab_users where us_id= %d and cab_id = %d', [c, d]);
Adoquery2.Active:=true;

if Adoquery2.FieldByName('cnt').AsInteger>0 then
    showmessage(format('Кабинет №%d уже есть', [d]));

Последний раз редактировалось soleil@mmc; 01.05.2009 в 16:56.
soleil@mmc вне форума Ответить с цитированием
Старый 01.05.2009, 16:56   #8
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Так попробуйте:

Код:
adoquery2.First;
  while not adoquery2.Eof do begin
    if d=adoquery2.Fields[k].AsInteger then  begin
       showmessage('Такой кабинет уже есть');
       exit;
    end;
 ADOQuery2.Next 
end;

Последний раз редактировалось Gorychev; 01.05.2009 в 17:38.
Gorychev вне форума Ответить с цитированием
Старый 01.05.2009, 17:06   #9
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Gorychev Посмотреть сообщение
Так попробуйте:

Код:
adoquery2.First;
  while not adoquery2.Eof do begin
    if d=adoquery2.Fields[0].AsInteger then  begin
       showmessage('Такой кабинет уже есть');
       exit;
    end;
 ADOQuery2.Next 
end;
СПАСИБО ОГРОМНОЕ,Gorychev!!! Работает так, как хотелось!
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка List index out of bounds(0) при использовании запроса AdoQuery ArtInt БД в Delphi 14 15.04.2009 18:35
Определить является ли данное число совершенным.. Паскаль. Karabas Помощь студентам 6 23.12.2008 21:53
является ли заданное натуральное число совершенным Савинова Помощь студентам 3 19.11.2008 09:51
Дбавление в таблицу из запроса ADOQuery. VladimirAleks БД в Delphi 2 12.09.2007 13:49