Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Нестандартное получение данных из баз данных OBDC  (Прочитано 7285 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
KORVINKORI
Гость
« : 05-04-2009 14:39 » 

Люди! Помогите пожалуйста! Голова пухнет!  С ума сойти...
Все стандартно: есть готовая база данных(таблица MS Access), с нее считываю данные через OBDS. Обычно поступаю стандартно, через ADOConnection => ADOTable => DataSource => DBGrid. И все в шоколаде! Работает!!! Но сейчас понадобилось другое. Без вывода таблицы DBGrid на форму (там для таблицы просто места нет да и по сути ненужна она), из таблицы  MS Access получить данные из одой-двух ячеек этой таблицы по ключевому слову находящейся в ключевом поле.
Записан
zubr
Гость
« Ответ #1 : 06-04-2009 04:07 » new

Вот примерный алгоритм одного из вариантов стандартного решения:
1. ADOConnection => ADOQuery
2. Создаем SQL-запрос типа:
Код:
ADOQuery1.Active := False;
ADOQuery1.SQL.Text := 'SELECT [FiledName1, FieldName2, ...] FROM [Tablename] WHERE [FieldName1 = "Ключевое слово"]';
ADOQuery1.Active := True;
3. Обрабатываем полученные данные:
Код:
ADOQuery1.First;
While not ADOQuery1.Eof do
begin
   data1 := ADOQuery1.FieldByName('FiledName1').AsString;
   data2 := ADOQuery1.FieldByName('FiledName2').AsInteger;
   //..........................................................
  ADOQuery1.Next;
end;
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 06-04-2009 05:59 » 

Offtopic: Тема порадовала Улыбаюсь Я думал тут о высоких материях, а совсем забыл, что для Дельфи "стандарное получение данных" = "отображение на форме"
Автор умудрился написать "ODBC" 2 раза по-разному, причем оба раза неправильно...
Записан
KORVINKORI
Гость
« Ответ #3 : 06-04-2009 14:12 » 

Спасибо zubr!
Только у меня при запуске ADOQuery, выдает ошибку Здесь была моя ладья...  => ADOQuery1: Missing SQL property.   
Почему, пока не понял!?  Не понял  Буду разбираться!
Сейчас пока пошел другим путем:
1. ADOConnection => ADOTable
2. Затем, через Lookup:

     if ADOTable1.Locate('CSecurity','SBER03 [EQBR]',[])    //проверка наличия данных в таблице
      then
       begin
       LastPrice:=ADOTable1.Lookup('CSecurity','SBER03 [EQBR]','CLastPrice');    //считывание нужной ячейки
       Label1.Caption:=FloatToStr(LastPrice);                                                        //вывод данных
       TimeMicex:=ADOTable1.Lookup('CSecurity','SBER03 [EQBR]','CTimeMicex');  //считывание нужной ячейки
       Label2.Caption:=TimeMicex;                                                                          //вывод данных
       end
       else
       begin                                                                                                              //данные отсутствуют
       Label1.Caption:='N/А';
       Label2.Caption:='N/А';
       end;

Кстати, кому интересна тема, нашел хороший по моему мнению ресурс:   http://it.kgsu.ru/DelADO/oglav.html

 
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines