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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2011, 07:45   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Не стыковка SQL запроса и раскраски DBGrid

Доброе утро! Возникла некая не стыковка запроса и раскраски DBGrid. Код раскраски (не маленький, но ее работа меня полностью устраивает):
Код раскраски выложил в файл, т.к. он очень большой.
а вот сам запрос:
Код:
   Form1.qry1.Active:=False;
   Form1.qry1.SQL.Text:='select * from export where raion=' + QuotedStr(Form1.sComboBox2.Text) + ' and export.[forma]=' + QuotedStr(Form1.sComboBox4.Text) + ' and export.[tip]' + Form1.sComboBox5.Text + QuotedStr(Form1.sComboBox6.Text) + ' and export.[kvartal]' + Form1.sComboBox7.Text + Form1.sComboBox8.Text + ' and export.[god]' + Form1.sComboBox9.Text + Form1.sComboBox10.Text;
   Form1.qry1.Open;
   Form1.ds1.DataSet:=Form1.qry1;
оба этих кода рабочие. Но, по-отдельности, т.е. если я включаю код раскраски и выполняю запрос в отдельной кнопке, то получаю ошибку EAccessViolation. Если не выполнять запрос, то раскраска работает. Как бы их объединить, чтобы раскраска работала всегда?
Вложения
Тип файла: zip Раскраска_DBGrid.zip (1.1 Кб, 8 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 12.03.2011 в 07:51.
artemavd вне форума Ответить с цитированием
Старый 12.03.2011, 14:51   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

попробуйте при переоткрытии отключать отображение.(disable/enable control)
Код:
form1,qr1.disableControls;
form1.qr1.close; //active:=false;
form1.qr1.sql.text:=
form1,ds1.dataset:=form1.qr1;//почему бы не сделать это один раз в InspectorObject
form1.qr1.open;
form1,qr1.enablecontrols;
Цитата:
Код:
if (compareStr(fieldByName('raion').as String, '48002') = 0) and
(fieldByName('raion').asInteger = 48002)
масло масляное.
вполне достаточно любого одного из этих условий

Цитата:
Код:
// with Form1.qry1 do
// begin
 ......
// end;
в вашем случае легко заменяется на такую конструкцию
если конечно в кодах не появится значение которое нельзя будет превратить в число.

Код:
case Form1.qry1.fieldByName('raion').AsInteger of
48002, 48003, 48004, 48005, 48006: begin
  RxDBGrid1.Canvas.Font.color := clRed;
  RxDBGrid1.Canvas.font.style := [fsBold];
end;

// МРП_2
48001, 48008, 48010, 48012, 48013, 48015, 48016, .....: begin
  RxDBGrid1.Canvas.Font.color := clGreen;
  RxDBGrid1.Canvas.font.style := [fsBold];
end;
.......
//МРП_8
48027: begin
  RxDBGrid1.Canvas.Font.color := clFuchsia;
  RxDBGrid1.Canvas.font.style := [fsBold];
end;

end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 12.03.2011, 16:10   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
если конечно в кодах не появится значение которое нельзя будет превратить в число.
Да нет, не должно. У меня сверяется только по указанному полю, а там только число, другого быть не может.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание запроса SQL Irina_87 Помощь студентам 12 28.12.2009 06:14
TCoolBar и стыковка к нему компонентов... chandrasecar Общие вопросы Delphi 3 26.12.2009 22:40
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) Schutze Помощь студентам 6 29.11.2009 22:15