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