2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 35

Поиск в БД с ADOQuery

16.11.2010, 23:45. Показов 9875. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, как сделать поиск в БД. БД сделана в Access.
Код:
C++
1
2
3
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Text="SELECT *FROM book WHERE nazv="+Form1->Edit1->Text;
Form1->ADOQuery1->ExecSQL();
Помогите, в SQL не силён (((
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2010, 23:45
Ответы с готовыми решениями:

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

Поиск в ADOQuery
Здравствуйте! Подскажите пожалуйста как сделать поиск в ADOQuery, с категориями(они находятся в combobox). Я пробую так: if...

Поиск по RecNo Adoquery
Привет форумчане! пытаюсь осуществить поиск по recno (номеру записи), должен он найти рандомное число r. когда поиск был по полю...

20
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.11.2010, 00:00
Почитай мои ответы на в твоих других темах

Добавлено через 10 минут
C++
1
2
3
4
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Text="SELECT *FROM book WHERE nazv LIKE '"+Form1->Edit1->Text+"'";
Form1->ADOQuery1->Open();
1
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 35
17.11.2010, 11:40  [ТС]
Исправил код:
C++
1
2
3
4
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Text="SELECT *FROM book WHERE nazv'"+Form1->Edit1->Text+"'";
Form1->ADOQuery1->Open();
Но программа на его не реагирует. В ADOQuery остается походу старый запрос, этот программа даже походу и не вписывает.ADOQuery1->SQL->Text и ADOQuery1->SQL->Add разница есть ???
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.11.2010, 14:22
Разницы особо ни какой ну можешь попробывать через метод Add. А чего ты Like не подставил?
1
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 35
17.11.2010, 14:44  [ТС]
Да LIKE пропустил, спасибо работает. Как лучше сделать, ADOQuery1 работает с одной таблицей, с базы Access, для доступа к другой таблице можно использовать этот или лучше ещё 1-н на форму вынести?И как выбрать данные с двух талиц и скинуть их в одну?. Читал что это делается оператором UNION, можите написать пример ?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.11.2010, 15:12
Вообщем скажу так. Оператор UNION служит для объединения 2-х запросов точнее для 2-х SELECTов. Назначение посмотришь в интернете. По поводу сколько нужно ADOQuery, отвчу так со своего горького опыта 2 ADOQuery не сильно дружат друг с другом. потому как обновление данных происходит очень долго приходлось по 2 по 3 раза делать запрос чтобы обновления вступили в силу. Поэтому в принципи можешь делать и с одним просто периодически текст запроса сохранятй под переменной, а потом возвращайся к ней. Вот и всё.
1
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 35
17.11.2010, 16:53  [ТС]
Окей спасибо, тоесть можно UNION соединить 2-ва запроса и кинуть в одну таблицу. Или есть какой-то другой оператор?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.11.2010, 17:30
Ну можешь в принципи и без UNION, но если есть оператор то можешь им воспользоваться
1
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 35
17.11.2010, 17:40  [ТС]
Хочу вытащить данные с другой таблицы, выскакивает ошибка
Код:
C++
1
2
3
4
5
6
7
void __fastcall Tuser::FormShow(TObject *Sender)
{
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("SELECT *FROM user");
Form1->ADOQuery1->Open();
}
В чём ошибка, всё правильно, по этому принцыпу вытаскиваются данные с 1-й таблицы.
Миниатюры
Поиск в БД с ADOQuery   Поиск в БД с ADOQuery  
0
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 35
17.11.2010, 17:55  [ТС]
Всё спасибо справился сам.
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.11.2010, 22:52
Вот тут почитай про UNION
Вложения
Тип файла: rar SQL UNION Operator.rar (45.7 Кб, 35 просмотров)
1
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 35
18.11.2010, 17:55  [ТС]
Спасибо, я читал что него и это тоже читал, я так понял он обьединяет таблицы с однинаковыми полями, две таблицы должны быть идентичны только значения разные. У меня есть 3-ри таблицы (Книги,Читатели,Должники), 2-х из которых есть записи, я думаю мне лутше сначало будет их вытащить с одной и присвоить какой-то переменой, потом из другой, а потом все эти переменные загнать в одну таблицу. Жду вариантов.

Добавлено через 1 час 35 минут
Подскажи плиз как в DBComboBox записать все знацения по одному столбцу.
Делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Text="SELECT fio FROM polzov";
Form1->DataSource1->DataSet=Form1->ADOQuery1;
DBComboBox1->DataSource=Form1->DataSource1;
DBComboBox1->DataField="fio";
Form1->ADOQuery1->Open();
Form1->ADOQuery1->First();
for (int i=0;Form1->ADOQuery1->RecordCount-1;i++)
{
DBComboBox1->Items->Add(Form1->ADOQuery1->FieldByName("fio")->AsString);
Form1->ADOQuery1->Next();
}
Виснет прога и вместе с ней и комп , Хелп плиз. Незнаю где моя ошибка.

Добавлено через 28 секунд
Подскажи плиз как в DBComboBox записать все знацения по одному столбцу.
Делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Text="SELECT fio FROM polzov";
Form1->DataSource1->DataSet=Form1->ADOQuery1;
DBComboBox1->DataSource=Form1->DataSource1;
DBComboBox1->DataField="fio";
Form1->ADOQuery1->Open();
Form1->ADOQuery1->First();
for (int i=0;Form1->ADOQuery1->RecordCount-1;i++)
{
DBComboBox1->Items->Add(Form1->ADOQuery1->FieldByName("fio")->AsString);
Form1->ADOQuery1->Next();
}
Виснет прога и вместе с ней и комп , Хелп плиз. Незнаю где моя ошибка.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
18.11.2010, 22:32
Подсказываю вот тебе мой пример

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
void __fastcall TFindMemory::FormShow(TObject *Sender)
{
 
MainForm->DataSource1->DataSet = NULL;
 
SpeedButton1->Enabled = false;
SpeedButton2->Enabled = false;
 
ComboBox1->Items->Clear();
try{
MainForm->ADOQuery1->SQL->Clear();
MainForm->ADOQuery1->SQL->Add("SELECT DISTINCT Memory FROM Glavnaya");
MainForm->ADOQuery1->Open();
MainForm->ADOQuery1->First();
while(!MainForm->ADOQuery1->Eof)
{
ComboBox1->Items->Add(MainForm->ADOQuery1->FieldByName("Memory")->AsString);
MainForm->ADOQuery1->Next();
}
}catch(...){}
int i = ComboBox1->Items->Count;
Panel1->Caption = "Количество наименований размеров памяти: " + IntToStr(i);
MainForm->ADOQuery1->SQL->Clear();
MainForm->ADOQuery1->SQL->Add("SELECT *FROM Glavnaya ORDER BY Memory");
MainForm->ADOQuery1->Open();
MainForm->DataSource1->DataSet =MainForm->ADOQuery1;
}
1
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 35
23.11.2010, 14:39  [ТС]
Спасибо за помощь. .

Добавлено через 4 минуты
Тема закрыта.
0
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 15
17.12.2011, 21:03
Sasha помогите пожалуйста.
Не могу организовать поиск в БД (Access) через SQL запросы.
У меня в проекте две таблицы, по аналогии почти одинаковые, обе расположены на PageControl.



C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button5Click(TObject *Sender)
{
DataModule2->ADOQuery1->Close();
DataModule2->ADOQuery1->SQL->Clear();
DataModule2->ADOQuery1->SQL->Add("SELECT * FROM Naimenovanie WHERE seller LIKE '%"+Edit3->Text+"%'");
DataModule2->ADOQuery1->Open();
}

0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.12.2011, 23:37
А ты имя таблицы правильно написал?
0
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 15
17.12.2011, 23:39
Цитата Сообщение от Sasha Посмотреть сообщение
А ты имя таблицы правильно написал?
Да, "seller".

Вот через фильтр работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button5Click(TObject *Sender)
{
 
if(!Edit1->Text.IsEmpty())
 {
   DataModule2->ADOTable1->Filtered=false;
   switch(ComboBox2->ItemIndex)
   {
   case 0:   DataModule2->ADOTable1->Filter="Naimenovanie like '"+Edit3->Text+"*'"; break;
   }
   DataModule2->ADOTable1->Filtered=true;
   if(DataModule2->ADOTable1->RecordCount==0)
        ShowMessage("Совпадений не найдено");
        }
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.12.2011, 23:43
Так у тебя название таблицы seller или Naimenovanie
0
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 15
17.12.2011, 23:44
Цитата Сообщение от Sasha Посмотреть сообщение
Так у тебя название таблицы seller или Naimenovanie
Таблица seller
А поле - Naimenovanie
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.12.2011, 23:48
C++
1
2
3
4
DataModule2->ADOQuery1->Close();
DataModule2->ADOQuery1->SQL->Clear();
DataModule2->ADOQuery1->SQL->Add("SELECT * FROM seller WHERE Naimenovanie LIKE '%"+Edit3->Text+"%'");
DataModule2->ADOQuery1->Open();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.12.2011, 23:48
Помогаю со студенческими работами здесь

Поиск через ADOQuery
Здравствуйте, после компиляции данного кода после нажатия кнопки ничего не происходит. До этого названия таблиц были без скобок, но при...

Не работает поиск ADOQuery
Делаю вот так. По полю ID не ищет ничего, забиваю 5 выдает пустую таблицу. что не так:? procedure TForm1.Button2Click(Sender:...

Поиск через adoquery
соединила mysql delphi при помощи adoconnec,adotable,datasource.теперь хочу сделать вкладку поиск,вроде бы это можно сделать через...

Поиск через adoquery
Всем привет! Не могу разобраться с проблемой: with ADOQuery1 do begin Close; SQL.Clear; SQL.Add('SELECT * FROM Progr WHERE...

AdoQuery И поиск по нескольким значениям
Добрый день Имеется у меня на форме ADOConnection1 который подключен к Бд, ADOTable1 которые подключен к ADOConnection1, DataSource1...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru