Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/111: Рейтинг темы: голосов - 111, средняя оценка - 4.97
jimm88
1 / 1 / 0
Регистрация: 02.11.2007
Сообщений: 11
#1

Как пользоваться ADOQuery?

08.06.2009, 23:01. Просмотров 19979. Ответов 17
Метки нет (Все метки)

Прошу прощения за ламерский вопрос. Но не могу разобраться. И нигде подробно не расписано.

Как вывести таблицу из базы Access не через ADOTable, а через запросы?

Кидаю на форму ADOConnection, DataSource, ADOQuery, DBGrid.
Связываю, задаю ConnectionString (драйвер Jet.OLEDB.4), включаю. пишу запрос:
C++
1
2
ADOQuery1->SQL->Text = "SELECT * FROM TableName";
ADOQuery1->ExecSQL();
Ничего. Что ещё надо сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2009, 23:01
Ответы с готовыми решениями:

Запрос ADOQuery внутри другого ADOQuery реален?
Помогите сформировать запрос для двух ADOQuery. Есть 2 таблицы БД mssql:...

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

Как воспользоваиться параметрами ADOQuery?
Как использовать переменные filename (AnsiString) и filesize (int) в качестве...

Как воспользоваиться параметрами ADOQuery 2?
Есть таблица с полями типа Date, Time, float, float, float, int. Есть код,...

ADOQuery Как установить значение параметра
Как установить значение параметра NULL и чтобы в запросе он передавал NULL....

17
KOCMATbIu
1 / 1 / 0
Регистрация: 07.05.2009
Сообщений: 11
08.06.2009, 23:26 #2
В ADOConnection прописываешь путь до базы, дальше ADOQuery в свойстве connection привязываешь к ADOConnection, также в свойстве SQL у query пишешь собственно SELECT * FROM TableName. DataSource вяжешь на ADOQuery, а DBGrid на DataSource. Потом у ADOQuery в свойствах ищешь active, и ставишь его на true....пользуйся на здоровье=)
1
jimm88
1 / 1 / 0
Регистрация: 02.11.2007
Сообщений: 11
09.06.2009, 00:31  [ТС] #3
ОГО! Блин, спасибо. Странно, вроде так и делал, а сейчас все повторил и заработало...

Ещё вопросик - не очень ясно. Как получить значение счетчика.

Запрос:
C++
1
2
ADOQuery1->SQL->Text = "select max(id) from TableTame";
ADOQuery1->ExecSQL();
Правильно?

И что? Где потом достать это значение счетчика?
Надо что-то мутить с ADOQuery->Parameters ?
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
09.06.2009, 09:50 #4
хоть раз нажмите f1 и гляньте, как использовать ado-запрос... а в хелпе написано, что для select - либо active = true, либо open()... а для остальных запросов - execsql
0
jimm88
1 / 1 / 0
Регистрация: 02.11.2007
Сообщений: 11
09.06.2009, 12:04  [ТС] #5
Так я глянул уже. Но если бы мне это помогло, то отписался бы, что вопрос закрыт.
А так, пишу:
C++
1
2
3
4
ADOQuery->Active = false;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("SELECT MAX(id) FROM TableName");
ADOQuery->Active = true;
например. Просто SELECT * работает нормально. А именно MAX(id) - нет. Выдает ошибку - говорит, что параметр id не имеет значения по умолчанию.
Хотя вроде в Parameters задал параметр id. Поставил ему Value...

В билдере по ADO какой-то странный help - там только список методов и свойств я нашел.

Добавлено через 22 минуты 55 секунд
Вот так написал:
C++
1
2
3
4
5
ADOQuery->Active = false;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("SELECT MAX(id) FROM TableName");
ADOQuery->Parameters->Items[0]->Value = 0;
ADOQuery->Active = true;
Ошибка пропала.
А потом? Где искать результат?
ADOQuery->Parameters->Items[0]->Value так и остался = 0
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
09.06.2009, 12:08 #6
зачем вам параметр в этом запросе?
C++
1
2
3
4
5
ADOQuery->Active = false;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("SELECT MAX(id) as max_value FROM TableName");
ADOQuery->Active = true;
int max = ADOQuery->FieldByName("max_value")->AsInteger;
1
jimm88
1 / 1 / 0
Регистрация: 02.11.2007
Сообщений: 11
11.06.2009, 14:24  [ТС] #7
Цитата Сообщение от VoodooMan Посмотреть сообщение
зачем вам параметр в этом запросе?
C++
1
2
3
4
5
ADOQuery->Active = false;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("SELECT MAX(id) as max_value FROM TableName");
ADOQuery->Active = true;
int max = ADOQuery->FieldByName("max_value")->AsInteger;
Так вот ругается как раз на этот код - говорит, параметр id не имеет значения по умолчанию.
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
11.06.2009, 14:30 #8
так это уже не код билдера ругается, а сама база, разбирайтесь с ее особенностями... а у вас поле - счетчик?
0
jimm88
1 / 1 / 0
Регистрация: 02.11.2007
Сообщений: 11
11.06.2009, 15:24  [ТС] #9
Так. Заработало, да только совсем не так как нужно было.

У меня последняя запись id = 9, потом было ещё 3 записи, которые были удалены. Мне нужно узнать с какого номера начнут добавляться новые записи в таблицу. Вышеописанный код мне возвращает id = 9. А следующая добавленная запись получается с id = 13. (между 9 и 13 соответственно пустота)
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
11.06.2009, 15:53 #10
вообще это беда всех счетчиков, вам либо надо свой счетчик организовать, либо почитать, как влиять на счетчик, чтобы он не помнил удаленных записей, а что за БД у вас
0
MAcK
Комбайнёр
1571 / 669 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
11.06.2009, 16:00 #11
SQL
1
SELECT @@IDENTITY AS LatestID
Добавлено через 4 минуты 3 секунды
Цитата Сообщение от VoodooMan Посмотреть сообщение
, а что за БД у вас
Первый пост: ACCESS
0
jimm88
1 / 1 / 0
Регистрация: 02.11.2007
Сообщений: 11
11.06.2009, 16:45  [ТС] #12
C++
1
2
3
4
ADOQuery->Active = false;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("SELECT @@IDENTITY AS LatestID FROM TableName");
ADOQuery->Active = true;

после такого запроса получается столбец нулей.
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
11.06.2009, 17:08 #13
вот тут указаны способы обнуления счетчика:
http://support.microsoft.com/kb/812718/ru

IT-Skyline, это по драйверу определяется в адо? просто в адо не силен особо...
0
clopcad
1 / 1 / 0
Регистрация: 14.07.2009
Сообщений: 8
14.07.2009, 22:30 #14
кто может сказать от чего вообще может быть ошибка "Параметр не имеет значения по умолчанию"? (в базах не силен особо)
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
14.07.2009, 23:34 #15
clopcad, как можно писать субд без знаний теории по базам данных? судя по всему у вас ключевое поле без значения по умолчанию, но при этом вы его не заполняете
1
clopcad
1 / 1 / 0
Регистрация: 14.07.2009
Сообщений: 8
15.07.2009, 15:36 #16
Спасибо.Теорию только в следующем году буду изучать :-) написал уже пару субд, обычно базу дают, и к ней пишу. Да и проблемы обычно только с accses'ом, вечно ему чтото не так.
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
15.07.2009, 23:20 #17
clopcad, вы знаете, на счет того, что что-то будете изучать когда-то - это аццки не аргумент, вам на работе зададут задание и его даже не воспримут (типа а этого мы не учили, этого нам не задавали)... приучайтесь учиться хотя бы по мере возниконовения проблемы!!! иначе ИМХО вам с программированием не по пути, как бы это и жестоко и не звучало
1
clopcad
1 / 1 / 0
Регистрация: 14.07.2009
Сообщений: 8
15.07.2009, 23:57 #18
VoodooMan, Полностью согласен с тобой. Я всегда по мере возникновения проблем ищу способы решения и пока не получается, не брошу. уже все проблемы с базой исправил, проблема была лишь в невнимательности. В теорию по БД серьезно буду вникать в следующем году, так как будет дисциплина такая. А щас пока изучаю другое, а по базам друзья помогаю и учат.
0
15.07.2009, 23:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2009, 23:57

Сортировка в AdoQuery по полю String как Int
есть прога на C++ Builder, собсно трабла у меня в сортировке в AdoTable и...

Как сделать запрос? SQL для ADOQuery
Есть таблица TakeOutKind, а в ней поля: Code (длинное целое), TakeOutKind...

ADOQuery непойму что за ошибка и как быть
Запрос выглядит так DataModule2->ADOQuery1->Close();...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru