Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск в базе данных ADO 
V
    Опции темы
Vrungel
Дата 1.11.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.6.2009

Репутация: нет
Всего: нет



Доброго времени суток  smile 
у меня тут проблема не могу упростить поиск по АДО таблице ...
как сделать чтобы при нажатии на ПОИСК искал слово (или часть слова) которое было введенно в ЭДИТ??

компоненты: bitbtn2, edit1, label5.
Таблица: ADOTable1, поле поиска "Наименование"

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  __________.jpg 226,74 Kb
PM MAIL   Вверх
Данкинг
Дата 1.11.2009, 12:49 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Vrungel @  1.11.2009,  12:44 Найти цитируемый пост)
как сделать чтобы при нажатии на ПОИСК искал слово (или часть слова) которое было введенно в ЭДИТ??

Запросом, например. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Vrungel
Дата 1.11.2009, 13:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.6.2009

Репутация: нет
Всего: нет



как? как? как?  smile мне бы код конкретный пример с описанием чтобы я понял как делать ...

я год назад написал прогу где по 2м критериям одновремменно ищеться, а щас сел и не ч0 не понял =)))
год не программировал и всё заново вспоминать ... =(

Это сообщение отредактировал(а) Vrungel - 1.11.2009, 13:41
PM MAIL   Вверх
Данкинг
Дата 1.11.2009, 14:12 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Vrungel @  1.11.2009,  13:22 Найти цитируемый пост)
а щас сел и не ч0 не понял =)))

Не верю ©.  smile 

Код

AdoQuery.Sql.Add('select * from BASE where POLE like "%'+edit5.text+'%"');





--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Vrungel
Дата 2.11.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.6.2009

Репутация: нет
Всего: нет



Опиши пожалусто "что?" да "как?"

я добавил компонент ADOQuery там указал путь к БД ... а как выбрать нужную таблицу не нашёл ...
Я думал поиск сделать методом "Locate" ... если можно на его примере поиск сделать ...
 smile 
PM MAIL   Вверх
Данкинг
Дата 2.11.2009, 15:26 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Vrungel @  2.11.2009,  10:44 Найти цитируемый пост)
я добавил компонент ADOQuery там указал путь к БД ... а как выбрать нужную таблицу не нашёл ...

Код

ADOQuery.SQL.Add('select * from TABLE');

 smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Vrungel
Дата 2.11.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.6.2009

Репутация: нет
Всего: нет



Код
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
with form1.AdoQuery1 do begin
close;
sql.clear;
AdoQuery.Sql.Add('select * from BASE where POLE like "%'+edit1.text+'%"');
ADOQuery.SQL.Add('select * from Продажа');
open;
if adoquery1.RecordCount<>0 then
datasource1.DataSet:=adoquery1
end;

что тут не так?
и ещё ошибку выдаёт "ADOQuery1: Missing SQL property"
объясни мне по пунктам, я в запросах совсем не чего не понимаю  ... smile 

PM MAIL   Вверх
Данкинг
Дата 2.11.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Vrungel @  2.11.2009,  16:04 Найти цитируемый пост)
что тут не так?

То, что в одном случае у тебя AdoQuery, а в другом - AdoQuery1. smile


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
chip_and_dayl
Дата 2.11.2009, 16:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Жесть полнаяsmile

Код

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
AdoQuery1.close;
AdoQuery1.sql.clear;
AdoQuery1.Sql.Add('select * from Продажа where Поле_По_КОтором_ПОиск like "%'+edit1.text+'%"');
AdoQuery1.open;
if adoquery1.RecordCount<>0 then
datasource1.DataSet:=adoquery1
end;


Это сообщение отредактировал(а) chip_and_dayl - 2.11.2009, 16:37


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Akella
Дата 2.11.2009, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(chip_and_dayl @  2.11.2009,  16:35 Найти цитируемый пост)
Жесть полнаяsmile

жгут напалмом.... оба  smile

Добавлено через 1 минуту и 41 секунду
Если требуется реализовать поиск именно с помощью ADOTable, то запросы тут не причём!!!! Вы что.. нарооод smile 
Про замечательные методы locate и lookup забыли, что ли?

Добавлено через 7 минут и 27 секунд
Цитата(Vrungel @  2.11.2009,  16:04 Найти цитируемый пост)
AdoQuery.Sql.Add('select * from BASE where POLE like "%'+edit1.text+'%"');
ADOQuery.SQL.Add('select * from Продажа');

Ты вообще ни капельки не понимаешь что и к чему, что такое select и с чем его едят. Зачем ты лезешь программировать? Обычно человек, который хочет научится программировать идёт учится, читает книги, полезные материалы в интернете, примеры. А НЕ задаёт вопросы ленивого студента первого курса на форумах.
PM MAIL   Вверх
Данкинг
Дата 2.11.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Akella @  2.11.2009,  22:22 Найти цитируемый пост)
Если требуется реализовать поиск именно с помощью ADOTable, то запросы тут не причём!!!! Вы что.. нарооод smile 
Про замечательные методы locate и lookup забыли, что ли?

Не было задания "именно с ADOTable". smile Было задание "осуществить поиск". К тому же, запросом однозначно быстрее, чем Locate. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Vrungel
Дата 3.11.2009, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.6.2009

Репутация: нет
Всего: нет



Цитата
Не было задания "именно с ADOTable".  Было задание "осуществить поиск".

Ну вообщетто в первом сообщении написаны компоненты которыми нада воспользоваться ...

Цитата
Ты вообще ни капельки не понимаешь что и к чему, что такое select и с чем его едят.


я в этом чистосердечно расскялся в одном из вышенаписанных сообщений

я и просил обьяснить как сделать поиск методом Locate  smile 
читал несколько статей ... мало что понял =(((
PM MAIL   Вверх
Данкинг
Дата 3.11.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Vrungel, на форуме искать по слову "Locate" не пробовал? smile 

Цитата(Vrungel @  3.11.2009,  10:28 Найти цитируемый пост)
Ну вообщетто в первом сообщении написаны компоненты которыми нада воспользоваться ...

Там просто перечисление компонентов и не слова о том, что ими "нада воспользоваться".


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 3.11.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Данкинг @  2.11.2009,  22:50 Найти цитируемый пост)
Не было задания "именно с ADOTable". 


Цитата(Vrungel @  1.11.2009,  12:44 Найти цитируемый пост)
у меня тут проблема не могу упростить поиск по АДО таблице ...


Цитата(Vrungel @  1.11.2009,  12:44 Найти цитируемый пост)
компоненты: bitbtn2, edit1, label5.
Таблица: ADOTable1, поле поиска "Наименование" 



Мало того, locate работает без переоткрытия НД ;)

Добавлено через 34 секунды
Цитата(Данкинг @  2.11.2009,  22:50 Найти цитируемый пост)
К тому же, запросом однозначно быстрее, чем Locate.

 smile

Добавлено через 3 минуты и 40 секунд
Цитата(Vrungel @  3.11.2009,  10:28 Найти цитируемый пост)
я и просил обьяснить как сделать поиск методом Locate  smile 
читал несколько статей ... мало что понял =((( 

1. Вверху каждой стриницы форума есть кнопка Поиск. Лично я не буду принципиально искать за тебя информацию.
2. Google.com
3. F1 у тебя тоже выламана?
PM MAIL   Вверх
chip_and_dayl
Дата 3.11.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Мда... тяжело с Vrungel

Во-первы: чтобы через Locate найти часть слова, которое входит в поле, нужно помучиться. И если его решить, то я боюсь скорость будет не ахты

Во-вторы: есть готовый SQL-запрос. Что  тебе мешает его использовать!?!

Добавлено @ 18:23
Код

AdoQuery1.close;
AdoQuery1.sql.clear;
AdoQuery1.Sql.Add('select * from Продажи where Наименование like "%'+edit1.text+'%"');
AdoQuery1.open;
if adoquery1.RecordCount<>0 then
datasource1.DataSet:=adoquery1


Добавлено @ 18:25
Только не вмасти вместо двух одинарных кавычек '' одну двойную "

Это сообщение отредактировал(а) chip_and_dayl - 3.11.2009, 19:42


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 3.11.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Не знаю, что быстрее будет: locate или select.... top 1 ?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 3.11.2009, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Будет зависеть от некоторых факторов, например:
1. Мощность сервера, клиента
2. Пропускная способность сети.
3. СУБД
4. Состояние базы данных.

Пример. Есть таблица на 5000 записей. Нужно сфокусировать курсор на нужную запись. Какого перца выполнять Select ... Если можно выполнить просто locate или lookup. Ну если нужно просто узнать значение поля конкретной записи, то Lookup даже в разы быстрее может выполниться из-за того, что нет нужны перемещать курсор по набору данных. А что сделает Select? Select полезет на сервер за записью, серверу нужно будет вернуть ещё запись клиенту. Мало того... назначение и возможности Select`а и Locate`а разные. Тут нужно смотреть по конкретной ситуации. На то программисту голова и дадена. А по сему дальнейший спор по поводу Select vs Locate есть бессмысленный.
Спасибо за внимание. Всем спасибо, все свободны.
PM MAIL   Вверх
Vrungel
Дата 5.11.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.6.2009

Репутация: нет
Всего: нет



всем лень было помочь ...
оставлю это на случай если у кавото возникнет вопрос
Код

procedure TForm2.BitBtn2Click(Sender: TObject);
var
keyFields:string;
KeyValues:variant;
Options:tlocateOptions;
begin
if not(checkBox1.Checked or CheckBox2.Checked)then begin
MessageDLG ('Не заданы условия поиска!',mtInformation,[mbOK],0);
exit;
end;
if (CheckBox1.Checked=true and checkbox2.Checked=true) then begin
KeyFields:='Наименование;Поставщик';
KeyValues:=vararrayof([edit1.Text,edit2.text]);

If not ADOTable1.Locate(KeyFields,KEyValues,options) then begin
beep;
MessageDLG('Запись не найдена!!!', mtInformation,[mbOK],0);
exit;
end;
end
else begin
if checkbox1.Checked then begin
KeyFields:='Наименование';
KeyValues:=edit1.text;
end;

if CheckBox2.Checked then begin
KeyFields:='Поставщик';
KeyValues:=edit2.Text;
end;


OPtions:=[loCaseInsensitive,lopartialKey];

If not ADOTable1.Locate(KeyFields,KEyValues,options) then begin
beep;
MessageDLG('Запись не найдена!!!', mtInformation,[mbOK],0);
exit;
end;
end;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
form2.hide;
form1.show;
end;

PM MAIL   Вверх
Данкинг
Дата 5.11.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Vrungel, а BEEP зачем - неужели он пищать в динамик будет? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 5.11.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Vrungel @  5.11.2009,  17:01 Найти цитируемый пост)
всем лень было помочь ...

написать тебе одну строку кода нужно было, самому недодуматься?
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1391 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.