Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [BCB6] ADOTable, ограниченный Поиск, первое нахождение и останока 
V
    Опции темы
XPyCT
Дата 21.4.2009, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В переменную cLocate заносится имя поля в котором производится поиск!

к примеру в таблице 5 записей  по названием  Васечкин! если даю найти то находит только первого из них и остновка, сколько бы не кликал результат тот же!

Код

void __fastcall TfmGlavnoe::Button1Click(TObject *Sender)
{
ADOTable1->Locate(cLocate,Edit1->Text,TLocateOptions());
}
//---------------------------------------------------------------------------


как выполнить чтоб при клике переходил к следующей записи?
за ранее сорри и спасибо!

Это сообщение отредактировал(а) XPyCT - 21.4.2009, 15:17
PM MAIL Skype   Вверх
A5uKa
Дата 21.4.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



TLocateOptions() ?
PM   Вверх
XPyCT
Дата 21.4.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(A5uKa @ 21.4.2009,  15:14)
TLocateOptions() ?

а что вас смущает?

по событию  DBGrid1CellClick я получаю на каком столбце(имя) был клик  за тем в глобальную переменную AnsiStrin (cLocate) я заношу это имя вот так:
Код

void __fastcall TfmGlavnoe::DBGrid1CellClick(TColumn *Column)
{
int indexcell;
indexcell= DBGrid1->SelectedIndex+1;
cLocate=ADOTable1->FieldList->Strings[indexcell];
}


далее уже идет поиск как описано выше: при нажатии на кнопку
Код

void __fastcall TfmGlavnoe::Button1Click(TObject *Sender)
{
ADOTable1->Locate(cLocate,Edit1->Text,TLocateOptions());
}



Это сообщение отредактировал(а) XPyCT - 21.4.2009, 15:22
PM MAIL Skype   Вверх
Лапоть
Дата 21.4.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ИМХО, конечно, но советую забыть про все эти табловые забавы, перейти на TADOQuery и освоить SQL!
PM MAIL   Вверх
mrbrooks
Дата 21.4.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



XPyCT, а почему бы не решить данную задачу с помощью достаточно простого SQL-запроса?

Цитата(XPyCT @  21.4.2009,  15:12 Найти цитируемый пост)
если даю найти то находит только первого из них и остновка

по логике вещей так и должно быть, то бишь метод работает только с первым вхождением записи в наборе данных

Цитата(XPyCT @  21.4.2009,  15:17 Найти цитируемый пост)
а что вас смущает?

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

Это сообщение отредактировал(а) mrbrooks - 21.4.2009, 15:24
PM MAIL   Вверх
XPyCT
Дата 21.4.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mrbrooks)
--


дык есть ли возможность осуществить сие действие по средством адотабле! - дабы не воротить еще оджну форму для квери?

Это сообщение отредактировал(а) XPyCT - 21.4.2009, 15:35
PM MAIL Skype   Вверх
mrbrooks
Дата 21.4.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(XPyCT @  21.4.2009,  15:33 Найти цитируемый пост)
дабы не воротить еще оджну форму для квери?

зачем?

Цитата(XPyCT @  21.4.2009,  15:33 Найти цитируемый пост)
дык есть ли возможность осуществить сие действие по средством адотабле! 

да хз. думаю, что можно конечно - но это как-то не по-людски.
PM MAIL   Вверх
vikaz
Дата 21.4.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(XPyCT @  21.4.2009,  15:33 Найти цитируемый пост)
дык есть ли возможность осуществить сие действие по средством адотабле! - дабы не воротить еще оджну форму для квери?

А зачем тебе новая форма, замени Table на Query и работай. Но если тебе надо добавлять какие-то значения в базу, то желательно к этому делу подключить Command.


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 22.4.2009, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(vikaz @  21.4.2009,  18:11 Найти цитируемый пост)
Но если тебе надо добавлять какие-то значения в базу, то желательно к этому делу подключить Command. 

А чем плох TQuery для этих целей?
PM MAIL   Вверх
Лапоть
Дата 22.4.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



mrbrooks,  тут - на вкус, на цвет... У меня как-то традиционно уже сложилось - создание таблиц делаю через ADOCommand, запросы на выборку - ну тут всё понятно, а запросы на модификацию - зависит от того, есть ли уже в проекте ADOCommand.
PM MAIL   Вверх
vikaz
Дата 22.4.2009, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mrbrooks @  22.4.2009,  08:35 Найти цитируемый пост)
А чем плох TQuery для этих целей? 

