Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TQuery.Locate(field, str, [loPartialKey])


Страницы:   1 2

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]

Ключевые величины могут включить только часть сочетающейся ключевой величины области;

так мой переводчик сказал. Кто где непонятно


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо