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 lo_val = None
20 hi_val = None
21 criterion.get_range(lo_val, hi_val)
22 ot.add(str(criterion.prompt) + " " + str(lo_val) + " and " + str(hi_val))
23 criterion.set_range("1/32in", "1/16in")
24 lo_val = None
25 hi_val = None
26 criterion.get_range(lo_val, hi_val)
27 ot.add(str(criterion.prompt) + " " + str(lo_val) + " and " + str(hi_val))
28
29 filter_opts = impact.creator.project_and_layer_filter_options()
30 cust_keys = [725, 42]
31 filter_opts.customer_keys = cust_keys
32 impact.active_database.project_and_layer_filter_options = filter_opts
33
34 # CountItemsOptions.drawing_type has no effect when used with Database Queries
35 count_opts = impact.creator.count_items_options()
36 count_opts.query_mts = setting
37 q_count = impact.active_database.count_items(count_opts)
38 ot.add(q_count)
39
40 # FindItemsOptions.drawing_type has no effect when used with Database Queries, the results are always ipDrawingType.dtProject
41 find_opts = impact.creator.find_items_options()
42 find_opts.query_mts = setting
43 find_opts.max_records = 3
44 find_opts.order_ascending = False
45 find_opts.order_by = "D_GROUP"
46 items = impact.active_database.find_items(find_opts)
47
48 for item in items:
49 ot.add(item.reference)
50
51 impact.active_database.disable_project_and_layer_filtering()
52 q_count = impact.active_database.count_items(count_opts)
53 ot.add(q_count)
54 impact.active_database.enable_project_and_layer_filtering()
55 q_count = impact.active_database.count_items(count_opts)
56 ot.add(q_count)