Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1206986160
DDR
2008-03-31 21:56
2008.04.27
Как перетащить и бросить в TreeView


2-1207254425
X-zone
2008-04-04 00:27
2008.04.27
Помогите написать программу на KOL для отправки почты через smtp


2-1207076153
i
2008-04-01 22:55
2008.04.27
Overflow...


2-1207138768
XRMiPO
2008-04-02 16:19
2008.04.27
масштаб в TWebBrowser


2-1207033134
FIL-23
2008-04-01 10:58
2008.04.27
Повернуть рисунок