Главная страница
    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.45 MB
Время: 0.006 c
1-50361
FANTASY
2003-06-03 01:37
2003.06.16
прогрес окно


1-50308
McSimm2
2003-06-03 09:16
2003.06.16
Двустрочный итем в ComboBox


7-50544
Seb_Kost
2003-04-07 09:28
2003.06.16
Проблемка с TurboAsync


1-50339
Soft
2003-05-30 18:39
2003.06.16
Работа с файлами Excel


6-50414
deep.1
2003-04-11 12:53
2003.06.16
Вопрос насчет tcpserver a





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский