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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.09.2011, 12:25
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию Условие

На форме имеется 4 ЧекБокса. При лоткрытии программы состояние всех ЧекБоксов = Тру. На конпочку.
Код:
Var
ch1,ch2,ch3,ch4:String;
begin
ch1:='SELECT SimpleTime,Chann01 FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2 ';
Ch2:='SELECT SimpleTime,Chann01,Chann02 FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2 ';
Ch3:='SELECT SimpleTime,Chann01,Chann02,Chann03 FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2 ' ;
Ch4:='SELECT SimpleTime,Chann01,Chann02,Chann03,Chann04 FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2 ';

 Button3.Visible:=True;
 DataModule2.QueryGRP.Close;
 DateTimePicker1.time:=DateTimePicker2.time;
 DateTimePicker3.time:=DateTimePicker4.time;

 If CheckBox1.Checked = True and CheckBox2.Checked = True and  CheckBox3.Checked = True and CheckBox4.Checked = True then
 DataModule2.QueryGRP.SQL.Text:=Ch4;

 If CheckBox1.Checked = True and CheckBox2.Checked = True and  CheckBox3.Checked = True then
     DataModule2.QueryGRP.SQL.Text:=Ch3;

Как сделать правильно условие? Чтоб если 3 галочки активны то выполняется запрос Ch3 если две галочки активны то запрос Ch2 итд. Не как не могу додуматс че то.
Ответить с цитированием
  #2  
Старый 08.09.2011, 14:47
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables;

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    Button1: TButton;
    Query1: TQuery;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Tag:=0;
  Tag:=Tag+Integer(CheckBox1.Checked);
  Tag:=Tag+Integer(CheckBox2.Checked);
  Tag:=Tag+Integer(CheckBox3.Checked);
  Tag:=Tag+Integer(CheckBox4.Checked);
  case Tag of
    0: Query1.SQL.Text:='select 0';
    1: Query1.SQL.Text:='select 1';
    2: Query1.SQL.Text:='select 2';
    3: Query1.SQL.Text:='select 3';
    4: Query1.SQL.Text:='select 4';
  end;
end;

end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 08.09.2011, 14:56
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Цитата:
Сообщение от NumLock
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables;

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    Button1: TButton;
    Query1: TQuery;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Tag:=0;
  Tag:=Tag+Integer(CheckBox1.Checked);
  Tag:=Tag+Integer(CheckBox2.Checked);
  Tag:=Tag+Integer(CheckBox3.Checked);
  Tag:=Tag+Integer(CheckBox4.Checked);
  case Tag of
    0: Query1.SQL.Text:='select 0';
    1: Query1.SQL.Text:='select 1';
    2: Query1.SQL.Text:='select 2';
    3: Query1.SQL.Text:='select 3';
    4: Query1.SQL.Text:='select 4';
  end;
end;

end.


А куда тут запрос вписывать?
Ответить с цитированием
  #4  
Старый 08.09.2011, 15:06
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Zhigalov
А куда тут запрос вписывать?
дык:
Код:
    0: Query1.SQL.Text:='select ...';
    1: Query1.SQL.Text:='select ...';
    2: Query1.SQL.Text:='select ...';
    3: Query1.SQL.Text:='select ...';
    4: Query1.SQL.Text:='select ...';
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 08.09.2011, 15:23
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Цитата:
Сообщение от NumLock
дык:
Код:
    0: Query1.SQL.Text:='select ...';
    1: Query1.SQL.Text:='select ...';
    2: Query1.SQL.Text:='select ...';
    3: Query1.SQL.Text:='select ...';
    4: Query1.SQL.Text:='select ...';

Большое спасибо
Ответить с цитированием
  #6  
Старый 09.09.2011, 06:20
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Код:
    Tag:=0;
  Tag:=Tag+Integer(CheckBox1.Checked);
  Tag:=Tag+Integer(CheckBox2.Checked);
  Tag:=Tag+Integer(CheckBox3.Checked);
  Tag:=Tag+Integer(CheckBox4.Checked);
  case Tag of
    0: DataModule2.QueryGRP.SQL.Text:='SELECT SimpleTime FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2';
    1: DataModule2.QueryGRP.SQL.Text:='SELECT SimpleTime,Chann01 FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2 ';
    2: DataModule2.QueryGRP.SQL.Text:='SELECT SimpleTime,Chann01,Chann02 FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2 ';
    3: DataModule2.QueryGRP.SQL.Text:='SELECT SimpleTime,Chann01,Chann02,Chann03 FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2 ';
    4: DataModule2.QueryGRP.SQL.Text:='SELECT SimpleTime,Chann01,Chann02,Chann03,Chann04 FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2 ';
  end;


Как то не правельно работает. Если все CheckBox =True,False. Работает нармально. А если я дапустим хочу Посмотреть тока 3 то уже не работает.
Как то может я не правильно сам с смого начала написал. Есть всего CheckBox1.2.3.4 . Тоесть при отключении их Должно оставоатся тока то что включено. Дапустим если я отключил CheckBox1.2.4 то остатся должен тока CheckBox3

Тоесть если CheckBox3=True остальные False то должно показать данные chann03. CheckBox2.3=True остальные False то должно показать данные chann03.02

Последний раз редактировалось Zhigalov, 09.09.2011 в 06:27.
Ответить с цитированием
  #7  
Старый 09.09.2011, 06:32
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Код:
 DataModule2.QueryGRP.SQL.Text:='SELECT SimpleTime,Chann01,Chann02,Chann03,Chann04'+
 ' FROM RGBTEC4.dbo.Data_25010_4_0_8'+
 ' where SimpleTime between :Param1 and :Param2 '; 



 DataModule2.QueryGRP.Parameters.ParamByName('Param1').Value:=DateTimePicker1.DateTime;
 DataModule2.QueryGRP.Parameters.ParamByName('Param2').Value:=DateTimePicker3.DateTime;
 DataModule2.QueryGRP.Open;



 if CheckBox1.Checked = False then
 DataModule2.QueryGRP.FieldByName('Chann01').Value:=False;
 if CheckBox2.Checked = False  then
 DataModule2.QueryGRP.FieldByName('Chann02').Visible:=False;
 if CheckBox3.Checked = False  then
 DataModule2.QueryGRP.FieldByName('Chann03').Visible:=False;
 if CheckBox4.Checked  = False then
 DataModule2.QueryGRP.FieldByName('Chann04').Visible:=False;

Вот так вот все работает как надо. Но проблема в другом получатется при экспорте в Excel все равно передаютс все данные. Так как я просто скрываю колонки.
Ответить с цитированием
  #8  
Старый 09.09.2011, 08:42
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну как ты объяснил, так я тебе и написал. по ходу дела тебе вообще TRadioGroup нужен.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 09.09.2011, 09:32
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Цитата:
Сообщение от NumLock
ну как ты объяснил, так я тебе и написал. по ходу дела тебе вообще TRadioGroup нужен.


ммм...Поясни если не затруднит попробую. Как там чтоб все точки горели у меня чет тока одну получается зажеч.

Последний раз редактировалось Zhigalov, 09.09.2011 в 09:40.
Ответить с цитированием
  #10  
Старый 09.09.2011, 11:18
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

снова прочитал всю тему с самого начала несколько раз) давай уточним все:
-у тебя есть в таблице 4 поля (Chann01, Chann02, Chann03, Chann04) - это каналы
-есть на форме 4 TCheckBox - каждый для своего канала
-включая определеные TCheckBox, результат рапроса должен вернуть только эти поля (каналы)
-пример: включен только 1-ый TCheckBox, в результате должен быть только Chann01
-пример: включены только 1-ый и 3-ий TCheckBox, в результате должен быть только Chann01 и Chann03
-пример: включены только 1-ый, 2-ой и 3-ий TCheckBox, в результате должен быть только Chann01, Chann02 и Chann03
-пример: включены все TCheckBox, в результате должен быть все: Chann01, Chann02, Chann03, Chann04
-ничего не включено = AV)
а не так, что:
Цитата:
Чтоб если 3 галочки активны (любые) то выполняется запрос Ch3 если две галочки (любые) активны то запрос Ch2
так?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #11  
Старый 09.09.2011, 11:50
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Цитата:
Сообщение от NumLock
снова прочитал всю тему с самого начала несколько раз) давай уточним все:
-у тебя есть в таблице 4 поля (Chann01, Chann02, Chann03, Chann04) - это каналы
-есть на форме 4 TCheckBox - каждый для своего канала
-включая определеные TCheckBox, результат рапроса должен вернуть только эти поля (каналы)
-пример: включен только 1-ый TCheckBox, в результате должен быть только Chann01
-пример: включены только 1-ый и 3-ий TCheckBox, в результате должен быть только Chann01 и Chann03
-пример: включены только 1-ый, 2-ой и 3-ий TCheckBox, в результате должен быть только Chann01, Chann02 и Chann03
-пример: включены все TCheckBox, в результате должен быть все: Chann01, Chann02, Chann03, Chann04
-ничего не включено = AV)
а не так, что:

так?

Да именно так как ты написал!
Ответить с цитированием
  #12  
Старый 09.09.2011, 13:01
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
var
  FldLst: String;
begin
  FldLst:='';
  if CheckBox1.Checked then FldLst:=FldLst+', Chann01';
  if CheckBox2.Checked then FldLst:=FldLst+', Chann02';
  if CheckBox3.Checked then FldLst:=FldLst+', Chann03';
  if CheckBox4.Checked then FldLst:=FldLst+', Chann04';
  Query1.SQL.Text:='SELECT SimpleTime'+FldLst+' FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2';
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #13  
Старый 09.09.2011, 13:44
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Цитата:
Сообщение от NumLock
Код:
var
  FldLst: String;
begin
  FldLst:='';
  if CheckBox1.Checked then FldLst:=FldLst+', Chann01';
  if CheckBox2.Checked then FldLst:=FldLst+', Chann02';
  if CheckBox3.Checked then FldLst:=FldLst+', Chann03';
  if CheckBox4.Checked then FldLst:=FldLst+', Chann04';
  Query1.SQL.Text:='SELECT SimpleTime'+FldLst+' FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2';
end;

Спасибо в понеделник буду пробывать.
Ответить с цитированием
  #14  
Старый 14.09.2011, 07:43
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Код:
var
  FldLst: String;
begin
  FldLst:='';
  if CheckBox1.Checked then FldLst:=FldLst+', Chann01';
  if CheckBox2.Checked then FldLst:=FldLst+', Chann02';
  if CheckBox3.Checked then FldLst:=FldLst+', Chann03';
  if CheckBox4.Checked then FldLst:=FldLst+', Chann04';
  Query1.SQL.Text:='SELECT Cast(SimpleTime as time)'+FldLst+' FROM RGBTEC4.dbo.Data_25010_4_0_8  where SimpleTime between :Param1 and :Param2';
end;

Выдает ошибку " Type time is not a defined system type"
Ответить с цитированием
  #15  
Старый 14.09.2011, 13:07
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Разобрался!
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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