![]() |
|
|
#1
|
|||
|
|||
|
На форме имеется 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
|
||||
|
||||
|
Код:
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
|
|||
|
|||
|
Цитата:
А куда тут запрос вписывать? |
|
#4
|
||||
|
||||
|
Цитата:
Код:
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
|
|||
|
|||
|
Цитата:
Большое спасибо |
|
#6
|
|||
|
|||
|
Код:
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
|
|||
|
|||
|
Код:
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
|
||||
|
||||
|
ну как ты объяснил, так я тебе и написал. по ходу дела тебе вообще TRadioGroup нужен.
|
|
#9
|
|||
|
|||
|
Цитата:
ммм...Поясни если не затруднит попробую. Как там чтоб все точки горели у меня чет тока одну получается зажеч. Последний раз редактировалось Zhigalov, 09.09.2011 в 09:40. |
|
#10
|
||||
|
||||
|
снова прочитал всю тему с самого начала несколько раз) давай уточним все:
-у тебя есть в таблице 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) а не так, что: Цитата:
|
|
#11
|
|||
|
|||
|
Цитата:
Да именно так как ты написал! |
|
#12
|
||||
|
||||
|
Код:
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
|
|||
|
|||
|
Цитата:
Спасибо в понеделник буду пробывать. |
|
#14
|
|||
|
|||
|
Код:
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
|
|||
|
|||
|
Разобрался!
|