7/04/2020

โปรแกรม MasterTime มีปัญหา ขึ้นวันที่ ซ้ำกัน

โปรแกรม MasterTime มีปัญหา ขึ้นวันที่ ซ้ำกัน ปกติรหัสหนึ่งคนใน 1 วันจะขึ้นแค่วันเดียว
แต่พบปัญหาขึ้นวันเดียวกัน 2 วัน ทำให้ข้อมูลไม่ถูกต้อง
ลบในตัวโปรแกรมไม่มีที่ลบ จึงต้องทำ VB ที่ Connect ผ่าน ODBC เข้าไปลบข้อมูลในฐานข้อมูลชื่อ _daily
วิธีแก้
1. Backup ข้อมูลก่อนทำ ปิดโปรแกรม MasterTime เพื่อไม่ให้ Lock Database
2. Run Program MT ที่เขียนขึ้น เข้า Tab ลบข้อมูลผิด ใส่รหัสพนักงาน ใส่วันที่ที่มีข้อมูลผิด กด ลบข้อมูล
3. กด OK
4. ลบแล้วแต่ไฟล์ Database ข้อมูลยังมีอยู่ วิธีแก้ต้องซ่อม Database ในตัวโปรแกรม MasterTime ก่อน ข้อมูลจึงจะถูกลบจริง
ซ่อมเฉพาะ _daily ก็ได้
5. ใช้ไฟล์ Text เดิมหลอกเพิ่มวันที่ และรหัสพนักงานที่ต้องการ แล้วคีย์ข้อมูลใหม่
Code ลบ
  1.        If EmpID.TextLength <> 5 Then
  2.             MessageBox.Show("รหัสพนักงานไม่ถูกต้อง !")
  3.         Else
  4.             myConnection.ConnectionString = ConnectionString
  5.             myConnection.Open()
  6.             myCommand.Connection = myConnection
  7.  
  8.             'ConnectionString = "Provider=Microsoft.Jet.odbc.4.0;" & "Data Source=C:\MasterTech\mastertime;Extended Properties=dBase IV"
  9.             ConnectionString = "dsn=MT"
  10.             Console.WriteLine("Connecting...")
  11.  
  12.             DBaseConnection = New System.Data.Odbc.OdbcConnection(ConnectionString)
  13.             DBaseConnection.Open()
  14.  
  15.             Dim WorkDay As String = DateTimePickerDel.Value.ToString("yyyy'/'MM'/'dd")
  16.             Dim DBaseCommand As System.Data.Odbc.OdbcCommand
  17.             'Dim DBaseDataReader As System.Data.Odbc.OdbcDataReader
  18.  
  19.             SQL = "DELETE FROM _daily WHERE ID_CARD ='" & EmpID.Text & "' AND WORKDAY = #" & WorkDay & "#"
  20.             'SQL = "DELETE FROM _daily WHERE ID_CARD ='" & EmpID.Text & "' AND WORKDAY LIKE #" & WorkDay & "%#"
  21.  
  22.             'SQL = "SELECT ID_CARD, WORKDAY FROM _daily  WHERE ID_CARD ='" & EmpID.Text & "' AND WORKDAY = #" & WorkDay & "#"
  23.             'SQL = "SELECT ID_CARD, WORKDAY FROM _daily WHERE ID_CARD ='" & EmpID.Text & "'"
  24.             Console.WriteLine(SQL)
  25.             DBaseCommand = New System.Data.Odbc.OdbcCommand(SQL, DBaseConnection)
  26.             'DBaseDataReader = DBaseCommand.ExecuteReader(CommandBehavior.SequentialAccess)
  27.  
  28.             'While DBaseDataReader.Read()
  29.             '    Console.WriteLine(String.Format("{0}, {1}", _
  30.             '    DBaseDataReader(0), DBaseDataReader(1)))
  31.             'End While
  32.  
  33.             DBaseCommand.ExecuteNonQuery()
  34.             myConnection.Close()
  35.             MessageBox.Show("ลบข้อมูลสำเร็จ")
  36.             Environment.Exit(0)
  37.         End If

No comments:

Post a Comment