Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2014, 11:07   #1
sasha_14-88
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 48
Восклицание Ошибка при активации ADOQuery

при нажатии activ>true вылазиет табличка (ADOQuery1:Field'Температура'not found.) уже все перепробывал.. в чем может быть проблемма.. делаю поиск, на форме 2 ADOQuery1 в нем SQL: "SELECT AVG(baza_d.baza_temper) AS[Avg_baza_temper]
FROM baza_d" во втором SQL:"SELECT * from baza_d
WHERE (baza_temper> :temper)" еще есть компонент DataSource1 и естественно DBGrid, ну и 1 лейбел для вывода, сам вопрос по поиску звучит так "нужно определить среднюю температуру и выполнить поиск дней,когда температура была выше средней" на кнопку написал код:
Код:
procedure TForm9.Button1Click(Sender: TObject);

begin
ADOQuery2.Close;
ADOQuery2.Parameters.ParamValues['baza_temper']:=ADOQuery1baza_temper.Value;
ADOQuery2.Open;
end;

procedure TForm9.FormShow(Sender: TObject);
begin
ADOQuery1.Close;
 ADOQuery1.Open;
 Label1.Caption:='Средняя температура = '+ADOQuery1baza_temper.AsString;

 end;

end.
в чем ошибка?? буду признателен!

Последний раз редактировалось Stilet; 27.11.2014 в 11:25.
sasha_14-88 вне форума Ответить с цитированием
Старый 27.11.2014, 11:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
уже все перепробывал
Ну да ) Сказки рассказывать...
Сказано же Поле "Температура" не найдена. Соответственно ты запрос составил не правильно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2014, 11:57   #3
sasha_14-88
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну да ) Сказки рассказывать...
Сказано же Поле "Температура" не найдена. Соответственно ты запрос составил не правильно.
я не силен в SQL запросах, вот и прошу помощи...
sasha_14-88 вне форума Ответить с цитированием
Старый 27.11.2014, 12:12   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

При чем здесь не силен. Это элементарная невнимательность, нужно искать где эта 'Температура' в коде или dfm есть. Возможно ADOQuery не с того юнита используется
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.11.2014 в 12:17.
Аватар вне форума Ответить с цитированием
Старый 27.11.2014, 12:18   #5
sasha_14-88
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
При чем здесь не силен. Это элементарная невнимательность, нужно искать где эта 'Температура' в коде или dfm есть
в том то и дело, что все написано без ошибок орфографических..
sasha_14-88 вне форума Ответить с цитированием
Старый 27.11.2014, 12:19   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
я не силен в SQL запросах, вот и прошу помощи...
прежде всего, проверьте, точно ли в ADOQuery1 именно такой запрос, как Вы нам показали. (можно точку останова поставить. можно в Button1Click вначале сделать ShowMessage(ADOQuery2.SQL.Text), можно текст запроса вывести куда-нибудь в Memo..
После того, как убедились, что там нет ничего лишнего (см. слово "Температура" в запросе)

Тогда перейдите в редактор полей ADOQuery1 (в режиме дизайнера формы двойной щелчок по ADOQuery1 на форме). Там УДАЛИТЕ все поля.

запустите проект. Проверьте работу.

Если что - выложите сюда архив с исходниками проекта, посмотрим вместе, что Вы там намутили...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.11.2014, 12:44   #7
sasha_14-88
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
прежде всего, проверьте, точно ли в ADOQuery1 именно такой запрос, как Вы нам показали. (можно точку останова поставить. можно в Button1Click вначале сделать ShowMessage(ADOQuery2.SQL.Text), можно текст запроса вывести куда-нибудь в Memo..
После того, как убедились, что там нет ничего лишнего (см. слово "Температура" в запросе)

Тогда перейдите в редактор полей ADOQuery1 (в режиме дизайнера формы двойной щелчок по ADOQuery1 на форме). Там УДАЛИТЕ все поля.

запустите проект. Проверьте работу.

Если что - выложите сюда архив с исходниками проекта, посмотрим вместе, что Вы там намутили...
вот ссылка на сам архив с программой- http://lidars.rusfolder.net/files/42386559 девятая форма это этот горе-поиск...
sasha_14-88 вне форума Ответить с цитированием
Старый 28.11.2014, 13:47   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
девятая форма это этот горе-поиск
А Вы зря не сделали, то, что я Вам СРАЗУ сказал!

Цитата:
Тогда перейдите в редактор полей ADOQuery1 (в режиме дизайнера формы двойной щелчок по ADOQuery1 на форме). Там УДАЛИТЕ все поля.
там у Вас одно поле, удалите его, полегчает....

p.s. а вообще, я бы переименовал ADOQuery1 на форме 9
и код исправил на такой:
Код:
type
  TForm9 = class(TForm)
    ADOQueryAvgTemp: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    Label1: TLabel;
    ADOQuery2: TADOQuery;
    ADOQuery2baza_nomer: TAutoIncField;
    ADOQuery2baza_data: TDateTimeField;
    ADOQuery2baza_temper: TIntegerField;
    ADOQuery2baza_vid_osad: TWideStringField;
    ADOQuery2baza_kol_osad: TIntegerField;
    ADOQuery2baza_davlenie: TIntegerField;
    ADOQuery2baza_napr_vetra: TWideStringField;
    ADOQuery2baza_skor_vetra: TIntegerField;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
     avg_baza_temper : Double;
  public
    { Public declarations }
  end;

var
  Form9: TForm9;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm9.Button1Click(Sender: TObject);

begin
  ADOQuery2.Close;
  ADOQuery2.Parameters.ParamValues['temper']:= trunc(avg_baza_temper);
  ADOQuery2.Open;
end;

procedure TForm9.FormShow(Sender: TObject);
begin
 ADOQueryAvgTemp.Close;
 ADOQueryAvgTemp.Open;
 avg_baza_temper := ADOQueryAvgTemp.FieldByName('Avg_baza_temper').AsFloat;
 Label1.Caption:= 'Средняя температура = '+ FloatToStr(avg_baza_temper);
 ADOQueryAvgTemp.Close;
end;

end.
Обратите внимание, в поля формы добавлено свойство avg_baza_temper : Double;

Ну и я исправил (попутно) ещё парочку косяков...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.11.2014, 21:47   #9
sasha_14-88
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
А Вы зря не сделали, то, что я Вам СРАЗУ сказал!


там у Вас одно поле, удалите его, полегчает....

p.s. а вообще, я бы переименовал ADOQuery1 на форме 9
и код исправил на такой:
Код:
type
  TForm9 = class(TForm)
    ADOQueryAvgTemp: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    Label1: TLabel;
    ADOQuery2: TADOQuery;
    ADOQuery2baza_nomer: TAutoIncField;
    ADOQuery2baza_data: TDateTimeField;
    ADOQuery2baza_temper: TIntegerField;
    ADOQuery2baza_vid_osad: TWideStringField;
    ADOQuery2baza_kol_osad: TIntegerField;
    ADOQuery2baza_davlenie: TIntegerField;
    ADOQuery2baza_napr_vetra: TWideStringField;
    ADOQuery2baza_skor_vetra: TIntegerField;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
     avg_baza_temper : Double;
  public
    { Public declarations }
  end;

var
  Form9: TForm9;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm9.Button1Click(Sender: TObject);

begin
  ADOQuery2.Close;
  ADOQuery2.Parameters.ParamValues['temper']:= trunc(avg_baza_temper);
  ADOQuery2.Open;
end;

procedure TForm9.FormShow(Sender: TObject);
begin
 ADOQueryAvgTemp.Close;
 ADOQueryAvgTemp.Open;
 avg_baza_temper := ADOQueryAvgTemp.FieldByName('Avg_baza_temper').AsFloat;
 Label1.Caption:= 'Средняя температура = '+ FloatToStr(avg_baza_temper);
 ADOQueryAvgTemp.Close;
end;

end.
Обратите внимание, в поля формы добавлено свойство avg_baza_temper : Double;

Ну и я исправил (попутно) ещё парочку косяков...
Большое спасибо! побольше бы отзывчивых людей!)
sasha_14-88 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при обновлении ADOQuery Вася111111 Помощь студентам 1 12.06.2014 02:37
Ошибка при фильтрации в AdoQuery Ecosasha C++ Builder 1 10.04.2011 19:50
при присвоении ADOQuery.SQL.Text значения DBLookupComboBox.KeyValue возникает ошибка namazi74 БД в Delphi 1 10.04.2010 07:20
Ошибка List index out of bounds(0) при использовании запроса AdoQuery ArtInt БД в Delphi 14 15.04.2009 18:35
ошибка при закрытии adoquery Банзай БД в Delphi 7 03.09.2007 19:31