Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.08.2011, 00:10
ctpaxm ctpaxm вне форума
Прохожий
 
Регистрация: 09.07.2010
Сообщения: 18
Репутация: 10
По умолчанию Как задать для integer число взятое из access

Запрос к акс:
Код:
ADOQuery1.Active:= False;
adoquery1.sql.Add('select *');
adoquery1.SQL.add('COUNT from tank');
adoquery1.SQL.add('order by ID ');
adoquery1.Active:= true;
надеюсь что он правельный...
Если нет, то суть запроса такова: Посчитать кол-во строчек в столбике ID.
Я хочу это знач[ение, что он посчитает, присвоить переменной n, но
Код:
var
n: integer;
begin
n:= adoquery1;

не помогает... как это возможно сделать?

Последний раз редактировалось ctpaxm, 15.08.2011 в 00:19.
Ответить с цитированием
  #2  
Старый 15.08.2011, 07:25
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
Dataser.Fields['Field'].AsInteger
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 15.08.2011, 10:04
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Что то вы меня запутали своим постом. Что значит
Цитата:
Посчитать кол-во строчек в столбике ID

Посчитать количество строчек где ID не null? Тогда надо
Код:
select COUNT(ID) as CountField  from tank
order не нужен, зачем сортировать, если только одно число нужно.

Затем по всей видимости
Код:
ADOQuery1.ExecSQL;
n:=ADOQuery1.FieldByName('CountField').AsInteger;
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!

Последний раз редактировалось Viajero, 15.08.2011 в 12:25.
Ответить с цитированием
  #4  
Старый 16.08.2011, 00:56
ctpaxm ctpaxm вне форума
Прохожий
 
Регистрация: 09.07.2010
Сообщения: 18
Репутация: 10
По умолчанию

Благодарю, но теперь появилась новая проблема... При нажатие определённой кнопки, мне надо сменить таблицу на другую...
допустим с Tank на Air... как это сделать?
Ответить с цитированием
  #5  
Старый 16.08.2011, 06:53
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

МОжно через Format(...)
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 16.08.2011, 09:39
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Цитата:
При нажатие определённой кнопки, мне надо сменить таблицу на другую

А в чём проблема. В событии кнопки просто поменять запрос.
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием
  #7  
Старый 16.08.2011, 14:20
ctpaxm ctpaxm вне форума
Прохожий
 
Регистрация: 09.07.2010
Сообщения: 18
Репутация: 10
По умолчанию

объясню по другому...
При нажатие на кнопку button3 у меня происходит следующее:
Код:
adotable1.Active:=false;
 ADOTable1.TableName:='Air';
 adotable1.Active:=true;
но запрос к скулю происходит после открытия adotable1
Код:
procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
var
n: integer;
begin
ADOQuery1.Active:= False;
adoquery1.sql.Add('select ');
adoquery1.SQL.add('COUNT(ID) as CountField');
adoquery1.SQL.add('from Tank');
adoquery1.Active:= true;
ADOQuery1.ExecSQL;
n:=ADOQuery1.FieldByName('CountField').AsInteger;
и мне надо как то поменять значение
Код:
adoquery1.SQL.add('from Tank');
на
Код:
adoquery1.SQL.add('from Air');
причём не переписывая запрос к скулю в другую процедуру
Ответить с цитированием
  #8  
Старый 16.08.2011, 14:50
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Так я и не понял, что вы хотите сделать. adotable1 и adoquery1 - разные компоненты и разные датасеты, запросы в adoquery1 никаким боком не касаются adotable1.
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием
  #9  
Старый 16.08.2011, 15:03
ctpaxm ctpaxm вне форума
Прохожий
 
Регистрация: 09.07.2010
Сообщения: 18
Репутация: 10
По умолчанию

извеняюсь, как я понял - ошибка не в этом, а в чём то другом...
Но мне надо что бы скуль запрос изменялся при определённых действиях... Как это сделать?
тоесть изменения произвести в этом запросе...
Код:
procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
var
n: integer;
begin
ADOQuery1.Active:= False;
adoquery1.sql.Add('select ');
adoquery1.SQL.add('COUNT(ID) as CountField');
adoquery1.SQL.add('from Tank');
adoquery1.Active:= true;
ADOQuery1.ExecSQL;
n:=ADOQuery1.FieldByName('CountField').AsInteger;

У меня есть определённое действие:
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
adotable1.Active:=false;
 ADOTable1.TableName:='Air';
adotable1.Active:=true;
Как видно из кода АДОТаблица начинает работу после смены названия таблицы в бд, а после открытия таблицы идёт запрос к скулю, но тот запрос не верный, т.к. таблица уже не Tank а Air...
Как сделать так, что бы при смене таблицы, менялся и запрос, при этом не переписывая запрос в другое действие

Последний раз редактировалось ctpaxm, 16.08.2011 в 15:17.
Ответить с цитированием
  #10  
Старый 16.08.2011, 16:07
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

IMHO это проще простого:

Код:
adoquery1.SQL.add('from ' + ADOTable1.TableName);
вместо
Код:
adoquery1.SQL.add('from Tank');
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!

Последний раз редактировалось Viajero, 16.08.2011 в 16:11.
Ответить с цитированием
  #11  
Старый 16.08.2011, 19:08
ctpaxm ctpaxm вне форума
Прохожий
 
Регистрация: 09.07.2010
Сообщения: 18
Репутация: 10
По умолчанию

Благодарю, просто я язык скуля не знаю вообще, а делфи ток немного
Ответить с цитированием
  #12  
Старый 16.08.2011, 22:40
ctpaxm ctpaxm вне форума
Прохожий
 
Регистрация: 09.07.2010
Сообщения: 18
Репутация: 10
По умолчанию

спасибо, работает, но потом после смены имени таблицы выдаёт ошибку "Ошибка синтаксиса в предложении FROM" ...а потом после пропуска одного одного шага - таблица, которая нужна, отображается в Делфи
Ответить с цитированием
  #13  
Старый 17.08.2011, 09:50
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Ну дык тестируй. Что у тебя итоге SQL выражение, может где пробелы пропущены.
Showmessage(ADOQuery1.SQL.Text) в зубы. Можно ещё тестовыми переменными и брейкпойнтами выяснить, или с такими тоже не знаком.
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием
  #14  
Старый 17.08.2011, 14:50
ctpaxm ctpaxm вне форума
Прохожий
 
Регистрация: 09.07.2010
Сообщения: 18
Репутация: 10
По умолчанию

если честно, то не знаком...
Код:
ADOQuery1.Active:= False;
adoquery1.sql.Add('select');
adoquery1.SQL.add('COUNT(ID) as CountField');
adoquery1.SQL.add('from ' + ADOTable1.TableName);
adoquery1.Active:= true;
ADOQuery1.ExecSQL;
n:=ADOQuery1.FieldByName('CountField').AsInteger;
showmessage(Inttostr(n));
вернусь с работы, буду работать
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:51.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025