Public Class Form_备份管理 Dim m_Table As New System.Data.DataTable Dim m_InitOver As Boolean = False Public Const cst_TABLE_NAME As String = "备份记录表" Dim m_BackupManage As New CBackupManage Dim m_FixTableNames() As String = { "帐号表", "仓库表", "原料库存表", "员工信息表", "库位表_大岭山", "库位表_松山湖", "料号表" } Private Function CopyTable(ByVal srcTable As String, ByVal aimTable As String) As Boolean Dim strCreate As String = "CREATE TABLE `" & aimTable & "` LIKE `" & srcTable & "`" Dim strInsert As String = "INSERT INTO `" & aimTable & "` SELECT * FROM `" & srcTable & "`" Dim result As Boolean = False If SQL_ExeCommand(COL_RIGHTS.BOM管理, strCreate) = True AndAlso SQL_ExeCommand(COL_RIGHTS.BOM管理, strInsert) = True Then result = True End If Return result End Function Private Function CheckTableExist(ByVal table As String, ByRef isExist As Boolean) As Boolean Dim strSQL As String = "CHECK TABLE `" & table & "`" 'CHECK TABLE `BOM_U01-ATMEGA328P-TQFP32` Dim result As Boolean = False m_Table.Rows.Clear() m_Table.Columns.Clear() isExist = False If SQL_Query(COL_RIGHTS.BOM管理, strSQL, m_Table) = True Then If m_Table.Rows.Count > 0 Then If m_Table.Rows(0).Item(3) = "OK" Then isExist = True End If End If result = True End If Return result End Function Private Function DropTable(ByVal tableName As String) As Boolean Dim strSQL As String = "DROP TABLE IF EXISTS `" & tableName & "`" Dim result As Boolean = False If SQL_ExeCommand(COL_RIGHTS.BOM管理, strSQL) = True Then result = True End If Return result End Function Private Function GetAllBomTableNames(ByRef nameList As ArrayList) As Boolean Dim strQuery As String = "SELECT `" & CPartNumber.m_COLS_NAME(CPartNumber.COLS.料号PN) & "` FROM `" & CPartNumber.cst_TABLE_NAME & "`" Dim rTable As New System.Data.DataTable If SQL_Query(COL_RIGHTS.BOM管理, strQuery, rTable) = False Then Return False End If Dim result As Boolean = True nameList.Clear() For i As Integer = 0 To rTable.Rows.Count - 1 Try Dim name As String = rTable.Rows.Item(i).Item(0) nameList.Add(name) Catch ex As Exception result = False End Try Next Return result End Function Private Sub bt_BackupNow_Click(sender As Object, e As EventArgs) Handles bt_BackupNow.Click Dim result As Boolean = True Dim timeNow As Date = Now Dim backName As String = "bak_" '备份固定表 For Each pTableName As String In m_FixTableNames Dim newTablename As String = backName & pTableName DropTable(newTablename) If CopyTable(pTableName, newTablename) = False Then MsgBox("备份失败,文件:" & pTableName) result = False Exit For End If Next '备份BOM表 If result Then Dim bomNameList As New ArrayList If GetAllBomTableNames(bomNameList) = True Then Dim totalCount = bomNameList.Count ProgressBar1.Visible = True ProgressBar1.Maximum = 0 ProgressBar1.Maximum = totalCount Dim index As Integer = 0 Dim isExist As Boolean = False For Each pTableName As String In bomNameList pTableName = Strings.Trim(pTableName) Dim bomName = "bom_" & pTableName If CheckTableExist(bomName, isExist) = False Then MsgBox("备份失败,文件:" & bomName) result = False Exit For End If If isExist = True Then Dim newTablename As String = backName & bomName DropTable(newTablename) If CopyTable(bomName, newTablename) = False Then MsgBox("备份失败,文件:" & bomName) result = False Exit For End If End If index += 1 ProgressBar1.Value = index ProgressBar1.Refresh() Application.DoEvents() Next ProgressBar1.Visible = False End If bomNameList.Clear() End If If result Then Dim timeStr As String = timeNow.ToString("yyyyMMddHHmmss") m_BackupManage.SetBackupTime(timeStr) RefreshUpdateTime() MsgBox("备份完成") Else MsgBox("备份失败") End If End Sub Private Sub RefreshUpdateTime() Dim rTimeStr As String = "" If m_BackupManage.GetBackupTime(rTimeStr) = True Then lbl_LatestTime.Text = Strings.Left(rTimeStr, 4) & "年" & Strings.Mid(rTimeStr, 5, 2) & "月" & Strings.Mid(rTimeStr, 7, 2) & "日" & Strings.Mid(rTimeStr, 9, 2) & ":" & Strings.Mid(rTimeStr, 11, 2) & ":" & Strings.Mid(rTimeStr, 13, 2) Else lbl_LatestTime.Text = "----" End If End Sub Private Sub Form_备份管理_Load(sender As Object, e As EventArgs) Handles MyBase.Load RefreshUpdateTime() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Dim timeNow As Date = Now Dim timeStr As String = timeNow.ToString("yyyyMMddHHmmss") m_BackupManage.SetBackupTime(timeStr) RefreshUpdateTime() End Sub End Class