Не работает LOCATE

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Не работает LOCATE

Сообщение wwswowsogon » 16.04.2019 12:30:39

Здравствуйте!
Продолжая разбираться с БД/Firebird, внезапно обнаружил неприятную вещь:
почему-то не работает метод Locate, конструкция типа dataset.locate('key', значение, []);
Ничего не происходит, как будто этой строки вовсе нет в коде.
Пробовал по-всякому, грешил на кириллицу, кривую установку СУБД и т. п. Пробовал на разных машинах и в разных условиях. То, что я впервые применил этот метод, и он не работает, наводит на размышления, что, возможно, я что-то неправильно делаю. Хотя вроде бы всё очевидно.
Lazarus 1.4.4, если что.
Если нужно, ближе к вечеру выложу подробный код/проект.
wwswowsogon
новенький
 
Сообщения: 70
Зарегистрирован: 23.12.2008 20:41:37

Re: Не работает LOCATE

Сообщение Ichthyander » 16.04.2019 15:04:57

<<Lazarus 1.4.4>> может быть оффтоп, но зачем?! Зачем пользоваться Лазарус 1.4, когда уже стабильная версия 2.0?!
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 505
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Не работает LOCATE

Сообщение iskander » 16.04.2019 15:27:56

Ichthyander писал(а):стабильная версия 2.0?!

2.02!
https://forum.lazarus.freepascal.org/index.php/topic,45062.msg317727.html#msg317727
iskander
постоялец
 
Сообщения: 202
Зарегистрирован: 08.01.2012 18:43:34

Re: Не работает LOCATE

Сообщение wwswowsogon » 16.04.2019 21:32:26

Использование 1.4.4 имеет только одну причину: я по жизни отстаю от жизни, плюс имею удручающую скорость разработки, не являясь, к тому же, профессиональным программистом.
Уже года два я пилю пару больших проектов, начинал их на этой версии, думаю, пока не закончу, буду пользоваться ей же.

Что касается изначального моего вопроса, я должен попросить прощения у уважаемого сообщества - я написал демо-приложение, с минимумом кода и таблиц в БД - никаких проблем, Locate работает на ура. Видимо, где-то я слажал.
Буду разбираться.
Всем спасибо, тему можно потереть. :)
wwswowsogon
новенький
 
Сообщения: 70
Зарегистрирован: 23.12.2008 20:41:37

Re: Не работает LOCATE

Сообщение wwswowsogon » 14.06.2019 23:52:35

P. S. Некоторое время поразмышляв о проблеме поиска по заданному фрагменту в наборе данных, всё же написал свою функцию, которая вполне устраивает:

Код: Выделить всё
procedure FindRec(FField, FText: String);
var
  s: String;
begin
  FText := UTF8UpperCase(FText);
  if Main.SQLQuery1.RecNo < Main.SQLQuery1.RecordCount then
    begin
      repeat
        s := UTF8UpperCase(Main.SQLQuery1.Fields.FieldByName(FField).AsString);
        Main.SQLQuery1.Next;
      until Pos(FText, s) > 0;

      Main.SQLQuery1.Locate('ID', Main.SQLQuery1.FieldByName('ID').AsInteger, []);
    end
      else ShowMessage('Нет совпадений!');         
wwswowsogon
новенький
 
Сообщения: 70
Зарегистрирован: 23.12.2008 20:41:37


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: MSN [Bot], Yandex [Bot] и гости: 7

Рейтинг@Mail.ru