Exemple #1
0
    def __init__(self, sql: str, noData: bool = False):
        '''根据一个Sql或表名返回一个JPTabelFieldInfo对象\n
        JPTabelFieldInfo(sql:str, noData:bool=False)
        '''
        db = JPDb()
        self.PrimarykeyFieldName = None
        self.PrimarykeyFieldIndex = None
        self.TableName = None
        self.DeleteRows = []

        sql = re.sub(r'^\s', '', re.sub(r'\s+', ' ', re.sub(r'\n', '', sql)))
        sel_p = r"^SELECT\s+.*from\s(\S+)[$|\s].*"
        mt = re.match(sel_p, sql, flags=(re.I | re.M))
        self.TableName = mt.groups()[0] if mt else sql
        s_filter = db.getOnlyStrcFilter()
        if noData:
            # 找出不包含条件的SQL语句
            p_s = r"^(SELECT\s+.*from\s(\S+)[$|\s](as\s\S+)*)"
            mt1 = re.match(p_s, sql, flags=(re.I | re.M))
            sql = mt1.groups(
            )[0] + " " + s_filter if mt else 'Select * from {} {}'.format(
                self.TableName, s_filter) if mt else sql
        else:
            sql = sql if mt else 'Select * from {} {}'.format(sql, s_filter)
        super().__init__(sql)

        # 检查查询结果中是否包含主键,
        for i, fld in enumerate(self.Fields):
            if fld.IsPrimarykey is True:
                self.PrimarykeyFieldName = fld.FieldName
                self.PrimarykeyFieldIndex = i
        if self.PrimarykeyFieldIndex is None:
            raise ValueError('查询语句:\n"{}"中未包含主键字段!'.format(sql))
Exemple #2
0
 def _search(self):
     db = JPDb()
     sql = self.cbo_base.currentData() if (
         self.cbo_base.currentIndex() != -1
         and self.cbo_year.currentIndex() != -1) else self.sql_none.format(
             db.getOnlyStrcFilter())
     tab = JPQueryFieldInfo(sql.format(self.cbo_year.currentText()))
     self.__changeTitle(tab)
     self.queryInfo = tab
     self.mod = _myMod(self.tableView, self.queryInfo)
     self.tableView.setModel(self.mod)