| 997 | | currPK = self.getPK() |
|---|
| 998 | | self._CurrentCursor.filter(fld=fld, expr=expr, op=op) |
|---|
| 999 | | newPK = self.getPK() |
|---|
| 1000 | | if newPK != currPK: |
|---|
| 1001 | | try: |
|---|
| 1002 | | self.moveToPK(currPK) |
|---|
| 1003 | | except dabo.dException.RowNotFoundException: |
|---|
| | 1001 | #currPK = self.getPK() |
|---|
| | 1002 | if self.VirtualFields.has_key(fld): |
|---|
| | 1003 | self.scan(self.scanVirtualFields, fld=fld, expr=expr, op=op, reverse=True) |
|---|
| | 1004 | self._CurrentCursor.filterByExpression("%s IN (%s)" % (self.KeyField, ", ".join( "%i" % key for key in self.__filterPKVirtual))) |
|---|
| | 1005 | |
|---|
| | 1006 | # clear filter id's |
|---|
| | 1007 | self.__filterPKVirtual = [] |
|---|
| | 1008 | else: |
|---|
| | 1009 | self._CurrentCursor.filter(fld=fld, expr=expr, op=op) |
|---|
| | 1010 | |
|---|
| | 1011 | #try: |
|---|
| | 1012 | # newPK = self.getPK() |
|---|
| | 1013 | #except dException.NoRecordsException: |
|---|
| | 1014 | # newPK = currPK |
|---|
| | 1015 | |
|---|
| | 1016 | #if newPK != currPK: |
|---|
| | 1017 | # try: |
|---|
| | 1018 | # self.moveToPK(currPK) |
|---|
| | 1019 | # except dabo.dException.RowNotFoundException: |
|---|
| 1005 | | self.first() |
|---|
| 1006 | | |
|---|
| | 1021 | # self.first() |
|---|
| | 1022 | |
|---|
| | 1023 | def scanVirtualFields(self, fld, expr, op): |
|---|
| | 1024 | virtValue = self.getFieldVal(fld) |
|---|
| | 1025 | |
|---|
| | 1026 | if op.lower() in ("eq", "equals", "="): |
|---|
| | 1027 | if virtValue == expr: |
|---|
| | 1028 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|
| | 1029 | |
|---|
| | 1030 | elif op.lower() in ("ne", "nequals", "!="): |
|---|
| | 1031 | if virtValue != expr: |
|---|
| | 1032 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|
| | 1033 | |
|---|
| | 1034 | elif op.lower() in ("gt", ">", "greater than"): |
|---|
| | 1035 | if expr > virtValue: |
|---|
| | 1036 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|
| | 1037 | |
|---|
| | 1038 | elif op.lower() in ("gte", ">=", "greater than/equal to"): |
|---|
| | 1039 | if expr >= virtValue: |
|---|
| | 1040 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|
| | 1041 | |
|---|
| | 1042 | elif op.lower() in ("lt", "<", "less than"): |
|---|
| | 1043 | if expr < virtValue: |
|---|
| | 1044 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|
| | 1045 | |
|---|
| | 1046 | elif op.lower() in ("lte", "<=", "less than/equal to"): |
|---|
| | 1047 | if expr <= virtValue: |
|---|
| | 1048 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|
| | 1049 | |
|---|
| | 1050 | elif op.lower() in ("starts with", "begins with"): |
|---|
| | 1051 | if virtValue.startswith(expr): |
|---|
| | 1052 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|
| | 1053 | |
|---|
| | 1054 | elif op.lower() in ("endswith"): |
|---|
| | 1055 | if virtValue.endswith(expr): |
|---|
| | 1056 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|
| | 1057 | |
|---|
| | 1058 | elif op.lower() in ("contains"): |
|---|
| | 1059 | if expr in virtValue: |
|---|
| | 1060 | self.__filterPKVirtual.append(self.getFieldVal(self.KeyField)) |
|---|