def adbCon(self, tab_place): '''Создает подключение к базе данных MS ACCESS tab_place - полный путь к базе данных или 2 <NGuides.mdb>, 3<M73Main.mdb> index - внутренний индекс соединения ''' try: if str(tab_place).isdigit(): if tab_place in [2, 3]: szSrc = int(tab_place) if tab_place == 2: ind = k3.adbcon(3) sqlstr = """SELECT CorePaths.Path FROM CorePaths WHERE (((CorePaths.Name)='Proto'));""" indrs = k3.adbopen(ind, sqlstr) self.tab_place = k3.adbgetvalue(indrs, 0, '0') indrs = k3.adbclose(indrs) result = k3.adbdiscon(ind) elif tab_place == 3: self.tab_place = k3.mpathexpand('<commonappdata>') + '\\M73Main.mdb' else: szSrc="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+tab_place self.tab_place = tab_place self.index = k3.adbcon(szSrc) except : if (k3.fileexist(str(tab_place))==0): k3.putmsg("База по адресу "+str(tab_place)+" не обнаружена",0) return self.index
def get_proto_property(con, id_proto): """Определяем список свойств прототипа""" sqlstr = [ """SELECT TProtoPar.ParName, TProtoPar.ParPrompt, TProtoCategory.Category, TProtoCategory.ID AS IDCategory FROM TProtoCategory INNER JOIN TProtoPar ON TProtoCategory.ID = TProtoPar.CategoryID WHERE (((TProtoPar.ProtoID)=""" + str(int(id_proto)) + """)) ORDER BY TProtoPar.ParName;""" ] rs = con.RecordSetOpen(sqlstr) lrs = [] if rs.count > 0: k3.adbmovefirst(rs.idRS) while k3.adbiseof(rs.idRS) == 0: lrs.append([ k3.adbgetvalue(rs.idRS, 'ParName', '0'), k3.adbgetvalue(rs.idRS, 'ParPrompt', '0'), k3.adbgetvalue(rs.idRS, 'Category', '0'), k3.adbgetvalue(rs.idRS, 'IDCategory', 0) ]) k3.adbmovenext(rs.idRS) rs.Close() return lrs
def getPathNguides(): ''' Возвращает полный путь к Nguides.mdb ''' con = k3.adbcon(3) SQLSTR = '''SELECT CorePaths.Path FROM CorePaths WHERE (((CorePaths.Name)="Proto"));''' r = k3.adbopen(con, SQLSTR) ij = k3.adbreccount(r) path = k3.adbgetvalue(r, 'path', "xxx") if ij > 0 else None con = k3.adbdiscon(con) return path
def get_nomenclature_property(self): """Определяем список доступных имен (идентификаторов) свойств номенклатуры""" NGuides = DataBase_ACCESS() NGuides.adbCon(2) sqlstr = ["""SELECT NProperties.Ident FROM NProperties;"""] rs = NGuides.RecordSetOpen(sqlstr) lrs = [] if rs.count > 0: k3.adbmovefirst(rs.idRS) while k3.adbiseof(rs.idRS) == 0: lrs.append(k3.adbgetvalue(rs.idRS, 'Ident', '0')) k3.adbmovenext(rs.idRS) rs.Close() NGuides.adbDisCon() return lrs
} } for gr in dGroup: IDGr = 0 try: # Проверка на наличие группы умолчания SQLStr = "SELECT ID, Name FROM udCategory WHERE Query=\"{}\"".format( gr) RS = base.RecordSetOpen(SQLStr) if round(RS.count) != 1: # Максимальный ID группы RS1 = base.RecordSetOpen( "SELECT max(b.ID) AS maxID FROM udCategory b") k3.adbmovefirst(RS1.idRS) IDGr = int(k3.adbgetvalue(RS1.idRS, "maxID")) IDGr += 1 SQL = '''INSERT into udCategory (ID, Name, Query, ParentID, Sort) SELECT top 1 {0}, '{1}', '{2}', NULL, (SELECT max(c.Sort) from udCategory c WHERE c.ParentID is Null)+1 FROM udCategory a WHERE ParentID is Null'''.format(IDGr, dGroupName.get(gr, "None"), gr) base.RecordSetModify(SQL) print("Создали") KeyReLoad = True RS1.Close() else: k3.adbmovefirst(RS.idRS) IDGr = int(k3.adbgetvalue(RS.idRS, "ID")) RS.Close()
if side == 5: checkDecor('A', IDGroup) if side == 6: checkDecor('F', IDGroup) if side == -1: checkDecor('A', IDGroup) checkDecor('F', IDGroup) if IDGroup not in nGroups: zp1 = "SELECT Name FROM TProtoParType WHERE ID={}".format( IDGroup) indrs = k3.adbopen(k3.adbcon(2), zp1) total_s1 = k3.adbreccount(indrs) if total_s1 > 0: err = k3.adbmovefirst(indrs) nGroups[IDGroup] = k3.adbgetvalue( indrs, "Name", 0) else: nGroups[IDGroup] = "" i += 1 dPans['A'] = lGDecA dPans['F'] = lGDecF Shpon = False isMDF = False isDSP = False priceid = k3.getattr(obj, 'priceid', 0) parentid = k3.priceinfo(priceid, 'ParentID', 0, 1) pid = parentid if parentid > 0 else priceid MATTYPENAM = k3.priceinfo(pid, 'MATTYPENAM', "", 1) if MATTYPENAM[:4] == 'Шпон':