Database Query¶
Database Query¶
1# This example shows how to use a Database Query having a single distance range criterion
2
3ot = impact.gui.output_toolbox
4ot.clear()
5
6settings = impact.active_database.find_master_tool_settings(ipMasterSettingType.mstDBQuery)
7
8if not settings.isNone():
9 setting = settings.item("shellrad")
10 max_records = 10
11 criteria = setting.criteria
12 criterion = criteria.item(1)
13
14 if criterion.user_value_can_be_null:
15 ot.add("Value can be null")
16 else:
17 ot.add("Value cannot be null")
18
19 criterion.get_range(lo_val, hi_val)
20 ot.add(str(criterion.prompt) + " " + str(lo_val) + " and " + str(hi_val))
21 criterion.set_range("1/32in", "1/16in")
22 criterion.get_range(lo_val, hi_val)
23 ot.add(str(criterion.prompt) + " " + str(lo_val) + " and " + str(hi_val))
24
25 filter_opts = impact.creator.project_and_layer_filter_options()
26 cust_keys = [725, 42]
27 filter_opts.customer_keys = cust_keys
28 impact.active_database.project_and_layer_filter_options = filter_opts
29
30 # CountItemsOptions.drawing_type has no effect when used with Database Queries
31 CountOpts = impact.creator.count_items_options()
32 CountOpts.query_mts = setting
33 q_count = impact.active_database.count_items(CountOpts)
34 ot.add(q_count)
35
36 # FindItemsOptions.drawing_type has no effect when used with Database Queries, the results are always ipDrawingType.dtProject
37 FindOpts = impact.creator.find_items_options()
38 FindOpts.query_mts = setting
39 FindOpts.max_records = 3
40 FindOpts.order_ascending = False
41 FindOpts.order_by = "D_GROUP"
42 Items = impact.active_database.find_items(FindOpts)
43
44 for item in Items:
45 ot.add(item.reference)
46
47 impact.active_database.disable_project_and_layer_filtering()
48 q_count = impact.active_database.count_items(CountOpts)
49 ot.add(q_count)
50 impact.active_database.enable_project_and_layer_filtering()
51 q_count = impact.active_database.count_items(CountOpts)
52 ot.add(q_count)
53