С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/35: Рейтинг темы: голосов - 35, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 34

Поиск по DBGrid

12.07.2011, 16:44. Показов 6818. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
Нужен поиск по всей таблице.
сделал так
C++
1
2
3
4
5
6
7
      TLocateOptions Opts;
      Opts.Clear();
      Opts << loPartialKey<<loCaseInsensitive;
        if (!Table1->Locate("NAME;ID_PREDMET", Form4->Edit1->Text,Opts))
           {
             ShowMessage("Не найдено поле");
           }
НО выдает ошибку "Invalid Argument"
Типы столбцов разные.
как исправить ошибку?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2011, 16:44
Ответы с готовыми решениями:

Поиск по DBGrid
Доброго времени суток. Имеется база данных Access через ADO. На форме DBGrid, два Edita и Combobox. Осуществляю поиск по DBGrid. Однако...

Поиск по DBGrid
Объясните пожалуйста суть поиска по DBGrid. Где не посмотрю одни #,%,Like. Например человек ввел в Edit Фамилию из поля с таким же...

Поиск по DBGrid
Имеется DBGrid, в который выводится информация из базы. Есть поле Edit 1 и Button. Необходимо выполнить поиск по фамилии, то есть вводим в...

11
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
12.07.2011, 17:18
C++
1
2
3
4
5
6
7
8
TLocateOptions Opts;
Variant locvalues[2];
locvalues[0] = Variant(Form4->Edit1->Text);
locvalues[1] = Variant(Form4->Edit2->Text);
Opts.Clear();
Opts << loPartialKey<<loCaseInsensitive;
if (!Table1->Locate("NAME;ID_PREDMET", VarArrayOf(locvalues, 1),Opts))
    ShowMessage("Не найдено поле");
1
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 34
12.07.2011, 17:25  [ТС]
Ошибка "Project raised exception class EvariantTypeCastError with message 'Could not convert variant of type (syting) into type (Integer)"

у NAME тип Character
у ID_PREDMET - Number


и поисковая строка одна. Только Edit1
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
12.07.2011, 17:30
C++
1
locvalues[1] = Variant(StrToInt(Form4->Edit2->Text));
и поисковая строка одна. Только Edit1
Ну и как же это соизмеряется с Вашим кодом, в котором перечисляется 2 поля ?
Вы уж определитесь ЧТО Вам надо искать - по имени или по идентификатору предмета.
1
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 34
12.07.2011, 17:33  [ТС]
но может я что то не догоняю
Но мне как раз и надо искать и по имени и по идент.предмета (по всей таблице)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
13.07.2011, 01:29
А если и по имени и по идентификатору, то и задавайте имя в одном эдите, а ид-р - в другом.
Или уже я в свою очередь что-то не догоняю
0
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 34
13.07.2011, 14:48  [ТС]
Еще вопрос.
есть функция, которая отличает что ты ввел в едит?букву или цифру например?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
13.07.2011, 16:03
https://www.cyberforum.ru/cpp-... 21174.html
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
13.07.2011, 16:49
ИМХО, так вернее будет:
C++
1
2
3
4
void __fastcall TfrmEditOutR::edbunitKeyPress(TObject *Sender, char &Key)
{
    if (((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = Char(0);
}
Правда не спасает от копипасты (там надо ловить OnChange)

Добавлено через 1 минуту
Блин, голова от тела отвалилась О_о
Но, думаю, разберетесь
1
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 34
13.07.2011, 19:11  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
     if (Edit1->Text=="")
         {
            Form4->Table1->Filtered=false;
         }
else
   {
 
          if(isalpha(Edit1->Text[1]))
        {
            Form4->Table1->Filtered=false;
            Form4->Table1->Filter="(Name'"+Edit1->Text+"*')";
            Form4->Table1->Filtered=true;
        }
         else if(isdigit(Edit1->Text[1]))
        {
          Form4->Table1->Filtered=false;
          Form4->Table1->Filter="(ID_PREDMET'"+Edit1->Text+"*')";
          Form4->Table1->Filtered=true;
        }
}
сделал такую првоерку.и она не работает.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.07.2011, 00:29
Лучший ответ Сообщение было отмечено как решение

Решение

А так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (Edit1->Text.IsEmpty())
         {
            Form4->Table1->Filtered=false;
         }
else
   {
 
          if(isalpha(Edit1->Text[1]))
        {
            Form4->Table1->Filtered=false;
            Form4->Table1->Filter="Name Like " + QuotedStr(Edit1->Text + "%");
            Form4->Table1->Filtered=true;
        }
         else
        {
          Form4->Table1->Filtered=false;
          Form4->Table1->Filter="ID_PREDMET Like " + QuotedStr(Edit1->Text + "%");
          Form4->Table1->Filtered=true;
        }
}
0
1 / 1 / 1
Регистрация: 19.01.2015
Сообщений: 17
24.05.2017, 13:47
MsGuns, здравствуйте.не могли бы вы прокомментировать ваш код?я новичок пытаюсь пытаюсь понять.спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2017, 13:47
Помогаю со студенческими работами здесь

Поиск в DBGrid
Всем доброго!Имеется база на Access.На форме связана через DataSourse+AdoConnection+AdoQuery,выводится таблица в DBGrid. ВОПРОС:Как в...

Поиск по DBGRid
Как сделать поиск по DBGRid с переходом на следующую запись и проверкой на окончание?

Поиск по DBGrid
Имеется DBGrid, в который выводится информация из базы. Есть поле Edit 1 и Button. Необходимо выполнить поиск по названию вклада, то есть...

Поиск из DBgrid
День добрый! я только начал заниматься программированием, вот написал программку, которая ищет в Excel'е фамилии и изменяет время, я...

Поиск в dbgrid
Есть программа которая работает с Аксесом. Поиск осуществлен через SatusBar(Код внизу), но осуществлен он только через 1 параметр. Создал...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru