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

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

10.01.2011, 13:07. Показов 5274. Ответов 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
Ответ Создать тему
Новые блоги и статьи
ПЛИС
zxcha1ka_ 27.01.2026
AHDL Разработать программы для синтеза следующих устройств: 1. Параллельного регистра 4-х разрядного с синхронной загрузкой и асинхронным сбросом (обнулением); Пoмoгитe пoжaлyйстa
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru