|
#1
|
|||
|
|||
Печать 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
|
||||
|
||||
Лучше использовать гриды для отображения информации, а всякие замены и т.п. осуществлять на уровне запроса к базе данных.
Просто это самый оптимальный вариант. Тем более твой код просто рисует текст на канве, а не меняет значения внутри самого грида. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
А можно пример или хотя бы ссылку на построение такого запроса?
|
#4
|
||||
|
||||
Выборку как делаешь? Код в студию.
На счет акцеса помочь не могу, только с Ораклом. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#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 = "проход совершен" гугление в частности это Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 29.01.2013 в 16:22. |
#7
|
|||
|
|||
ругается на эту строку
ADOQuery1.SQL.Add('SELECT *, IIF(unit = 'Считыватель 2-2', 'заезд', 'выезд') as new_str FROM events where events.message = "проход совершен"'); Illegal character in input file: 'C' ($D1) |
#8
|
||||
|
||||
со скобками решите вопрос .. возможно нужны двойные
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#9
|
|||
|
|||
да, в скобках дело было. Прога запускается, эффекта ноль...выводится "считыватель" в гриде...
|
#10
|
||||
|
||||
дык у нас сформировалось новое (дополнительное) поле new_str вот на него, а не на unit теперь и нужно нацеливать грид
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#11
|
|||
|
|||
Ааа, все понял. Просто столбцы были скрыты некоторые, поэтому не сообразил сразу. Спасибо большое, всем кто помог!
И можно еще вопрос, этот new_str теперь столбцом выходит...можно ли как то его дальше переместить?) |
#12
|
||||
|
||||
Цитата:
если по гриду - ну так перетащи мышкой его куда нужно и все Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 29.01.2013 в 16:51. |
#13
|
|||
|
|||
Мышкой то можно...а программно никак нельзя? допустим 5-ым столбцом его сделать...
|