Текущий архив: 2008.04.27;
Скачать: CL | DM;
Вниз
TQuery.Locate(field, str, [loPartialKey]) Найти похожие ветки
← →
asdf2 (2008-03-31 11:35) [0]Всем привет.
Не могу перевести справку, true будет, если field содержит в себе str или наоборот?
← →
Reindeer Moss Eater © (2008-03-31 11:37) [1]по твоему if not locate - значит найдено?
← →
asdf2 (2008-03-31 11:39) [2]да
← →
asdf2 (2008-03-31 11:39) [3]тьфу, нет
← →
asdf2 (2008-03-31 11:40) [4]
> Reindeer Moss Eater © (31.03.08 11:37) [1]
лучше ответь, что в чем должно содержаться, чтобы нашлось
← →
Reindeer Moss Eater © (2008-03-31 11:45) [5]что бы нашлось, вообще ничего и нигде не должно содержаться.
← →
clickmaker © (2008-03-31 11:47) [6]
> лучше ответь, что в чем должно содержаться, чтобы нашлось
- Скажите, если я пойду прямо по этой улице, там будет вокзал?
- Он там будет, даже если вы туда не пойдете
(с) одесский анекдот
← →
asdf2 (2008-03-31 11:48) [7]Когда выплывет сообщение
if TQuery.Locate(field, str, [loPartialKey]) then ShowMessage("rgsd");
сейчас
TQuery.FieldByNAme("field").AsString = "Василий"
str = "сил"
или тут:
TQuery.FieldByNAme("field").AsString = "сил"
str = "Василий"
← →
asdf2 (2008-03-31 11:49) [8]Удалено модератором
← →
Reindeer Moss Eater © (2008-03-31 11:51) [9]Когда выплывет сообщение
никогда
← →
asdf2 (2008-03-31 11:52) [10]
> Reindeer Moss Eater © (31.03.08 11:51) [9]
как жалко, а что тады означает loPartialKey?
← →
Reindeer Moss Eater © (2008-03-31 11:54) [11]а что означает "field"
← →
Reindeer Moss Eater © (2008-03-31 11:58) [12]Locate returns true if a record is found that matches the specified criteria and that record is now active.
← →
asdf2 (2008-03-31 11:58) [13]Удалено модератором
← →
asdf2 (2008-03-31 11:59) [14]Ключевые величины могут включить только часть сочетающейся ключевой величины области;
так мой переводчик сказал. Кто где непонятно
← →
Reindeer Moss Eater © (2008-03-31 12:00) [15]Когда выплывет сообщение
if TQuery.Locate(field, str, [loPartialKey]) then ShowMessage("rgsd");
сейчас
TQuery.FieldByNAme("field").AsString = "Василий"
str = "сил"
← →
asdf2 (2008-03-31 12:04) [16]
> Reindeer Moss Eater © (31.03.08 12:00) [15]
млин, ведь надо ж докопаться
"field"
← →
Игорь Шевченко © (2008-03-31 12:05) [17]
> так мой переводчик сказал
Воспользуйся услугами нормального переводчика.
← →
clickmaker © (2008-03-31 12:05) [18]
> Ключевые величины могут включить только часть сочетающейся
> ключевой величины области
смени переводчика
или переведи уже сам. Там английский-то на уровне "фэйсом об тэйбл"...
← →
Reindeer Moss Eater © (2008-03-31 12:05) [19]if TQuery.Locate(field, str, [loPartialKey]) then ShowMessage("rgsd");
Locate - это не классовый метод, а вросто метод класса.
Для вызова экземпляр нужен.
← →
Reindeer Moss Eater © (2008-03-31 12:07) [20]Или я докопался и до TQuery?
← →
asdf2 (2008-03-31 12:08) [21]
> Reindeer Moss Eater © (31.03.08 12:05) [19]
думаю, пора создать ветку "Классовый метод", глядишь, там получу ответ на свой вопрос
← →
Reindeer Moss Eater © (2008-03-31 12:15) [22]У меня есть 33 экземпляра TQuery.
Я вызываю поиск:
TQuery.Locate("ответ",........)
Угадай, в каком именно из тридцати трех экземпляров будет производится поиск?
← →
asdf2 (2008-03-31 12:18) [23]во:
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;
мля... мне-то наоборот надо. Может тут подскажите?
← →
Сергей М. © (2008-03-31 12:20) [24]
> asdf2 (31.03.08 12:18) [23]
Тебе в [22] про Фому, а ты все про Ерему)
← →
asdf2 (2008-03-31 12:20) [25]даже не наоборот, а как я писал в [7]
← →
asdf2 (2008-03-31 12:21) [26]
> Сергей М. © (31.03.08 12:20) [24]
MyMlyaQuery1: TIBQuery;
...
MyMlyaQuery33: TIBQuery;
← →
Сергей М. © (2008-03-31 12:22) [27]
> asdf2 (31.03.08 12:21) [26]
>
>
И как это кореллирует с [7] ?
← →
Reindeer Moss Eater © (2008-03-31 12:23) [28]а никак. туда рыбу заворачивали.
← →
clickmaker © (2008-03-31 12:25) [29]
> мля... мне-то наоборот надо. Может тут подскажите?
наоборот?
в базе хранится "сил", и надо, чтобы запись нашлась по вводу "Василий"?
← →
asdf2 (2008-03-31 12:34) [30]
> clickmaker © (31.03.08 12:25) [29]
да, так и надо
← →
Игорь Шевченко © (2008-03-31 12:37) [31]руками цикл по датасету и сравнение поля в каждой записи. или SQL-запросом с предикатом LIKE
← →
clickmaker © (2008-03-31 12:37) [32]
> [30] asdf2 (31.03.08 12:34)
тогда придется свою Locate писать
с переставленными параметрами AnsiPos(val[i], fld_str)
← →
asdf2 (2008-03-31 12:40) [33]
> Игорь Шевченко © (31.03.08 12:37) [31]
> clickmaker © (31.03.08 12:37) [32]
Ага, как-нть так и сделаю.
Всем спс.
Страницы: 1 вся ветка
Текущий архив: 2008.04.27;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.022 c