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)