Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.16;
Скачать: 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 вся ветка

Текущий архив: 2003.06.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
14-50496
Leather
2003-05-30 22:51
2003.06.16
Оцените работы


9-50187
Fog
2003-01-03 19:21
2003.06.16
Sprite


1-50272
alienka
2003-06-03 11:39
2003.06.16
помогите с поиском в строке по шаблону!


3-50234
Basic
2003-05-24 02:38
2003.06.16
Delete не любит длинное условие


1-50374
pathfinder
2003-06-04 01:20
2003.06.16
opendialog.filename...