1: // returns array of dictionaries with fieldsToReturn as keys
2: function Search(commandQuery, textbase, password, fieldsToReturn, sortFields)
3: {
4: var rs;
5: var output = [];
6:
7: rs = Application.newRecordset(textbase, Application.activeTextbase.path, password);
8: if (rs != null)
9: {
10: try {
11: rs.Open(commandQuery);
12: if (rs.Errors.Count > 0)
13: {
14: // log error
15: }
16: else if (rs.RecordCount > 0)
17: {
18: // sort the recordset
19: rs = SortByField(rs, sortFields);
20:
21: rs.MoveFirst();
22: while (!rs.EOF)
23: {
24: // create dictionary of field values, add to output list
25: var record = new Object();
26: for (var i = 0;i < fieldsToReturn.length;i++)
27: {
28: record[fieldsToReturn[i]] = rs.Fields(fieldsToReturn[i]).Value;
29: }
30: output[output.length] = record;
31:
32: rs.MoveNext();
33: }
34: }
35: }
36: catch (e) {
37: // log exception
38: }
39: finally
40: {
41: rs.Close();
42: }
43: }
44: return output;
45: }
46:
47: // returns recordset sorted by fields provided
48: function SortByField(recordset, sortFields)
49: {
50: var sort = recordset.NewSortDescriptor();
51: for (var i = 0;i < sortFields.length;i++)
52: {
53: if (i >= (sort.MaxSORTFIELDS - 1))
54: {
55: break;
56: }
57: sort.sortFieldName(i) = sortFields[i];
58: }
59: recordset.Sort(sort);
60: return recordset;
61: }