Added relations data dialog wich is called from AddData form
This commit is contained in:
parent
2234722708
commit
44baf080db
2
dm.py
2
dm.py
|
@ -325,7 +325,7 @@ def insertDataIntoBD(dataList):
|
||||||
qweryData = qweryData + '' + item[1] + ','
|
qweryData = qweryData + '' + item[1] + ','
|
||||||
elif fType == 'datetime':
|
elif fType == 'datetime':
|
||||||
# преобразуем дату всяко разно
|
# преобразуем дату всяко разно
|
||||||
dt = datetime.strptime(item[1], "%d.%m.%Y %H:%M")
|
dt = datetime.strptime(item[1], "%d.%m.%y %H:%M")
|
||||||
item[1] = str(dt)
|
item[1] = str(dt)
|
||||||
qweryData = qweryData + '\'' + item[1] + '\','
|
qweryData = qweryData + '\'' + item[1] + '\','
|
||||||
elif fType == 'date':
|
elif fType == 'date':
|
||||||
|
|
118
gui.py
118
gui.py
|
@ -17,7 +17,7 @@ class MyTable(QTableWidget):
|
||||||
self.horizontalHeader().setStretchLastSection(True)
|
self.horizontalHeader().setStretchLastSection(True)
|
||||||
self.horizontalHeader().setCascadingSectionResizes(True)
|
self.horizontalHeader().setCascadingSectionResizes(True)
|
||||||
# равномерное изменение ширины столбцов
|
# равномерное изменение ширины столбцов
|
||||||
#self.horizontalHeader().setSectionResizeMode(1)
|
self.horizontalHeader().setSectionResizeMode(1)
|
||||||
# изменение ширины столбцов по размеру текста
|
# изменение ширины столбцов по размеру текста
|
||||||
#self.horizontalHeader().setSectionResizeMode(3)
|
#self.horizontalHeader().setSectionResizeMode(3)
|
||||||
self.horizontalHeader().setStyleSheet("color: black; font-weight:bold; background-color: lightblue;")
|
self.horizontalHeader().setStyleSheet("color: black; font-weight:bold; background-color: lightblue;")
|
||||||
|
@ -54,7 +54,102 @@ class MyTable(QTableWidget):
|
||||||
for currentQTableWidgetItem in self.selectedItems():
|
for currentQTableWidgetItem in self.selectedItems():
|
||||||
print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())
|
print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())
|
||||||
|
|
||||||
# Форма для добавления и редактирования
|
# Диалог выбора связанных данных
|
||||||
|
class RelationDataView(QMainWindow):
|
||||||
|
lblList = []
|
||||||
|
editList = []
|
||||||
|
|
||||||
|
def __init__(self, tblName, editWidget, field, lbl, rel):
|
||||||
|
super().__init__()
|
||||||
|
self.tblName = tblName
|
||||||
|
self.editWidget = editWidget
|
||||||
|
self.lbl = lbl
|
||||||
|
self.tblDescr = dm.getTablesDescriptionOfName(tblName)
|
||||||
|
self.field = field
|
||||||
|
self.rel = rel
|
||||||
|
self.setWindowTitle(self.tblDescr)
|
||||||
|
self.setGeometry(300, 300, 640, 480)
|
||||||
|
scroll_widget = QWidget()
|
||||||
|
self.general_layout = QVBoxLayout()
|
||||||
|
#scroll_area = QScrollArea()
|
||||||
|
|
||||||
|
l = QVBoxLayout()
|
||||||
|
headBox = QHBoxLayout()
|
||||||
|
lblHeader = QLabel("<B>Таблица: " + self.tblDescr)
|
||||||
|
l.addLayout(headBox)
|
||||||
|
headBox.addWidget(lblHeader)
|
||||||
|
hboxData = QHBoxLayout()
|
||||||
|
self.tableViewData = MyTable()
|
||||||
|
#print(self.widgetsList)
|
||||||
|
hboxData.addWidget(self.tableViewData)
|
||||||
|
hboxBtn = QHBoxLayout()
|
||||||
|
btnOk = QPushButton('Ок')
|
||||||
|
btnOk.clicked.connect(lambda: self.ok())
|
||||||
|
btnCancel = QPushButton('Закрыть')
|
||||||
|
btnCancel.clicked.connect(lambda: self.close())
|
||||||
|
|
||||||
|
l.addLayout(hboxData)
|
||||||
|
|
||||||
|
hboxBtn.addWidget(btnOk)
|
||||||
|
hboxBtn.addWidget(btnCancel)
|
||||||
|
l.addLayout(hboxBtn)
|
||||||
|
|
||||||
|
self.general_layout.addLayout(l)
|
||||||
|
|
||||||
|
scroll_widget.setLayout(self.general_layout)
|
||||||
|
#scroll_area.setWidget(scroll_widget)
|
||||||
|
self.setCentralWidget(scroll_widget)
|
||||||
|
|
||||||
|
addDataIntoTable(self.tblName, self.tableViewData)
|
||||||
|
|
||||||
|
def ok(self):
|
||||||
|
#listData = [self.tblName]
|
||||||
|
#listFieldData = []
|
||||||
|
# выбираем из выделенной строки значение нужной ячейки
|
||||||
|
# соответсвующей полю связанной таблицы
|
||||||
|
|
||||||
|
for currentQTableWidgetItem in self.tableViewData.selectedItems():
|
||||||
|
lstFields = dm.getTableStructure(self.tblName)
|
||||||
|
i = 0
|
||||||
|
for fieldItem in lstFields:
|
||||||
|
if fieldItem[0] == self.field:
|
||||||
|
#print(fieldItem, i)
|
||||||
|
self.editWidget.setText(self.tableViewData.item(currentQTableWidgetItem.row(), i).text())
|
||||||
|
# пррячем воле ввода
|
||||||
|
self.editWidget.hide()
|
||||||
|
print(self.lbl.text())
|
||||||
|
# в метку добавляем значения для подставновки соответсвенно связи
|
||||||
|
txt = '<b>'+str(self.getDataFromTableWidget(currentQTableWidgetItem.row()))
|
||||||
|
# устанавливаем текст на метку и включаем её
|
||||||
|
self.lbl.setText(txt)
|
||||||
|
self.lbl.setVisible(True)
|
||||||
|
break
|
||||||
|
i = i+1
|
||||||
|
self.close()
|
||||||
|
# получаем данные из таблицы для соответсвующих полей
|
||||||
|
# для подставновки в форму редактирования(добавления) для связей
|
||||||
|
def getDataFromTableWidget(self, row):
|
||||||
|
fields = self.rel.split(',')
|
||||||
|
lstFields = dm.getTableStructure(self.tblName)
|
||||||
|
print(fields)
|
||||||
|
print(lstFields)
|
||||||
|
txt = ''
|
||||||
|
|
||||||
|
for item in fields:
|
||||||
|
item = item.rstrip(' ').lstrip(' ')
|
||||||
|
print(item)
|
||||||
|
i = 0
|
||||||
|
for fieldItem in lstFields:
|
||||||
|
if fieldItem[0] == item:
|
||||||
|
print(item, fieldItem)
|
||||||
|
print(self.tableViewData.item(row, i).text())
|
||||||
|
txt = txt + ' ' +self.tableViewData.item(row, i).text()
|
||||||
|
|
||||||
|
i = i + 1
|
||||||
|
print(txt)
|
||||||
|
return txt
|
||||||
|
|
||||||
|
# Форма добавления записи в БД
|
||||||
class EditForm(QMainWindow):
|
class EditForm(QMainWindow):
|
||||||
lblList = []
|
lblList = []
|
||||||
editList = []
|
editList = []
|
||||||
|
@ -63,6 +158,7 @@ class EditForm(QMainWindow):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.tblName = tblName
|
self.tblName = tblName
|
||||||
self.setWindowTitle("Добавление записи")
|
self.setWindowTitle("Добавление записи")
|
||||||
|
#self.setGeometry(300, 300, 400, 400)
|
||||||
scroll_widget = QWidget()
|
scroll_widget = QWidget()
|
||||||
self.general_layout = QVBoxLayout()
|
self.general_layout = QVBoxLayout()
|
||||||
scroll_area = QScrollArea()
|
scroll_area = QScrollArea()
|
||||||
|
@ -94,6 +190,8 @@ class EditForm(QMainWindow):
|
||||||
fDescr = dm.getFieldDescription(tblName, fName)
|
fDescr = dm.getFieldDescription(tblName, fName)
|
||||||
hboxEdit = QHBoxLayout()
|
hboxEdit = QHBoxLayout()
|
||||||
lbl = QLabel(fDescr)
|
lbl = QLabel(fDescr)
|
||||||
|
lbl2 = QLabel(fDescr)
|
||||||
|
lbl2.hide()
|
||||||
|
|
||||||
#listRelationTableAndField = []
|
#listRelationTableAndField = []
|
||||||
btnRelations = ''
|
btnRelations = ''
|
||||||
|
@ -130,6 +228,7 @@ class EditForm(QMainWindow):
|
||||||
self.widgetsList.append([fName, edit])
|
self.widgetsList.append([fName, edit])
|
||||||
|
|
||||||
hboxEdit.addWidget(lbl)
|
hboxEdit.addWidget(lbl)
|
||||||
|
hboxEdit.addWidget(lbl2)
|
||||||
hboxEdit.addWidget(edit)
|
hboxEdit.addWidget(edit)
|
||||||
# добавляем к полю кнопку для вызова связанных
|
# добавляем к полю кнопку для вызова связанных
|
||||||
print(fName)
|
print(fName)
|
||||||
|
@ -145,7 +244,7 @@ class EditForm(QMainWindow):
|
||||||
btnRelations.setFixedWidth(30)
|
btnRelations.setFixedWidth(30)
|
||||||
# добавляем название виджета в список соответсвия кнопок и таблиц БД
|
# добавляем название виджета в список соответсвия кнопок и таблиц БД
|
||||||
# пиздец извращения =(
|
# пиздец извращения =(
|
||||||
self.btnRelationsList.append([btnRelations, tableRelation, fieldRelation, replaceField])
|
self.btnRelationsList.append([btnRelations, tableRelation, fieldRelation, replaceField, edit, lbl2, replaceField])
|
||||||
btnRelations.clicked.connect(lambda: self.openRelationTable())
|
btnRelations.clicked.connect(lambda: self.openRelationTable())
|
||||||
hboxEdit.addWidget(btnRelations)
|
hboxEdit.addWidget(btnRelations)
|
||||||
l.addLayout(hboxEdit)
|
l.addLayout(hboxEdit)
|
||||||
|
@ -179,9 +278,16 @@ class EditForm(QMainWindow):
|
||||||
if sender == item[0]:
|
if sender == item[0]:
|
||||||
btn = item[0]
|
btn = item[0]
|
||||||
tbl = item[1]
|
tbl = item[1]
|
||||||
|
fld = item[2]
|
||||||
|
lbl = item[5]
|
||||||
|
rel = item[6]
|
||||||
|
editWidget = item[4]
|
||||||
# выбираем данные из БД
|
# выбираем данные из БД
|
||||||
data = dm.selectData(tbl)
|
#data = dm.selectData(tbl)
|
||||||
print(data)
|
#print(data)
|
||||||
|
relForm = RelationDataView(tbl, editWidget, fld, lbl, rel)
|
||||||
|
relForm.show()
|
||||||
|
#relForm.setParent(self)
|
||||||
|
|
||||||
|
|
||||||
def clickTablesList(tbl_name, tblDataWidget, data='NULL'):
|
def clickTablesList(tbl_name, tblDataWidget, data='NULL'):
|
||||||
|
@ -302,6 +408,7 @@ def showMenuToolbar(window):
|
||||||
toolbar.addAction(printAction)
|
toolbar.addAction(printAction)
|
||||||
# toolbar.addAction(exitAction)
|
# toolbar.addAction(exitAction)
|
||||||
|
|
||||||
|
# форма для добавления новой записи
|
||||||
def addNewRecord():
|
def addNewRecord():
|
||||||
global listTables, tblRelationsData
|
global listTables, tblRelationsData
|
||||||
tblDescr = listTables.model().data(listTables.currentIndex())
|
tblDescr = listTables.model().data(listTables.currentIndex())
|
||||||
|
@ -317,6 +424,7 @@ def addNewRecord():
|
||||||
#editForm.setParent(tblRelationsData)
|
#editForm.setParent(tblRelationsData)
|
||||||
#editForm = Example()
|
#editForm = Example()
|
||||||
|
|
||||||
|
# отображение списка связанных данных
|
||||||
def showRelationsRecords(fieldIndex, fieldValue):
|
def showRelationsRecords(fieldIndex, fieldValue):
|
||||||
global tabRelationsData, listTables
|
global tabRelationsData, listTables
|
||||||
tblDescr = listTables.model().data(listTables.currentIndex())
|
tblDescr = listTables.model().data(listTables.currentIndex())
|
||||||
|
|
Loading…
Reference in New Issue
Block a user