|
Вопрос # 2 196/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
я использую ADOQuery и AdoConnection
можно ли получить результат запроса из ADOQuery напрямую не использую
дополнительные компоненты и вывести скажем в Memo
А лучше в ComboBox(интересует только одно поле)
 |
Вопрос задал: Anderson N.N (статус: 2-ой класс)
Вопрос отправлен: 14 декабря 2008, 18:21
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Anderson N.N!
Забирать данные с DBGrid? Я бы назвал это неэтичным и грубым решением. Так просто нельзя делать - DBGrid это только средство отображения информации, он не хранит информацию в себе, он только отображает её.
Для прямой работы с ADO достаточно двух компонентов - ADOConnection и ADOCommand. Первый надо для установки связи, хотя если постараться, то можно и без него обойтись.
А вот второй поможет выполнить запрос.
Итак, приступим. Ставим их оба на форму, ADOConnection подключаем к базе. А ADOCommand к нему. Ставим кнопку/мемо и пишем где то такой код.
procedure TForm1.Button1Click(Sender: TObject);
var
rs:_Recordset;
begin
//Выполняем запрос
rs := ADOCommand1.Execute('select * from basa');
//делаем пробежку по записям
while not rs.EOF do
begin
//добавим содержимое поля pole текушей записи в мемо
Memo1.Lines.Add(rs.Fields['pole'].Value);
//перейдём к следующей записи
rs.MoveNext;
end;
//закроем выборку.
rs.Close;
end;
Понятное дело, что если результаты выборки не нужны, то можно коротко - ADOCommand1.Execute('insert into ....');
Метод работает очень хорошо и достаточно быстро.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 14 декабря 2008, 22:33
Оценка за ответ: 5
Комментарий к оценке: я ждал вашего появления т к знал
никто другой не ответит
Спасибо
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 15 декабря 2008, 21:33; участников в обсуждении: 3.
|
Anderson N.N (статус: 2-ой класс), 14 декабря 2008, 18:42 [#1]:
извините за привередливость но результатом запроса (запрос у меня выводит одно поле) нужно заполнить именно строки(Items ) combobox
|
|
Ученый (статус: 8-ой класс), 14 декабря 2008, 20:59 [#2]:
Может попробывать запрос сохранить в TStringList а потом от туда вывести в комбобокс....
|
|
Anderson N.N (статус: 2-ой класс), 14 декабря 2008, 21:07 [#3]:
я бы с удовольствием но как какое свойство юзать у ADOQuery
|
|
Ученый (статус: 8-ой класс), 14 декабря 2008, 21:09 [#4]:
А вот с этим не знаю, не работал никогда с ADOQuery..... Щас сам посмотрю...
|
|
Ученый (статус: 8-ой класс), 14 декабря 2008, 21:13 [#5]:
Да уж, свойств раз два и обчелся..... даже и незнаю что сказать...
|
|
Anderson N.N (статус: 2-ой класс), 14 декабря 2008, 21:23 [#6]:
да хоть бы из dbgrid как нибудь забрать но у него в отличии от stringGrid нету свойства Cells и я не знаю как обратиться к нужной ячейке
|
|
Nasgool (статус: 2-ой класс), 15 декабря 2008, 21:33 [#7]:
веше приведенный пример от Вадима, изменена одна строка:
procedure TForm1.Button1Click(Sender: TObject);
var
rs:_Recordset;
begin
//Выполняем запрос
rs := ADOCommand1.Execute('select * from basa');
//делаем пробежку по записям
while not rs.EOF do
begin
//добавим содержимое поля pole текушей записи в мемо
ComboBox1.Items.Add(rs.Fields['pole'].Value); {Только не в мемо, а в combobox}
//перейдём к следующей записи
rs.MoveNext;
end;
//закроем выборку.
rs.Close;
end;
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|