Skip to main content
Answer

About Checkbox

  • October 31, 2022
  • 3 replies
  • 169 views

when I select snijden and zetten in checkbox

In workchain_id both should be add with slash in between them

example like: snijden / zetten 

Best answer by Mark Jongeling

Hopefully Vincent helped you out with his extensive example. If there are anymore questions, please continue in your first topic. I'll close this topic for now. 

About checkbox | Thinkwise Community (thinkwisesoftware.com)

View original
Did this topic help you find an answer to your question?
This topic has been closed for replies.

3 replies

Forum|alt.badge.img+17
  • Moderator
  • 796 replies
  • October 31, 2022

You can only select 1 value in a lookup. I think the easiest way to achieve this would be to create a view with all possible combinations: 

Snijden
Snijden / Zetten
Zetten 
etc. 

and in the default set the workchain_id based on the selected tickboxes. 


Forum|alt.badge.img+4

Hello naveen,

If the number of actions remains static (i.e. no new actions will be added to the current 6), then I would recommend using an expression combined with a domain with elements instead of a view. This allows you to have the translations for these elements inside of your application model.

If you expect to add many more actions or if you have no interest in ever translating your application to another language, then the simplest solution is an expression that concatenates static translations.

Solution with hardcoded translations

For the hardcoded translations solution, simply make workchain_id an expression column and give it an expression like this:

1select string_agg(t2.work, ' / ')
2from
3(
4 select 'Kantenbreken' as work
5 where t1.kantenbreken = 1
6
7 union
8
9 select 'Lassen' as work
10 where t1.lassen = 1
11
12 union
13
14 select 'Snijden' as work
15 where t1.snijden = 1
16
17 union
18
19 select 'Vormen' as work
20 where t1.vormen = 1
21
22 union
23
24 select 'Zetten' as work
25 where t1.zetten = 1
26
27 union
28
29 select 'Laskanten' as work
30 where t1.laskanten = 1
31) t2

Solution with translations in application model

If you use a bitwise progression of values for each of the checkboxes (i.e. 1, 2, 4, 8, 16, etc.) then each combination of actions forms a unique value representing that combination.

The workchain_id parameter (and columns in other locations) can then be a very simple expression column that looks something like this:

1select sum(iif(t1.kantenbreken = 1, 1, 0) +
2 iif(t1.lassen = 1, 2, 0) +
3 iif(t1.snijden = 1, 4, 0) +
4 iif(t1.vormen = 1, 8, 0) +
5 iif(t1.zetten = 1, 16, 0) +
6 iif(t1.laskanten = 1, 32, 0))

This expression produces the value that represents the unique combination of checked actions.

The expression column should then have 63 elements defined on its domain like this:

