|
|
|
|
Я хочу
выполнить 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
|
|