![]() |
|
|
|
|
#1
|
|||
|
|||
|
Здравствуйте! такой вопрос...В 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
|
||||
|
||||
|
Лучше использовать гриды для отображения информации, а всякие замены и т.п. осуществлять на уровне запроса к базе данных.
Просто это самый оптимальный вариант. Тем более твой код просто рисует текст на канве, а не меняет значения внутри самого грида. |
|
#3
|
|||
|
|||
|
А можно пример или хотя бы ссылку на построение такого запроса?
|
|
#4
|
||||
|
||||
|
Выборку как делаешь? Код в студию.
На счет акцеса помочь не могу, только с Ораклом. |
|
#5
|
|||
|
|||
|
Выборка простая...
Код:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM events where events.message = "проход совершен" ');
ADOQuery1.Active := True;Просто представления даже не имею, как можно запросом "заменить слова"...и нагуглить не могу пока ничего полезного) |
|
#6
|
||||
|
||||
|
примерно так, не помню только может ли акцесс работать с IIF
Код:
SELECT *, IIF(unit = 'считыватель 2-2', 'заезд', 'выезд') as new_str FROM events where events.message = "проход совершен" гугление в частности это Последний раз редактировалось Yurk@, 29.01.2013 в 16:22. |