Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск в ADO через Locate по всем полям в таблице 
:(
    Опции темы
Antiform
Дата 7.8.2008, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Такая проблемка! Нужно через Locate задать поиск по всем полям, по одному прекрасно ищет! Мучался, искал, не нашел!
И не просто запись найти, а выделить те буквы в записи которые написаны в Edit_Search и при последующих нажатиях на Button_Search (т.е. одна кнопка поиска, а не еще одна типа "найти далее") и так по кругу(т.б. доходит до последних найденных символов и возвращается к первому)
Код

procedure TForm1.Button_SearchClick(Sender: TObject);
begin
if not ADOTable1.Locate( 'как здесь задать все поля', '%' + Trim(Edit_Search.Text), [loCaseInsensitive, loPartialKey])
then  ShowMessage('Запись не найдена');
end;

Вообщем подобно "поиску на странице" в Opere, только там при вводе сразу выделяется, а мне надо чтобы после нажатия на кнопку
PM MAIL   Вверх
Frees
Дата 7.8.2008, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(Antiform @  7.8.2008,  08:38 Найти цитируемый пост)
'как здесь задать все поля'


Код

keyfields:='name;name_1;n_dom;n_kw';
keyvalues:=VarArrayOf([combobox1.Text, combobox2.Text, edit2.Text, edit3.text]);
if dmod.qrfiz.Locate(keyfields,keyvalues,[])=false then
dmod.qrfiz.Locate('id',id1,[]);

© DRKB


Цитата(Antiform @  7.8.2008,  08:38 Найти цитируемый пост)
Вообщем подобно "поиску на странице" в Opere, только там при вводе сразу выделяется, а мне надо чтобы после нажатия на кнопку

locate ом тут не обойтись


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Antiform
Дата 7.8.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Frees ты мне написал обращение к определенному полю а не к всей таблице как мне надо, а что вот это и зачем : if dmod.qrfiz.Locate(keyfields,keyvalues,[])=false thend mod.qrfiz.Locate('id',id1,[]); я так и не понял
PM MAIL   Вверх
Frees
Дата 7.8.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(Antiform @  7.8.2008,  13:46 Найти цитируемый пост)
if dmod.qrfiz.Locate(keyfields,keyvalues,[])=false thend mod.qrfiz.Locate('id',id1,[]); я так и не понял

это вот что 
Код

if DataSet1.Locate(keyfields,keyvalues,[])=false thend ShowMessage('не нашел запись');


а как тебе надо? задал какуюто строку и встал на первую запись где в каком либо столбике есть эта строка?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Antiform
Дата 7.8.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

а как тебе надо? задал какуюто строку и встал на первую запись где в каком либо столбике есть эта строка?

хотя бы так
PM MAIL   Вверх
Frees
Дата 7.8.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



какой DBGrid используеш? у DBGridEh это сразу есть


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Antiform
Дата 7.8.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



bsSkinDBGrid <- библиотека с поддержкой скинов
PM MAIL   Вверх
Antiform
Дата 8.8.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Фиг с этими выделениями!на счет поиска по всем полям вот тока до этого додумался:
Код

procedure TForm1.Button_SearchClick(Sender: TObject);
var
WSearch: string;
Options: TLocateOptions;
begin
WSearch := '%' + Trim(Edit_Search.Text);
Options := [loCaseInsensitive, loPartialKey];
if  not (ADOTable_Comp.Locate('CPU', WSearch, Options ))
    and not (ADOTable_Comp.Locate('Motherboard', WSearch, Options ))
    and not (ADOTable_Comp.Locate('Memory', WSearch, Options ))
    and not (ADOTable_Comp.Locate('Monitor', WSearch, Options ))
    and not (ADOTable_Comp.Locate('HDD', WSearch, Options ))
    and not (ADOTable_Comp.Locate('VideoCard', WSearch, Options ))
then  ShowMessage('Запись не найдена!')
end;

Вот главный вопрос! Как сделать, чтобы при нажатии снова на эту же кнопку выделение переходило на следующую запись и так по кругу!? Подскажите, может кто сталкивался уже???
PM MAIL   Вверх
Данкинг
Дата 8.8.2008, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Antiform @  8.8.2008,  01:11 Найти цитируемый пост)
Как сделать, чтобы при нажатии снова на эту же кнопку выделение переходило на следующую запись и так по кругу!? 

Проще сделать выборку в AdoQuery и там уже по кругу гонять.


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


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Цитата(Antiform @  8.8.2008,  00:11 Найти цитируемый пост)
Как сделать, чтобы при нажатии снова на эту же кнопку выделение переходило на следующую запись и так по кругу!? Подскажите, может кто сталкивался уже


а ты не боишься что в гриде будет сортировка не аналогичная датасету?
и в итоге в дата сете может ты и будешь бегать по кругу, а вот в гриде беспорядочно то вверх то вниз.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0993 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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