Он не плох, просто при добавлении значения в базу он выдает у меня предупреждение, что нет данных для вывода. Но это сообщение появляется только при проектировании и в скомпилированном проекте оно не появляется. smile 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
A5uKa
Дата 22.4.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Цитата(vikaz @ 22.4.2009,  09:24)
Цитата(mrbrooks @  22.4.2009,  08:35 Найти цитируемый пост)
А чем плох TQuery для этих целей? 

Он не плох, просто при добавлении значения в базу он выдает у меня предупреждение, что нет данных для вывода. Но это сообщение появляется только при проектировании и в скомпилированном проекте оно не появляется. smile

такой же баг в 2009 ... не понимаю кстати почему.
PM   Вверх
vikaz
Дата 22.4.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(A5uKa @  22.4.2009,  09:56 Найти цитируемый пост)
такой же баг в 2009 ... не понимаю кстати почему. 

Мне кажется это не баг. Просто это компонента рассчитана на то, чтобы в основном выполнять команды которые возвращают какое-то значение из базы (select). Может быть он таким предупреждением просто дает понять, нечего отображать и думает, наверное, что это ошибка.


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Лапоть
Дата 22.4.2009, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А у него нет некоего свойства типа - Предупреждать о...?
ЗЫ - речь о чём - о TQuery, или о TADOQuery?
PM MAIL   Вверх
vikaz
Дата 22.4.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не знаю, не находил, может и нет такого, а может плохо искал  smile 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Palladin
Дата 23.4.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

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



А можно ли посмотреть код Locate???? Если можно, то вырываем код, создаем массив типа инт, туда при первом клике заносим индекс строки, и просто при втором нажатии пропускаем!?
Если нет и нехочешь менять компоненты и т.д. придется поднапрячся и написать самому собственную функцию ХрустLocate.
Ток кажется это скажется на скорости поиска. 
код что-то типа:
Код

ищем первую подходящую;
i=номер найденной строки;
L=флаг;
for(int t:=1;t<=k;t++)
if(a[t]=i) L=1;

if(L!=1)
{
ADOTable1.RecNo=i;
a[k]=i; k++;
}
когда поиск начинается по новому критерию, обнуляешь массив и переменные
}
 

Бред походу написал, но идея была smile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
XPyCT
Дата 23.4.2009, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем конечно спс! - но всетаки пришлось добавить на форму адоквери

и методом исключения уже работать! к сожалению цикл не подойдет! цикл хорош для не большик таблиц а если 10 тыщ записей это скоко ждать пока он обработает!
в общем решил так

Вот так находим нужных перцов! по клику на кнопке
а глобальную переменую- счетчик ClickButtonSearch инкремнтипую
Код


void __fastcall TfmGlavnoe::Button1Click(TObject *Sender)
{
ClickButtonSearch++;
String   SQL,textEdit;

textEdit=Edit1->Text;
ADOTable1->Active=false;
DataSource1->DataSet=Query;
Query->Active=false;
SQL = "Select id_abonament AS Абоенемент, fam as Фамилия, name as Имя, date_r As Дата_раждения,operator As Оператор,date_start As Начало _посещенияé from Abonament where fam='"+textEdit+"' or id_abonament='"+textEdit+"'";
 Query->SQL->Text = SQL;
 Query->Open();


}
//---------------------------------------------------------------------------





далее  уже когда найден наш персонаж можем и открыть форму с его данными вот так


опять же  смотрим в каком состоянии   ClickButtonSearch
Код

if(ClickButtonSearch== 0)
{
 idAbonament=ADOTable1->FieldByName("id_abonament")->AsString;
 imea=ADOTable1->FieldByName("name")->AsString;
 fam=ADOTable1->FieldByName("fam")->AsString;
 fmGlavnoe->Hide();
 fmVisit->ShowModal();
 }

 else
    {
 idAbonament=Query->Fields->FieldByNumber(1)->AsString;// ;  //Query->FieldByName("id_abonament")->AsString;
 imea=Query->Fields->FieldByNumber(2)->AsString;
 fam=Query->Fields->FieldByNumber(3)->AsString;
 fmGlavnoe->Hide();
 fmVisit->ShowModal();
    }


таким образом я отработал и адотабле  и адоквери



на закрытии формы все возвращаю на место к адотабле!



Код

 fmGlavnoe->Query->Active=false;
 fmGlavnoe->DataSource1->DataSet=fmGlavnoe->ADOTable1;
 fmGlavnoe->ADOTable1->Active=true;
 ClickButtonSearch=0;
 fmGlavnoe->Show();



всем огромный респект!
PM MAIL Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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