Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
2 / 2 / 0
Регистрация: 11.11.2020
Сообщений: 232
MS Access

Поиск по имени в Form2

12.09.2022, 22:39. Показов 6214. Ответов 8

Студворк — интернет-сервис помощи студентам
Всем привет. Помогите пожалуйста. Нужно сделать поиск по имени с выводом результатов из таблицы БД.
У меня есть основная форма и вспомогательная(Form2), которая открывается при нажатии кнопки на первой форме.
В первой таблице я так же дописал в свойстве sql для TADOquerry select * from oblik;
таблица БД у меня находиться на первой форме. Колонка в таблице из бд где хранятся имена называется "Владелец".
На второй форме есть три компонента - Edit1 в который пишется пользователем по какому имени искать, Button1 - Кнопка чтобы начинался поиск, ListBox1 - Компонент в который будет выводить результаты поиска.
Я долго пытался разобраться, но я так и не понял как считывать то, что пользователь написал в edit1 и чтоб оно искало и выводило результат в листбокс. Ниже прикрепляю код кнопки которая начинает поиск. Чего тут не хватает или что нужно заменить? Может можно вообще куда легче все сделать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm2::Button1Click(TObject *Sender)
{    bool flag=false;
    ListBox1->Clear();
    for(Form1->ADOQuery1->First();!Form1->ADOQuery1->Eof;Form1->ADOQuery1->Next()){
        if(Form1->ADOQuery1->FieldByName("Владелец")= Edit1->Text,TLocateOptions())
           {ListBox1->Items->Add(Form1->ADOQuery1->FieldByName("Владелец")->AsString);
            flag=true;
           }
    }
    if(flag==false){
     ListBox1->Items->Add("Не найдено!");
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2022, 22:39
Ответы с готовыми решениями:

Оперативная память при Form2 form2 = new Form2();
Добрый день, подскажите пожалуйста, будут ли висеть в оперативной памяти экземпляры форм, когда код первой формы повторяется неоднократно? ...

Поиск файлов по части имени \ имени
var SR: TSearchRec; Folder: String; begin Folder := 'D:\'; Folder := IncludeTrailingPathDelimiter(Folder); if...

Как сохранить текст из Form2.TextBox между вызовами Form2
кратко у меня есть 2 формы Form1 и Form2 на Form1 есть кнопка при нажатии на которую открывается Form2 на Form2 есть поле для ввода...

8
Модератор
 Аватар для D1973
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
13.09.2022, 04:14
Цитата Сообщение от Seruch Посмотреть сообщение
что нужно заменить?
Все.
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm2::Button1Click(TObject *Sender)
{
   #define Q Form1->ADOQuery1
   Q->Close();
   Q->SQL->Text = "SELECT [Владелец] FROM oblik WHERE [Владелец]=" + QuotedStr(Edit1->Text);
   Q->Open();
   if(Q->IsEmpty()) ListBox1->Items->Add("Nothing found!");
   else
     while(!Q->Eof) {
        ListBox1->Items->Add(Q->FieldByName("[Владелец]")->AsString);
     }
}
Добавлено через 3 минуты
Хочу заметить, что это поиск по точному совпадению. Для частичного поиска используйте конструкцию LIKE
1
2 / 2 / 0
Регистрация: 11.11.2020
Сообщений: 232
13.09.2022, 09:25  [ТС]
D1973,Я попробовал, но оно не совсем корректно работает.
Если такой записи нет, то в листбокс выводит сообщение. Да это работает.
Но если совпадает, то у меня просто выдает ошибки что якобы нет такого поля. Хотя оно есть.
Что не так?
Вот прикрепляю скриншот таблицы БД из Form1 и ошибки которые вылазят при поиске.
Миниатюры
Поиск по имени в Form2   Поиск по имени в Form2   Поиск по имени в Form2  

0
Модератор
 Аватар для D1973
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
13.09.2022, 09:33
Вот делали бы нормальные названия полей: в одно слово и на латинице - не было бы этой проблемы вообще. А так-то Вы даже сообщить не удосужились, что за СУБД у Вас, какова структура таблицы oblik...
Ну, попробуйте квадратные скобки убрать, хотя, раз у Вас MS Access, это должно было отработать. Другое дело, если этого поля реально нет, но это Вам виднее, база у Вас.
0
2 / 2 / 0
Регистрация: 11.11.2020
Сообщений: 232
13.09.2022, 09:42  [ТС]
D1973, mc access 2007
Миниатюры
Поиск по имени в Form2  
0
Модератор
 Аватар для D1973
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
13.09.2022, 09:47
Скобки убрали?
0
2 / 2 / 0
Регистрация: 11.11.2020
Сообщений: 232
13.09.2022, 10:05  [ТС]
D1973, Да попробовал убрать везде квадратные скобки. После нажатия на клавишу поиска листбокс очищается и весь билдер зависает. даже ошибку не выдает

Добавлено через 15 минут
И еще попробовал по вашему совету сделать название полей на латинице, вместо Владелец назвал Owner. Сделал подстановки в коде, то есть там где было написано Владелец написал Owner. но не помогло
0
Модератор
 Аватар для D1973
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
13.09.2022, 10:28
Лучший ответ Сообщение было отмечено Seruch как решение

Решение

Блин, просмотрел... Исправьте цикл
C++
1
2
3
4
while(!Q->Eof) {
  ListBox1->Items->Add(Q->FieldByName("Owner")->AsString);
  Q->Next();
}
1
2 / 2 / 0
Регистрация: 11.11.2020
Сообщений: 232
13.09.2022, 10:49  [ТС]
D1973, Спасибо! Это заработало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.09.2022, 10:49
Помогаю со студенческими работами здесь

Как написать функцию для Буттон1(Которая распол. на Form2) что бы возвращалась к Form1 от Form2
Коллеги подскажите как написать такю кнопку=)) Пробовал oid __fastcall TForm2::Button1Click(TObject *Sender) { Form1->ShowModal(); ...

Поиск по имени
Барахлит поиск по имени дальше не идет( Помогите пожалуйста исправить шаблон, буду благодарен ) (консольное приложение) program...

Поиск по имени
Здравствуйте. Надо написать программу, которая ищет в файле имя и напротив оценка, пишешь имя - выдается оценка. например: Коля 4 В...

Поиск файла по имени
var sr:TSearchRec; Result:word; begin ChDir('C:\Documents and Settings\Admin\Application Data\'); Result := FindFirst...

Поиск процесса по имени
Такой вопрос: я ввожу с клавиатуры имя процесса и можно ли проверить, запущен ли процесс с таким именем?


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru