Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/26: Рейтинг темы: голосов - 26, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 21.07.2008
Сообщений: 70

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

10.01.2011, 13:07. Показов 5311. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые программисты. Возникла небольшая проблема. Необходимо создать индексы для осуществления поиска по базе данных на локальной базе данных.

Подскажите пожалуйста что как делается. Уже бьюс третий день пока ничего не придумал.

С уважением.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.01.2011, 13:07
Ответы с готовыми решениями:

Необходимо создать кнопку в базе для сохранения файла
здравствуйте форумчане! я создал небольшую базу для оприходования товара в аптеке, и у меня такой вопрос - как создать кнопку чтобы отчет...

Запросы к базе данных для поиска студентов
Не получается сделать такие запросы: Найти студента у которого более одного предмета без оценки Найти студентов чей возраст больше...

Подскажите пожалуйста код для поиска по базе данных
Подскажите пожалуйста код для поиска по базе данных в Builder c++, через обычный Edit и SpeedButton.

11
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
10.01.2011, 14:56
ну во прервых на каком движке база локальная работает ?
дай угадаю ?!!! )) на BDE ?!!! ставлю 100$
лови
TTable::AddIndex
Creates a new index for the table.

void __fastcall AddIndex(const AnsiString Name, const AnsiString Fields, Db::TIndexOptions Options, const AnsiString DescFields = '');

Description

Call AddIndex to create a new index for the already-existing table associated with a dataset component. The index created with this procedure is added to the database table underlying the dataset component.

Name is the name of the new index. Name must contain an index name that is valid for the particular database type used (naming rules vary from one database type to another).

Fields is a AnsiString value containing the field or fields on which the new index will be based. If more than one field is used, separate the field names in the list with semicolons.

Options is a set of attributes for the index. The Options parameter may contain any one, multiple, or none of the TIndexOptions constants: ixPrimary, ixUnique, ixDescending, ixCaseInsensitive, and ixExpression. Not all database systems will necessarily support all of these options. Even within a particular table type, any given option may only be supported in certain versions of a table type. Consult the documentation for the particular database system used to determine which options are and are not supported. See the topic for the TIndexOptions type for definitions of individual constants and the implications of their use.

DescFields is a string containing a list of field names, separated by semicolons. The fields specified in DescFields are the fields in the new index for which the ordering will be descending. Fields in the index definition but not in the DescFields list use the default ascending ordering. It is possible that a single index can have fields using both ascending and descending ordering.

TIndexOptions Options;

Options << ixCaseInsensitive;

Table1->AddIndex('MostPaid', 'CustNo;SaleDate;AmountPaid', Options, 'SaleDate;AmountPaid');

Warning: Attempting to create an index using options that are not applicable to the table type causes AddIndex to throw an exception.

dBASE tables only support primary indexes and true unique indexes when the table level is 7 or higher (concurrent with Visual dBASE 7). dBASE tables do not support case-insensitive indexes at all. You must use the ixExpression constant when the index is based on multiple fields or uses dBASE Data Manipulation Language (DML) functions (that is, for expression indexes). Multi-field dBASE indexes cannot be created simply with a list of field names (separated by semicolons) in the Fields parameter of AddIndex. The ixExpression constant is only applicable to dBASE tables.

Paradox tables support the ixDescending option for secondary indexes if the table level is 7 or higher and ixUnique if the table level is 5 or higher. The ixDescending and ixCaseInsensitive constants are not applicable to primary indexes.

For other table types, see the vendor-supplied documentation for the particular database system for details on what index options are applicable.

Creates a new index definition object and adds it to the Items property.

TIndexDef* __fastcall AddIndexDef(void);

Description

Call AddIndexDef to add index definitions when creating a database table. AddIndexDef returns the new TIndexDef object that was added to the IndexDefs collection of index definitions. After calling AddIndexDef, set the properties of the newly added TIndexDef object to specify the name, type, and options of index that will be created.

Note: AddIndexDef is only valid in the context of c
0
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
10.01.2011, 14:58
а ваще нажми Ф1 и набери в поиске AddIndex
и читай читай читай...
и наступит на 3 день прозрение у тебя.

глава 3 помощи С++ Builder 5.00 стих 10

гы-гы шутка
0
0 / 0 / 0
Регистрация: 21.07.2008
Сообщений: 70
14.01.2011, 10:56  [ТС]
Уважаемые программисты спасибо, если возникнут ещё вопросы, надеюсь поможете.

Большое спасибо!!!!!!!!!!!!!
0
0 / 0 / 0
Регистрация: 21.07.2008
Сообщений: 70
18.01.2011, 09:42  [ТС]
Есть семь полей в таблице. Необходимо осуществить поиск по четырём полям.
Ниже приведён код для поиска по одному полю. Проверьте, пожалуйста, правильность кода, ато я уже замучился.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
Table1->Active=False;
Table1->DatabaseName='BCDEMOS';
Table1->TableType=ttParadox;
Table1->TableName='TelSpravochnik_1.db';
if(!Table1->Exists)
{
Table1->FieldDefs->Clear();
TFieldDef *pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name='Код_страны';
pNewDef->DataType=ftInteger;
pNewDef->Required=true;
 
TFieldDef *pNewDef = Table1->FieldDefs->AddFieldDef();
pNewDef->Name='Код_города';
pNewDef->DataType=ftInteger;
 
TFieldDef *pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name='Номер_телефона_ТФОП';
pNewDef->DataType=ftLargeInteger;
 
TFieldDef *pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name='Сотовый_телефон';
pNewDef->DataType=ftLargeInteger;
 
TFieldDef *pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name='ФИО_Владельца';
pNewDef->DataType=ftString;
 
TFieldDef *pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name='Организация';
pNewDef->DataType=ftString;
 
TFieldDef *pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name='Адрес';
pNewDef->DataType=ftString;
 
Table1->IndexDefs->Clear();
Table1->IndexDefs->Add('', 'Код_страны', TIndexOptions() <<ixPrimary <<ixUnique);
Table1->IndexDefs->Add('Fld2Index', 'Код_города', TIndex() <<ixCaseInsensitive);
Table1->IndexDefs->Add('Fld3Index', 'Номер_телефона_ТФОП', TIndex() <<ixCaseInsensitive);
Table1->IndexDefs->Add('Fld4Index', 'Сотовый_телефон', TIndex() <<ixCaseInsensitive);
Table1->IndexDefs->Add('Fld5Index', 'ФИО_Владельца', TIndex() <<ixCaseInsensitive);
Table1->IndexDefs->Add('Fld6Index', 'Организация', TIndex() <<ixCaseInsensitive);
Table1->IndexDefs->Add('Fld7Index', 'Адрес', TIndex() <<ixCaseInsensitive);
Table1->CreateTable();
 
Table1->IndexFieldNames='Сотовый_телефон';
Table1->SetKey();
Table1->FieldByName('Сотовый_телефон')->AsString=Edit1->Text;
}
С уважением!
0
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
18.01.2011, 16:34
глянь сюда
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Table1->Active = false; // The Table component must not be active
 
Table1->DatabaseName = 'BCDEMOS';
Table1->TableType = ttParadox;
 
Table1->TableName = 'CustInfo';
 
if (!Table1->Exists) // Don't overwrite an existing table 
 
{
 
  // describe the fields in the table
 
  Table1->FieldDefs->Clear();
  TFieldDef *pNewDef = Table1->FieldDefs->AddFieldDef();
  pNewDef->Name = 'Field1';
  pNewDef->DataType = ftInteger;
 
  pNewDef->Required = true;
 
  pNewDef = Table1->FieldDefs->AddFieldDef();
 
  pNewDef->Name = 'Field2';
  pNewDef->DataType = ftString;
 
  pNewDef->Size = 30;
 
  // Next, describe any indexes
 
  Table1->IndexDefs->Clear();
  /* the 1st index has no name because it is a Paradox primary key */
  Table1->IndexDefs->Add('','Field1', TIndexOptions() <<ixPrimary << ixUnique); 
 
  Table1->IndexDefs->Add('Fld2Index','Field2', TIndexOptions() << ixCaseInsensitive);
 
  // Now that we have specified what we want, create the table
 
  Table1->CreateTable();
}
не замечаешь что для некоторых полей ты свойство Size забыл указать.
для String....особенно...
в принципе по умолчанию...оно по моему 20 что ли..
не помню...
это одна ошибка.
счас бум смореть индексы
0
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
18.01.2011, 16:35
да !!!
на кой ты используегь двойные кавчки типа ''BCDEMOS'' блажь ?
0
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
18.01.2011, 16:41
и ваче чувак. не используй бдэ.
это отстой.
возьми луче от стороних разработчкиов

хошь вышлю хошь сам качай.
компонент назваеться так
Degisy Data Suite for Delphi and C++ Builder Version 1.3.7
лежит тут
http://www.degisy.com
http://www.abilogic.com

смачна.
а в индексах все нормалек. дерзай..

ты поробуй че посоветовал.
пока
0
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
18.01.2011, 16:43
сории насчет кавычек...
энтот форумский робот мне на мыло замылил твой крик души причем с двумя кавычками (глючит ? )) робот)
так ша...
тока в Size трабл должен быть
0
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
18.01.2011, 16:50
еклм....
думал смарел...
слушай ты ж не в аксесе..кодишь..
ИМЕНА ПОЛЕЙ должны БЫТЬ !!!! по английски. !!!
не КОД_Города а например COD_TOWN
....

в принципе вот и все твои ошибки..
0
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
18.01.2011, 16:54
и васше в ДатаБазеНайме суй название каталога...
ну там cB;
алиасы это канечно карашо...
(блин бде такой осттой васчче)
просто через функцию SelectDirectory
запихни ее параметр Directory в DataBaseName
и усе...
саздавай...хоть на диске Ю
0
4 / 4 / 2
Регистрация: 09.12.2010
Сообщений: 278
18.01.2011, 16:57
и еще....
нафиг те энтот пардокс...
переходи на SQL базы..
тама индексы не нужны..
тама просто малючсенький запросец..и все..
индексировать не надо.

луче..и проще..
SQL учить тока..
но !!! сразу поднимаешься на 1 уровень вверх..
и однопользовательские и файловые БД сразу становяться не нужны..

даже в торомозном АДО то что спрашивал делаеться в два притопа два прихлопа..
в билдере васче энто леко
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2011, 16:57
Помогаю со студенческими работами здесь

Как сделать подстановку для поиска в базе данных?
Пробовал делать с помощью SQL запроса с оператором LIKE не выходит. При поиске русских имён в базе захватывает лишние имена.

Фильтр для каждого окна в базе данных с полем поиска
Добрый день! Подскажите пожалуйста, как в форме базы данных установить фильтр, с помощью которого можно было находить необходимую...

Создать модуль, содержащий подпрограммы для осуществления операций над матрицами
A) Создать модуль, содержащий подпрограммы для осуществления операций над двумерными массивами (матрицами): • Чтение матрицы; • Вывод...

Индексы в базе данных
Можно индексировать двумя способами. Через PHPMyAdmin (по нажатию на иконке молнии) и через код (alter table). Это одно и тоже? И...

Индексы в базе данных
Всем привет.Кто мне сможет помочь на счёт поиска на сайте?дело в том што однажды пробовал сделать как по одному уроку но не получилось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru