![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TQuery.Locate(field, str, [loPartialKey])
asdf2 © (2008-03-31 11:35:00)Всем привет.
Не могу перевести справку, true будет, если field содержит в себе str или наоборот?
asdf2 (2008-03-31 12:40:00) [1]
> Игорь Шевченко © (31.03.08 12:37) [31]
> clickmaker © (31.03.08 12:37) [32]
Ага, как-нть так и сделаю.
Всем спс.
clickmaker (2008-03-31 12:37:00) [2]
> [30] asdf2 (31.03.08 12:34)
тогда придется свою Locate писать
с переставленными параметрами AnsiPos(val[i], fld_str)
Игорь Шевченко (2008-03-31 12:37:00) [3]руками цикл по датасету и сравнение поля в каждой записи. или SQL-запросом с предикатом LIKE
asdf2 (2008-03-31 12:34:00) [4]
> clickmaker © (31.03.08 12:25) [29]
да, так и надо
clickmaker (2008-03-31 12:25:00) [5]
> мля... мне-то наоборот надо. Может тут подскажите?
наоборот?
в базе хранится "сил", и надо, чтобы запись нашлась по вводу "Василий"?
Reindeer Moss Eater (2008-03-31 12:23:00) [6]а никак. туда рыбу заворачивали.
Сергей М. (2008-03-31 12:22:00) [7]
> asdf2 (31.03.08 12:21) [26]
>
>
И как это кореллирует с [7] ?
asdf2 (2008-03-31 12:21:00) [8]
> Сергей М. © (31.03.08 12:20) [24]
MyMlyaQuery1: TIBQuery;
...
MyMlyaQuery33: TIBQuery;
asdf2 (2008-03-31 12:20:00) [9]даже не наоборот, а как я писал в [7]
Сергей М. (2008-03-31 12:20:00) [10]
> asdf2 (31.03.08 12:18) [23]
Тебе в [22] про Фому, а ты все про Ерему)
asdf2 (2008-03-31 12:18:00) [11]во:
function TIBCustomDataSet.InternalLocate(const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions): Boolean;
var
fl: TList;
CurBookmark: string;
fld : Variant;
val : Array of Variant;
i, fld_cnt: Integer;
fld_str : String;
begin
fl := TList.Create;
try
GetFieldList(fl, KeyFields);
fld_cnt := fl.Count;
CurBookmark := Bookmark;
result := False;
SetLength(val, fld_cnt);
if not Eof then
for i := 0 to fld_cnt - 1 do
begin
if VarIsArray(KeyValues) then
val[i] := KeyValues[i]
else
val[i] := KeyValues;
if (TField(fl[i]).DataType = ftString) and
not VarIsNull(val[i]) then
begin
if (loCaseInsensitive in Options) then
val[i] := AnsiUpperCase(val[i]);
val[i] := TrimRight(string(val[i]));
end;
end;
while ((not result) and (not EOF)) do
begin
i := 0;
result := True;
while (result and (i < fld_cnt)) do
begin
fld := TField(fl[i]).Value;
if VarIsNull(fld) then
result := result and VarIsNull(val[i])
else
begin
// We know the Field is not null so if the passed value is null we are
// done with this record
result := result and not VarIsNull(val[i]);
if result then
begin
try
fld := VarAsType(fld, VarType(val[i]));
except
on E: EVariantError do result := False;
end;
if TField(fl[i]).DataType = ftString then
begin
fld_str := TField(fl[i]).AsString;
fld_str := TrimRight(fld_str);
if (loCaseInsensitive in Options) then
fld_str := AnsiUpperCase(fld_str);
if (loPartialKey in Options) then
result := result and (AnsiPos(val[i], fld_str) = 1)
else
result := result and (fld_str = val[i]);
end
else
result := result and (val[i] = fld);
end;
end;
Inc(i);
end;
if not result then
Next;
end;
if not result then
Bookmark := CurBookmark
else
CursorPosChanged;
finally
fl.Free;
val := nil;
end;
end;
мля... мне-то наоборот надо. Может тут подскажите?
Reindeer Moss Eater (2008-03-31 12:15:00) [12]У меня есть 33 экземпляра TQuery.
Я вызываю поиск:
TQuery.Locate('ответ',........)
Угадай, в каком именно из тридцати трех экземпляров будет производится поиск?
asdf2 (2008-03-31 12:08:00) [13]
> Reindeer Moss Eater © (31.03.08 12:05) [19]
думаю, пора создать ветку "Классовый метод", глядишь, там получу ответ на свой вопрос
Reindeer Moss Eater (2008-03-31 12:07:00) [14]Или я докопался и до TQuery?
Игорь Шевченко (2008-03-31 12:05:00) [15]
> так мой переводчик сказал
Воспользуйся услугами нормального переводчика.
Reindeer Moss Eater (2008-03-31 12:05:00) [16]if TQuery.Locate(field, str, [loPartialKey]) then ShowMessage('rgsd');
Locate - это не классовый метод, а вросто метод класса.
Для вызова экземпляр нужен.
clickmaker (2008-03-31 12:05:00) [17]
> Ключевые величины могут включить только часть сочетающейся
> ключевой величины области
смени переводчика
или переведи уже сам. Там английский-то на уровне "фэйсом об тэйбл"...
asdf2 (2008-03-31 12:04:00) [18]
> Reindeer Moss Eater © (31.03.08 12:00) [15]
млин, ведь надо ж докопаться
'field'
Reindeer Moss Eater (2008-03-31 12:00:00) [19]Когда выплывет сообщение
if TQuery.Locate( field, str, [loPartialKey]) then ShowMessage('rgsd');
сейчас
TQuery.FieldByNAme( 'field ').AsString = 'Василий'
str = 'сил'
asdf2 (2008-03-31 11:59:00) [20]Ключевые величины могут включить только часть сочетающейся ключевой величины области;
так мой переводчик сказал. Кто где непонятно