2017-02-16 28 views
0

Я хочу выполнить поиск с «locate» независимо от верхнего и нижнего регистра (Найдите регистр без учета регистра). так:Поиск по Firebird с «locate»

Form1.Table1.Locate('field', (Edit1.Text),[loCaseInsensitive]) ;

С Firebird, я не знаю, как это сделать.

Delphi XE5 + Firebird 2.5 + ZEOSDBO-7.1.4.

Благодарим за помощь.

ответ

3

Функция Locate - это средство на стороне клиента, которое реализовано в большинстве, но не во всех компонентах TDataSet-потомков.

Это не функция поиска, другими словами, это не влияет на то, какие строки таблицы извлекают данные с сервера - вам все равно придется делать это так, как вы обычно делаете для типа набора данных, который вы используете , например указав инструкцию SQL, а затем набрав Open в наборе данных.

Что такое Locate Это просто (и только), чтобы переместить курсор набора данных в первую соответствующую запись, если таковая есть, иначе она вернет False. Другими словами, если это удастся, первая найденная запись станет текущей для набора данных, то есть записи, которая будет отображаться элементами управления, поддерживаемыми db, подключенными к набору данных.

кода вы цитируете должен работать, при условии типа TDataSet вы используете поддерживает его и уже заполнен данными. Конечно, он вернет True только в том случае, если ему удастся найти подходящую запись.

Чтобы найти запись, соответствующую более чем одно значение поля вы можете сделать что-то вроде

Found := Table1.Locate('field1;field2', VarArrayOf([Edit1.Text, Edit2.Text]), [loCaseInsensitive]); 
+0

Спасибо. Как найти запись с SQL независимо от прописных и строчных букв (Locate case Insensitive). это мой код: 'ZQuery1.SQL.Add ('SELECT" Field1 "FROM Table, где" Field1 "=' + QuotedStr (Trim (Edit1.Text)));' Firebird 2.5 + ZEOSDBO-7.1.4. –

+2

@Bill: не задавайте новый вопрос в комментарии. Вместо этого разместите новый вопрос и спросите его там, используя кнопку * Ask Question * в верхней части страницы. Ваш вопрос здесь касался использования Locate, и на него был дан ответ. Если у вас есть другой вопрос о SQL, создайте новое сообщение и спросите его. –