11 Kantenbreken
22 Lassen
33 Kantenbreken / Lassen
44 Snijden
55 Kantenbreken / Snijden
66 Lassen / Snijden
77 Kantenbreken / Lassen / Snijden
88 Vormen
99 Kantenbreken / Vormen
1010 Lassen / Vormen
1111 Kantenbreken / Lassen / Vormen
1212 Snijden / Vormen
1313 Kantenbreken / Snijden / Vormen
1414 Lassen / Snijden / Vormen
1515 Kantenbreken / Lassen / Snijden / Vormen
1616 Zetten
1717 Kantenbreken / Zetten
1818 Lassen / Zetten
1919 Kantenbreken / Lassen / Zetten
2020 Snijden / Zetten
2121 Kantenbreken / Snijden / Zetten
2222 Lassen / Snijden / Zetten
2323 Kantenbreken / Lassen / Snijden / Zetten
2424 Vormen / Zetten
2525 Kantenbreken / Vormen / Zetten
2626 Lassen / Vormen / Zetten
2727 Kantenbreken / Lassen / Vormen / Zetten
2828 Snijden / Vormen / Zetten
2929 Kantenbreken / Snijden / Vormen / Zetten
3030 Lassen / Snijden / Vormen / Zetten
3131 Kantenbreken / Lassen / Snijden / Vormen / Zetten
3232 Laskanten
3333 Kantenbreken / Laskanten
3434 Laskanten / Lassen
3535 Kantenbreken / Laskanten / Lassen
3636 Laskanten / Snijden
3737 Kantenbreken / Laskanten / Snijden
3838 Laskanten / Lassen / Snijden
3939 Kantenbreken / Laskanten / Lassen / Snijden
4040 Laskanten / Vormen
4141 Kantenbreken / Laskanten / Vormen
4242 Laskanten / Lassen / Vormen
4343 Kantenbreken / Laskanten / Lassen / Vormen
4444 Laskanten / Snijden / Vormen
4545 Kantenbreken / Laskanten / Snijden / Vormen
4646 Laskanten / Lassen / Snijden / Vormen
4747 Kantenbreken / Laskanten / Lassen / Snijden / Vormen
4848 Laskanten / Zetten
4949 Kantenbreken / Laskanten / Zetten
5050 Laskanten / Lassen / Zetten
5151 Kantenbreken / Laskanten / Lassen / Zetten
5252 Laskanten / Snijden / Zetten
5353 Kantenbreken / Laskanten / Snijden / Zetten
5454 Laskanten / Lassen / Snijden / Zetten
5555 Kantenbreken / Laskanten / Lassen / Snijden / Zetten
5656 Laskanten / Vormen / Zetten
5757 Kantenbreken / Laskanten / Vormen / Zetten
5858 Laskanten / Lassen / Vormen / Zetten
5959 Kantenbreken / Laskanten / Lassen / Vormen / Zetten
6060 Laskanten / Snijden / Vormen / Zetten
6161 Kantenbreken / Laskanten / Snijden / Vormen / Zetten
6262 Laskanten / Lassen / Snijden / Vormen / Zetten
6363 Kantenbreken / Laskanten / Lassen / Snijden / Vormen / Zetten

As you can see, this does get out of hand very quickly. This is why I would say that 6 actions is just about the limit for a solution like this. With 7 actions you would need 127 elements, then 255, 511, and so on.

I wrote a little SQL script that produced the list above for me:

1declare @kantenbreken int = 1;
2declare @lassen int = 2;
3declare @snijden int = 4;
4declare @vormen int = 8;
5declare @zetten int = 16;
6declare @laskanten int = 32;
7
8declare @kantenbrekenTransl varchar(100) = 'Kantenbreken';
9declare @lassenTransl varchar(100) = 'Lassen';
10declare @snijdenTransl varchar(100) = 'Snijden';
11declare @vormenTransl varchar(100) = 'Vormen';
12declare @zettenTransl varchar(100) = 'Zetten';
13declare @laskantenTransl varchar(100) = 'Laskanten';
14declare @separator varchar(10) = ' / ';
15
16declare @i int = 1;
17declare @max int = @kantenbreken + @lassen + @snijden + @vormen + @zetten + @laskanten;
18
19while @i <= @max
20begin
21 declare @concatenatedString varchar(1000) = (
22 select string_agg(work, @separator)
23 from
24 (
25 select @kantenbrekenTransl as work
26 where (@i & @kantenbreken) = @kantenbreken
27 union
28 select @lassenTransl as work
29 where (@i & @lassen) = @lassen
30 union
31 select @snijdenTransl as work
32 where (@i & @snijden) = @snijden
33 union
34 select @vormenTransl as work
35 where (@i & @vormen) = @vormen
36 union
37 select @zettenTransl as work
38 where (@i & @zetten) = @zetten
39 union
40 select @laskantenTransl as work
41 where (@i & @laskanten) = @laskanten
42 ) t
43 );
44
45 print convert(varchar(10), @i) + ' ' + @concatenatedString;
46 set @i += 1;
47end

I hope this helps.


Mark Jongeling
Administrator
Forum|alt.badge.img+23
  • Administrator
  • 4077 replies
  • Answer
  • November 15, 2022

Hopefully Vincent helped you out with his extensive example. If there are anymore questions, please continue in your first topic. I'll close this topic for now. 

About checkbox | Thinkwise Community (thinkwisesoftware.com)


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings