123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- import sqlite3
-
- from PySide6.QtGui import QStandardItemModel, QStandardItem
-
-
- def main_function(ui, db_path, utf_en):
- # 确保 utf_en 是字节字符串
- if not isinstance(utf_en, bytes):
- utf_en = utf_en.encode('utf-8')
-
- # 设置 QTabWidget 的可见性和标签文本
- tabs_to_show = [(0, '水准测段高差计算成果表')]
- for index in range(ui.tabWidget.count()):
- visible = index in [t[0] for t in tabs_to_show]
- ui.tabWidget.setTabVisible(index, visible)
- for index, text in tabs_to_show:
- ui.tabWidget.setTabText(index, text)
-
- # 连接到数据库并执行查询
- db1 = sqlite3.connect(db_path)
- db1.text_factory = lambda x: str(x, 'utf-8')
- cursor1 = db1.cursor()
-
- # 查询 GC_Output_Point 表中的 TableName 字段
- query_table_names = "SELECT DISTINCT TableName FROM GC_Output_Point"
- cursor1.execute(query_table_names)
-
- query = """
- SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_HDiff, New_RLen, Correct_Factor, Period_Diff, Dis_Ass
- FROM GC_Output_Point
- WHERE TableName = ?
- """
- cursor1.execute(query, (utf_en,))
- result = cursor1.fetchall()
- cursor1.close()
- db1.close()
-
- # 创建 QStandardItemModel 实例
- model = QStandardItemModel()
- model.setColumnCount(len(result[0]))
-
- # 设置表头
- headers = ['序号', '结果期数', '起点', '终点', '高差', '路线长', '修正数', '期间差异', '变形判定']
- model.setHorizontalHeaderLabels(headers)
-
- for row_data in result:
- items = []
- for i, item in enumerate(row_data):
- if i == 4 or i == 5: # 索引4(高差)
- item = f"{item:.6f}" # 格式化为6位小数
- elif i == 6: # 索引 6(修正数)
- item = f"{item:.2f}"
- elif i == 7: # 假设 Period_Diff 在索引 7
- if item is not None and isinstance(item, (int, float)):
- item = f"{item:.2f}" # 格式化为2位小数
- else:
- item = "" # 如果是 None 或非数字类型,显示空字符串
- elif i == 8: # 假设 Dis_Ass 在索引 8
- if item is not None and isinstance(item, str):
- item = item # 显示字符串内容
- else:
- item = "" # 如果是 None,显示空字符串
- items.append(QStandardItem(str(item)))
- model.appendRow(items)
-
- # 设置并展示表格
- ui.resultTableView.setModel(model)
- ui.resultTableView.show()
-
- # 隐藏 QLabel
- ui.default_remind.hide()
-
-
- def search_show_function(ui, db_path, utf_en):
- # 确保 utf_en 是字节字符串
- if not isinstance(utf_en, bytes):
- utf_en = utf_en.encode('utf-8')
-
- tabs_to_show = [(0, '输入数据'), (2, '水准测段高差计算成果表')]
- for index in range(ui.View.count()):
- visible = index in [t[0] for t in tabs_to_show]
- ui.View.setTabVisible(index, visible)
- for index, text in tabs_to_show:
- ui.View.setTabText(index, text)
-
- # 连接到数据库并执行查询
- db1 = sqlite3.connect(db_path)
- db1.text_factory = lambda x: str(x, 'utf-8')
- cursor1 = db1.cursor()
-
- # 查询 GC_Input_Point 表中的数据
- input_query = """
- SELECT New_ID, Last_ResultName, Last_SPName, Last_EPName,Last_HDiff,Last_RLen, New_ResultName, New_SPName, New_EPName,New_HDiff, New_RLen
- FROM GC_Input_Point
- WHERE TableName = ?
- """
- cursor1.execute(input_query, (utf_en,))
- input_result = cursor1.fetchall()
-
- # 创建 QStandardItemModel 实例
- input_model = QStandardItemModel()
- input_model.setColumnCount(len(input_result[0]))
-
- # 设置表头
- input_headers = ['序号', '上期成果名', '上期测段起点', '上期测段终点', '上期高差', '上期路线长', '本期成果名',
- '本期测段起点', '本期测段终点',
- '本期高差', '本期路线长']
- input_model.setHorizontalHeaderLabels(input_headers)
-
- for row_data in input_result:
- items = []
- for i, item in enumerate(row_data):
- if item is None:
- item = "" # 如果是 None,显示空字符串
- else:
- if i in [4, 5, 10, 11]: # 索引4,5,10,11(高差和路线长)
- item = f"{item:.6f}" # 格式化为6位小数
- items.append(QStandardItem(str(item)))
- input_model.appendRow(items)
-
- # 设置并展示输入数据表格
- ui.View.setTabText(0, '输入数据')
- ui.resultTableView1.setModel(input_model)
- ui.resultTableView1.show()
- # 隐藏 QLabel
- ui.default_remind1.hide()
-
- # 查询 GC_Output_Point 表中的数据
- output_query = """
- SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_HDiff, New_RLen, Correct_Factor, Period_Diff, Dis_Ass
- FROM GC_Output_Point
- WHERE TableName = ?
- """
- cursor1.execute(output_query, (utf_en,))
- output_result = cursor1.fetchall()
-
- # 创建 QStandardItemModel 实例
- output_model = QStandardItemModel()
- output_model.setColumnCount(len(output_result[0]))
-
- # 设置表头
- output_headers = ['序号', '结果期数', '起点', '终点', '高差', '路线长', '修正数', '期间差异', '变形判定']
- output_model.setHorizontalHeaderLabels(output_headers)
-
- for row_data in output_result:
- items = []
- for i, item in enumerate(row_data):
- if i == 4 or i == 5: # 索引4(高差)和索引5(路线长)
- item = f"{item:.6f}" # 格式化为6位小数
- elif i == 6: # 索引 6(修正数)
- item = f"{item:.2f}"
- elif i == 7: # 假设 Period_Diff 在索引 7
- if item is not None and isinstance(item, (int, float)):
- item = f"{item:.2f}" # 格式化为2位小数
- else:
- item = "" # 如果是 None 或非数字类型,显示空字符串
- elif i == 8: # 假设 Dis_Ass 在索引 8
- if item is not None and isinstance(item, str):
- item = item # 显示字符串内容
- else:
- item = "" # 如果是 None,显示空字符串
- items.append(QStandardItem(str(item)))
- output_model.appendRow(items)
-
- # 设置并展示输出数据表格
- ui.View.setTabText(1, '水准测段高差计算成果表')
- ui.reconTableView1.setModel(output_model)
- ui.reconTableView1.show()
-
- # 关闭数据库连接
- cursor1.close()
- db1.close()
-
- # 隐藏 QLabel
- ui.default_remind1.hide()
|