Вниз
Скачать: CL | DM;

Как подменять значения некоторых полей результата запроса?   Найти похожие ветки 

 
pav_oleg ©   (2003-05-26 01:40) [0]

Всем доброе время суток!
Вопрос для знатоков ADO.
В приложение куча TADOQuery, соединяемых с базой через ac1:TADOConnection;
Все query выполняют только Select. Необходимо после выполнения запроса (ADOQuery1.Open) обработать строковые поля при помощи спец. функции.
Дано:
MyFunc(const s : string) s : string;
TableA(iField : int, s1 : varchar(…), xField : numeric(…), s2 : varchar(…))
ADOQuery1.SQL = “Select * from TableA”.
Нужно, чтобы после открытия набора данных значения строковых полей s1 и s1 были равны MyStrFunc(s1) и MyStrFunc(s2) соответственно. Причем, необходимо, чтобы в базе значения не менялись. Вообще это нужно для всех TADOQuery, которых куча. Думаю, что должно помочь событие TADOConnection.OnExecuteComplete.

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

Если кому все ещё интересно :+)), нужно это для динамического «прозрачного» расшифрования всех текстовых данных, возвращаемых всеми запросами. Реализовать шифрование получилось следующим образом:

procedure TDM.ac1WillExecute(Connection: TADOConnection;
var CommandText: WideString; var CursorType: TCursorType;
var LockType: TADOLockType; var CommandType: TCommandType;
var ExecuteOptions: TExecuteOptions; var EventStatus: TEventStatus;
const Command: _Command; const Recordset: _Recordset);
var
i : integer;
tempStr : string;
Par : _Parameter;
begin
if CommandType = cmdStoredProc
then begin // если это хранимая процедура
for i := 0 to Command.Parameters.Count-1 do
try
if Command.Parameters.Item[i].Type_ in [adVarChar]
then begin // значит текстовый параметр
Par := Command.Parameters.Item[i];
Par.Value := Encode(Par.Value);
end;
except on e : exception do;
end;
end
end;


 
sniknik ©   (2003-05-26 02:03) [1]

не скажу что все понял :) но суть вроде уловил, нужно подменять значение текстового поля перед показом? есть такое событие onGetText у поля, обрабатывай его, по onSetText обратно на запись. Или вычисляемое поле если не нужно менять в базе.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.015 c
1-50286
alik_os
2003-06-04 14:31
2003.06.16
Запись CD-R более 700 метров


3-50217
dimm
2003-05-26 11:26
2003.06.16
Как очистить данные кешированные запросом IBQuery?


1-50292
Arm79
2003-06-04 17:13
2003.06.16
Установка компонент сторонниз разработчиков


14-50464
Style
2003-05-28 08:13
2003.06.16
Тут мою музыку на студии обработали :)


14-50496
Leather
2003-05-30 22:51
2003.06.16
Оцените работы




   Наверх