def collect_data(ui, db): #! Please add cute Icons back, sir num_model = QSqlQueryModel() cust_model = QSqlQueryModel() ui.treeView = QtWidgets.QTreeView(ui.comboBox) db.open() num_model.setQuery('SELECT Number FROM Room', db) cust_model.setQuery('SELECT Name, ID, Sex FROM Customer', db) db.close() while cust_model.canFetchMore(): cust_model.fetchMore() ui.comboBox_2.setModel(num_model) ui.comboBox.setModel(cust_model) ui.comboBox.setView(ui.treeView) ui.treeView.setColumnHidden(2, True) icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(":/ctmr/48px-Emblem-person-blue.svg.png")) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(":/ctmr/48px-User_icon_3.svg.png")) i = 0 while i < ui.comboBox.count(): #print(cust_model.index(i, 1).data()) if cust_model.index(i, 2).data() == 'Male': ui.comboBox.setItemIcon(i, icon4) else: ui.comboBox.setItemIcon(i, icon5) i += 1
def new_addservice_dialog(self, window, db, res_index, thrd): #Setup UI ui = Ui_AddService() new_addservice = QDialog() ui.setupUi(new_addservice) #Setup ComboBox view db.open() srv_model = QSqlQueryModel() ui.treeView = QtWidgets.QTreeView(ui.comboBox) srv_model.setQuery('SELECT Name, ID FROM Service', db) db.close() while srv_model.canFetchMore(): srv_model.fetchMore() ui.comboBox.setModel(srv_model) ui.comboBox.setView(ui.treeView) db.close() ui.pushButton.clicked.connect(lambda: thrd.tryStart(TableWorker(add_DB(ui, new_addservice, db, "RoomService", [res_index.siblingAtColumn(0).data(),res_index.siblingAtColumn(1).data(),res_index.siblingAtColumn(2).data(),ui.treeView.currentIndex().siblingAtColumn(1).data()], "?, ?, ?, ?", [])))) ui.pushButton_2.clicked.connect(lambda: thrd.tryStart(TableWorker(del_DB(ui, new_addservice, db, "RoomService", "ResID = ? AND SrvID = ?", [res_index.siblingAtColumn(0).data(), ui.treeView.currentIndex().siblingAtColumn(1).data()], [])))) new_addservice.setWindowTitle('Add or remove a Service') new_addservice.exec()
def deleteData(self): current_row = self.listView.currentIndex() des_name = self.listView.model().data(current_row,0) # ถ้าไม่ได้เลือก record ให้ return if des_name == None: self.showDialog('กรุณาเลือกปลายทางที่จะลบก่อน') return des_name_inUse = False # เก็บ status ของ des_name # สร้าง sqlmModel ไว้สำหรับ query des_id มาเทียบกันระหว่างสองตาราง tempFromQueue = QSqlQueryModel() selectQueue = QSqlQuery() selectQueue.prepare('SELECT des_id FROM queue') tempFromDes = QSqlQueryModel() selectDes = QSqlQuery() selectDes.prepare('SELECT des_id FROM destination WHERE des_name = ' + f"'{des_name}'") # เก็บค่าของจากทั้งสองตารางมาตรวจสอบการซ้ำของ des_id ว่ามีการใชงานอยู่จริงหรือไม่ # exec query ถ้าผ่านให้ setQuery if selectDes.exec() == True and selectQueue.exec() == True: tempFromDes.setQuery(selectDes) tempFromQueue.setQuery(selectQueue) # fetch more หา rowCount ของจริง while tempFromQueue.canFetchMore(): tempFromQueue.fetchMore() # เทียบค่า des_id for i in range(tempFromQueue.rowCount()): if tempFromQueue.index(i,0).data() == tempFromDes.index(0,0).data(): des_name_inUse = True break else: des_name_inUse = False # ตรวจสอบว่า des_name ไม่มีการใช้งานในตาราง queue # หากมีการใช้งาน จะไม่สามารถลบออกจาก destination ได้ if des_name_inUse == True: self.showDialog(f'ปลายทาง {des_name} มีการใช้งานในตาราง ไม่สามารถลบได้') return # ยืนยันการลบด้วย code 1024 confCode = self.confDelete(des_name) if confCode == 1024: try: deleteQuery = QSqlQuery() deleteQuery.prepare("DELETE FROM destination WHERE des_name = " + f"('{des_name}')") print('Query = ' + deleteQuery.lastQuery()) if deleteQuery.exec(): print('DELETE COMPLETE') self.showDialog('ลบปลายทาง : ' + des_name + ' แล้ว') self.loadData() else: print('DELETE FALSE = ' + deleteQuery.lastError().text()) except(QSqlError) as e: print(str(time.strftime("%H:%M:%S : ", time.localtime())) + 'ERROR :' + str(e)) else: print('User decided cancel delete this record.')