Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.01.2013, 15:35
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию Печать DbGridEh

Здравствуйте! такой вопрос...В DbgridEh отображается база аксесс. В одном из столбцов процедура замены символов

Код:
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
 if column.FieldName = 'Unit' then
   with dbgrideh1.Canvas do
   begin
     fillrect(rect);
     if adoquery1.FieldByName('Unit').AsString = 'считыватель 2-2' then
     begin
     textout(rect.Left + 39 - dbgrideh1.Canvas.TextWidth('заезд'),
     rect.Top + 2, 'заезд');
     end
     else
     textout(rect.Left + 39 - dbgrideh1.Canvas.TextWidth('выезд'),
     rect.Top + 2, 'выезд');
     end;
end; 

На экране все норм, но когда вывожу на печать, то печатается "считыватель"...как можно сделать, чтобы печаталось все таки "заезд"...?
Ответить с цитированием
  #2  
Старый 29.01.2013, 15:54
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Лучше использовать гриды для отображения информации, а всякие замены и т.п. осуществлять на уровне запроса к базе данных.
Просто это самый оптимальный вариант.

Тем более твой код просто рисует текст на канве, а не меняет значения внутри самого грида.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 29.01.2013, 15:58
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию

А можно пример или хотя бы ссылку на построение такого запроса?
Ответить с цитированием
  #4  
Старый 29.01.2013, 16:04
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Выборку как делаешь? Код в студию.

На счет акцеса помочь не могу, только с Ораклом.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 29.01.2013, 16:14
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию

Выборка простая...

Код:
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT * FROM events where events.message = "проход совершен" ');
  ADOQuery1.Active := True;

Просто представления даже не имею, как можно запросом "заменить слова"...и нагуглить не могу пока ничего полезного)
Ответить с цитированием
  #6  
Старый 29.01.2013, 16:19
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

примерно так, не помню только может ли акцесс работать с IIF
Код:
SELECT *, IIF(unit = 'считыватель 2-2', 'заезд', 'выезд') as new_str FROM events where events.message = "проход совершен" 

гугление
в частности это
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 29.01.2013 в 16:22.
Ответить с цитированием
  #7  
Старый 29.01.2013, 16:29
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию

ругается на эту строку

ADOQuery1.SQL.Add('SELECT *, IIF(unit = 'Считыватель 2-2', 'заезд', 'выезд') as new_str FROM events where events.message = "проход совершен"');

Illegal character in input file: 'C' ($D1)
Ответить с цитированием
  #8  
Старый 29.01.2013, 16:31
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

со скобками решите вопрос .. возможно нужны двойные
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #9  
Старый 29.01.2013, 16:34
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию

да, в скобках дело было. Прога запускается, эффекта ноль...выводится "считыватель" в гриде...
Ответить с цитированием
  #10  
Старый 29.01.2013, 16:37
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

дык у нас сформировалось новое (дополнительное) поле new_str вот на него, а не на unit теперь и нужно нацеливать грид
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #11  
Старый 29.01.2013, 16:45
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию

Ааа, все понял. Просто столбцы были скрыты некоторые, поэтому не сообразил сразу. Спасибо большое, всем кто помог!

И можно еще вопрос, этот new_str теперь столбцом выходит...можно ли как то его дальше переместить?)
Ответить с цитированием
  #12  
Старый 29.01.2013, 16:49
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Kis
можно ли как то его дальше переместить?)
в каком смысле "переместить" ?
если по гриду - ну так перетащи мышкой его куда нужно и все
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 29.01.2013 в 16:51.
Ответить с цитированием
  #13  
Старый 29.01.2013, 16:53
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию

Мышкой то можно...а программно никак нельзя? допустим 5-ым столбцом его сделать...
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter