这是一个Python Tkinter GUI程序,它可以选择多个*.MDB文件并将它们合并成一个新的MDB数据库。

import tkinter as tk
from tkinter import filedialog
import os
import shutil
import win32com.client

class MDBMerger:
    def __init__(self, master):
        self.master = master
        self.master.title("MDB Merger")
        self.master.geometry("400x200")
        self.master.resizable(False, False)

        self.mdb_files = []
        self.output_file = ""

        # Create widgets
        self.label = tk.Label(master, text="Select MDB files to merge:")
        self.label.pack(pady=10)

        self.button = tk.Button(master, text="Select Files", command=self.select_files)
        self.button.pack()

        self.merge_button = tk.Button(master, text="Merge", command=self.merge_files, state=tk.DISABLED)
        self.merge_button.pack(pady=10)

        self.save_label = tk.Label(master, text="Enter output file name:")
        self.save_label.pack()

        self.save_entry = tk.Entry(master)
        self.save_entry.pack()

        self.save_button = tk.Button(master, text="Save As", command=self.save_file, state=tk.DISABLED)
        self.save_button.pack(pady=10)

    def select_files(self):
        self.mdb_files = filedialog.askopenfilenames(filetypes=[("MDB Files", "*.mdb")])
        if self.mdb_files:
            self.merge_button.config(state=tk.NORMAL)

    def merge_files(self):
        if not self.mdb_files:
            return

        # Create temporary folder to hold the MDB files
        temp_folder = os.path.join(os.getcwd(), "temp")
        os.makedirs(temp_folder, exist_ok=True)

        # Copy MDB files to temporary folder
        for file in self.mdb_files:
            shutil.copy2(file, temp_folder)

        # Create Access Application object
        access = win32com.client.Dispatch("Access.Application")

        # Open temporary database
        db = access.DBEngine.OpenDatabase(os.path.join(temp_folder, os.path.basename(self.mdb_files[0])))

        # Loop through remaining databases and append them to the first one
        for file in self.mdb_files[1:]:
            access.DBEngine.CompactDatabase(db, os.path.join(temp_folder, os.path.basename(file)))

        # Close temporary database
        db.Close()

        # Save merged database to output file
        self.output_file = self.save_entry.get()
        access.DBEngine.CompactDatabase(os.path.join(temp_folder, os.path.basename(self.mdb_files[0])),
                                        self.output_file)

        # Delete temporary folder and files
        shutil.rmtree(temp_folder)

        # Enable save button
        self.save_button.config(state=tk.NORMAL)

    def save_file(self):
        if not self.output_file:
            return

        # Copy output file to selected location
        save_file = filedialog.asksaveasfilename(defaultextension=".mdb", filetypes=[("MDB Files", "*.mdb")],
                                                 initialfile=self.output_file)
        if save_file:
            shutil.copy2(self.output_file, save_file)

        # Reset program
        self.mdb_files = []
        self.output_file = ""
        self.merge_button.config(state=tk.DISABLED)
        self.save_button.config(state=tk.DISABLED)
        self.save_entry.delete(0, tk.END)

if __name__ == "__main__":
    root = tk.Tk()
    mdb_merger = MDBMerger(root)
    root.mainloop()

该程序使用了以下库:

  • tkinter:用于创建GUI界面
  • filedialog:用于选择文件和保存文件
  • os:用于操作文件和文件夹
  • shutil:用于复制和删除文件和文件夹
  • win32com:用于创建Access应用程序对象并合并MDB文件

程序的主要逻辑如下:

  1. 创建GUI界面和相关的窗口部件
  2. 选择MDB文件并将它们复制到临时文件夹中
  3. 创建Access应用程序对象并打开第一个MDB文件
  4. 循环遍历其余MDB文件,并将它们附加到第一个文件中
  5. 关闭临时数据库并将其保存为新文件
  6. 将新文件复制到用户选择的位置
  7. 删除临时文件夹和文件
  8. 重置程序状态

这个程序可以处理大量的MDB文件,并将它们合并成一个新文件。它使用Access应用程序对象来访问和修改MDB文件,因此需要安装Microsoft Access程序

用Python 点击开始按钮 打开窗口选择多个MDB数据点击确定合并成一个新的MDB数据库并输入新文件名另存的程序

原文地址: https://www.cveoy.top/t/topic/cjsn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录