Форум: "Базы";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизКак обновить TQuery не потеряв при этом текущей записи Найти похожие ветки
← →
Ryser (2002-11-05 13:37) [0]Есть такая процедура
описываю ее в самом начале юнита
procedure RefreshQuery(AdoQuery : TAdoQuery; const FieldsForSearch: String);
var
AList : TList;
AVarArray : Variant;
i : Byte;
begin
AList := TList.Create;
try
AdoQuery.GetFieldList(AList, FieldsForSearch);
AVarArray := VarArrayCreate([0, AList.Count - 1], varVariant);
for i := 0 to Pred(AList.Count) do
AVarArray[i] := TField(AList.Items[i]).AsVariant;
AdoQuery.Close;
AdoQuery.Open;
AdoQuery.Locate(FieldsForSearch, AVarArray, []);
finally
AList.Free;
AVarArray.Free;//тут стояло "р" компилятор ругался-убрал
end;
end;
потом далее вызываю
.....
RefreshQuery(AdoQuery1,"id");
.....
теперь ругается на Invalid Variant Type Conversion
на месте
AdoQuery.Locate(FieldsForSearch, AVarArray, []);
Подскажите, пожалуйста!
← →
BoxTer (2002-11-05 13:45) [1]Зачем так усложнять итого нелегкую жизнь...
А так:
procedure RefreshQuery(AdoQuery : TAdoQuery; const FieldsForSearch: String);
var pr:string;
Begin
pr:=ADOQuery.FieldByName(FieldsForSearch).asString;
ADOQuery.Close;
ADOQuery.Open;
ADOQuery.Locate(FieldsForSearch,pr,[...]);
end;
... и все ...
← →
Ryser (2002-11-05 13:51) [2]Просто генитально! Благодарственное спасибо BoxTer-у!
← →
Johnmen (2002-11-05 13:58) [3]>BoxTer © (05.11.02 13:45)
Зачем так упрощать итого простую жизнь...
>Ryser
Посмотри в сторону VarArrayOf.
← →
SaS13 (2002-11-05 14:01) [4]у ADOQuery есть св-во Requery - работает быстрее, чем если просто закрыть и открыть заново.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c