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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2010, 16:38   #21
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Хм. Не сталкивался с такой необходимостью.
Если не секрет, то зачем нужна эта проверка?
Справляюсь с той целью, что может быть проверку можно сделать и по другому.

Да, и почему по клику на кнопке?

Последний раз редактировалось Karabash; 12.10.2010 в 16:46.
Karabash вне форума Ответить с цитированием
Старый 12.10.2010, 16:48   #22
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Да мне это нужно, чтобы просто уведомить пользователя, что есть красные строки, следовательно не все ошибки исправлены. Знаете как написать проверку цвета?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.10.2010, 19:38   #23
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Как узнать цвет в ячейке не знаю. Но здесь наверное надо не цвет проверять, а данные. В клике кнопки сделайте запрос (SELECT) с фильтром на данные, которые приводят к красному цвету в гриде. Если не пустой результат запроса, значит есть красный цвет, о чем и уведомляем юзера. Результат пустой - значит все в порядке.
Быстро и со вкусом.

Чем еще мне не нравится проверка цвета в гриде. Если красная строка будет где-то вне видимой части гриды, то обязательно наступит ситуация когда такая проверка ничего не даст - грида часто содержит только то что отображает, а все остальное в буфере Dataset'а.

Добавлю. Грида закрашивает ячейки динамически по мере надобности. Именно поэтому никакой красной строки в ней нет, если строка, где должен быть красный цвет не видна.

Последний раз редактировалось Karabash; 12.10.2010 в 19:50.
Karabash вне форума Ответить с цитированием
Старый 12.10.2010, 19:46   #24
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Понятно. Спасибо . Пожалуй попробую сделать запрос. Если что, то обращусь сюда.

Вот, решил не запрос делать, а попробовать проверить столбец программно. Вот так:
Код:
 if Form1.ADOQuery1.FieldByName('Number contract').IsNull = True then
 begin
  ShowMessage(' Не все ошибки исправлены, пожалуйста повторите проверку!');
 end;

 if Form1.ADOQuery1.FieldByName('Number contract').IsNull = False then
 begin
  ShowMessage(' Все ошибки исправлены! Данные могут быть перенесы!');
 end;
но почему-то срабатывает только второе условие. Специально оставил одну ячейку пустой. Че я тут неправильно написал? Или не дописал.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 12.10.2010 в 19:58.
artemavd вне форума Ответить с цитированием
Старый 12.10.2010, 20:04   #25
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Это вы не столбец проверяете, а одну единственную ячейку в текущей строке (в той, которая отмечена, выделена).
Я так понимаю, что вам нужно проверить данные по всем ячейкам в колонке. Если так, то без запроса не обойтись.

Хм, а чё это дубль поста появился? Что-то не так сделал? Удалите? А то как-то неудобно получилось.

Последний раз редактировалось Karabash; 12.10.2010 в 20:06.
Karabash вне форума Ответить с цитированием
Старый 12.10.2010, 20:13   #26
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Удалил Ваш дубль). Можно примерчик запроса? А я думал, что это по всей колонке проверяется....
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.10.2010, 20:25   #27
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Спасибо за службу.
Не, не по все колонке. В DataSet (здесь ADOQuery1) в каждый момент времени активна только одна строка из всего результата запроса. Если запрос связан с гридой, то активна та строка результата, которая отмечена в гриде. Поэтому и не получилось.
А пример запроса? Какая СУБД используется?
Karabash вне форума Ответить с цитированием
Старый 13.10.2010, 04:47   #28
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

СУБД ADO используется..
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.10.2010, 07:35   #29
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Спрашивал не про технологию доступа к базе данных (ADO это понятно). А про саму БД. Как БД называется, где хранятся данные? К примеру, MS SQL, MySQL, Oracle, ...
Если бы речь шла, допустим, о MS SQL, то уведомление об ошибках в данных могло бы выглядеть так:
Код:
procedure Tform1.Btn1Click(Sender : TObject);
var
  qrTmp : TADOQuery;
begin
  qrTmp := TADOQuery.Create(Self);
  try
    qrTmp.Connection := ADOConnection1;
    qrTmp.SQL.Text := 'select * from <здесь имя таблицы> where ([Number contract] is null) or '+
                    '[Number contract] < 3';
    qrTmp.Open;
    if not qrTmp.Eof then
      //сообщение о том, что есть ошибочные данные
  finally
    qrTmp.Close;
    qrTmp.Free;
  end;
end;

Последний раз редактировалось Karabash; 13.10.2010 в 07:43.
Karabash вне форума Ответить с цитированием
Старый 13.10.2010, 09:33   #30
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Во, написал так:
Код:
procedure TForm1.BtnClick(Sender: TObject);
var
 qrTmp: TADOQuery;
begin
 qrTmp:=TADOQuery.Create(Self);
 try
  qrTmp.Connection:=Form1.ADOConnection1;
  qrTmp.SQL.Text:='select * from ' + Form1.Label61.Caption + ' where ([Number contract] is null) or ' +
                  '([Number contract] < "3")';
  qrTmp.Open;
  if not qrTmp.Eof then
     ShowMessage(' Есть ошибки! ');
  finally
   qrTmp.Close;
   qrTmp.Free;
  end
 end;
пришлось в это условие
Код:
'([Number contract] < "3")'
добавиьт кавычки, т.к. ругался на несоотвествие типов. Но у меня теперь выдает мое сообщение, даже когда я исправил, т.е. вписал значение и кол-во символов в нем больше 3...То есть не работает немного
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раскраска диаграммы dayfuaim Microsoft Office Excel 8 22.08.2010 15:44
Раскраска эллипса rubik Мультимедиа в Delphi 1 02.05.2010 05:21
цветовая раскраска эллипса rubik Помощь студентам 1 01.05.2010 15:52
раскраска матрицы jeyjoe Помощь студентам 0 12.11.2009 18:49
Раскраска домика в графике Tirr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 28.10.2009 22:10