![]() |
|
|
#1
|
|||
|
|||
|
Подскажите пожалуйста при таком условии
Код:
if not Table1.Locate('GIC', Edit1.Text, [])
then ShowMessage('Такого номера ГИЦ нет') |
|
#2
|
||||
|
||||
|
Используйте функцию trim, она убирает пробелы. Вместо "Edit1.Text" пишите trim (Edit1.Text).
ПРАВКА: сори, ерунду написал не глядя, а удалить сообщение не могу. Trim нужно применять при вводе, чтоб не было записей с пробелами. Попробуйте сделать, как тут: http://web-developments.ru/prikladno...h-delfi-delphi. Не знаю, какой механизм используете для работы с БД (в приведённом примере - ADO), так что не факт, что прокатит. А вообще зря опасаетесь SQL. Очень простая штука на самом деле. И очень мощная по своим возможностям. Рано или поздно всё равно придётся его использовать. Например, в данном случае нужно кинуть на форму компонент TADOQuery (или что-то другое, не знаю, какой движок Вы используете), обозвать его "q", указать в его параметрах данные для соединения с БД, а в обработчике Edit1.Change прописать: Код:
q.SQL.Clear;
q.SQL.Add('SELECT * FROM Имя_таблицы');
q.SQL.Add('WHERE GIC LIKE "%' + trim(Edit1.Text) + '%"';
q.Active := true;Последний раз редактировалось Guaho, 01.09.2018 в 17:48. |
|
#3
|
|||
|
|||
|
Подключение к базе FoxPro .dbf через BDE, задача обойтись без SQL запросов если это возможно. DataSource1, Table1, DBGrid1.
|
|
#4
|
||||
|
||||
|
Пробовали ту ссылку, что я привёл? Срабатывает?
|
|
#5
|
|||
|
|||
|
Да! Там с SQL запросами всё!
( |
|
#6
|
||||
|
||||
|
Хм... И это тоже?
Код:
procedure TForm1.Edit1Change(Sender: TObject); begin if Length(Edit1.Text) > 0 then begin ADOTable1.Filtered:=false; ADOTable1.Filter:=Combobox1.Text + ' LIKE ' + #39 + Edit1.Text + '%' + #39; ADOTable1.Filtered:=true; end else ADOTable1.Filtered:=false; end; |
|
#7
|
|||
|
|||
|
Дык насколько я понял это фильтрация, а мне поиск нужен в Table1!!!
|
|
#8
|
|||
|
|||
|
Пользователь вводит номер в Edit и нажимает поиск (Button).
|
|
#9
|
||||
|
||||
|
Прошу прощения за свою невнимательность, в самом первом посте написано ведь - Locate, а я что-то в фильтрацию вцепился.
Попробуйте так: Код:
if not Table1.Locate('GIC', Edit1.Text, [loPartialKey]) ... |
|
#10
|
||||
|
||||
|
Цитата:
Код:
with Table1 do
begin
First;
while (not Eof) and
(not (Trim(FieldByName('GIC').AsString) = Edit1.Text)) do
Next;
if Eof then ShowMessage('Такого номера ГИЦ нет');
end; |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
kiddan (03.09.2018)
| ||
|
#11
|
||||
|
||||
|
Тоже вариант, только до начала "пробега" желательно запомнить код записи, чтобы затем на неё вернуться. Или - что лучше - искать в дополнительном датасете, не подключенном к компонентам визуализации; так будет быстрее и удобнее.
|
|
#12
|
|||
|
|||
|
Спасибо всё работает!
|
|
#13
|
||||
|
||||
|
Что именно сработало - [loPartialKey] или перебор записей? (хотя перебор само собой должен прокатить, без вопросов).
|