На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Разработка баз данных / Я хочу выполнить SQL-выражение и получить результат в свою переменную, что-то типаSELECT MAV(FieldA) FROM TableB INTO :VariableC; Сделать домашней страницей Добавить в избранное Написать писмо

Я хочу выполнить SQL-выражение и получить результат в свою переменную, что-то типаSELECT MAV(FieldA) FROM TableB INTO :VariableC;


Вам не нужно использовать оператор INTO для программного доступа к результату - его можно получить используя свойства Fields или FieldByName соответствующего компонента TQuery.
TQuery1.Add(' SELECT MAX(FiledA) FROM TableB ');
TQuery.Open;
...
VariableC := TQuery1.Fields[0];
Или, если результат нужно визуально отобразить, достаточно подключить к используемому TQuery компоненты TDataSource и TDBText.

Комментарий от "Alex Onezashvili" (ao@ti.net.ge)

ПРИСЫЛАЮ ФУНКЦИЮ ТОЛЬКО ОНА В BDE

Входные параметры понятны интуитивно если Database отсутсвует функция открывает локальную директорию и читает dbf-файлы из нее

function GetQueryValue(DtBase:TDataBase;SQL: string;
DataBasename:string='';IbUser:string='';IbPass:string=''):Variant;
var
 Props: CURProps;
 HCursor: hDBICur;
 BlobIndex:Word;
 iRecCount:Integer;
 hTmpDb: hDBIDB;
 pRecBuf:pBYTE;
 Dest:String;
 pFlds: pFLDDesc;
 begin
 if (DataBasename='') and (DtBase<>nil) then
 hTmpDb:=DtBase.Handle else
 hTmpDb:=fDbiOpenDatabase(DataBasename,IbUser,IbPass);
Check(DbiQExecDirect(hTmpDb, qrylangSQL, Pchar(SQL), @HCursor));
Check(DbiGetExactRecordCount(hCursor,iRecCount));
if iRecCount<1 then Exit;
 Check(DbiSetToBegin(HCursor));
 Check(DbiGetCursorProps(HCursor, Props));
 pRecBuf := AllocMem(Props.iRecBufSize * sizeof(BYTE));
 pFlds := AllocMem(Props.iFields * sizeof(FLDDesc));
 Check(DbiGetNextRecord(HCursor, dbiNOLOCK, pRecBuf, nil));
 Check(DbiGetFieldDescs(hCursor, pFlds));

 if pFlds.iFldType=fldBLOB then
 begin
 BlobIndex:=0;
 fmDbiGetBlob(hCursor,pRecBuf,BlobIndex,Dest);
 Result:=Dest;
 end
 else
 Result:=fDbiGetField(HCursor,1);
 DbiCloseCursor(HCursor);
 end;

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz