Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 196

/ вопрос открыт /

Приветствую, уважаемые эксперты!
я использую ADOQuery и AdoConnection
можно ли получить результат запроса из ADOQuery напрямую не использую
дополнительные компоненты и вывести скажем в Memo
А лучше в ComboBox(интересует только одно поле)

Anderson N.N Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

Anderson N.N (статус: 2-ой класс), 14 декабря 2008, 18:42 [#1]:

извините за привередливость но результатом запроса (запрос у меня выводит одно поле) нужно заполнить именно строки(Items ) combobox
Ученый

Ученый (статус: 8-ой класс), 14 декабря 2008, 20:59 [#2]:

Может попробывать запрос сохранить в TStringList а потом от туда вывести в комбобокс....
Anderson N.N

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

Anderson N.N (статус: 2-ой класс), 14 декабря 2008, 21:23 [#6]:

да хоть бы из dbgrid как нибудь забрать но у него в отличии от stringGrid нету свойства Cells и я не знаю как обратиться к нужной ячейке
Nasgool

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;

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:49
Выполнено за 0.03 сек.