Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
3-50240
DBDev
2003-05-26 17:18
2003.06.16
Как организовать графический эффект на базе значения в TDBGrid?


7-50545
Dms
2003-03-28 15:41
2003.06.16
Работа с устройством через USB


1-50329
Василий Иванович
2003-06-03 14:34
2003.06.16
Работа с Панелью Управления


14-50478
Holy
2003-05-30 13:15
2003.06.16
Литература


1-50326
Apachi
2003-06-03 13:45
2003.06.16
Закрыть все другие приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский