ผมมีคอลัม TYPE กับ STATUS อยู่ครับ โดยคอลัม STATUS จะมีค่าเป็น A , B , C จะเปลี่ยนค่าตามนี้โดยการกดปุ่มครับ แต่บางครั้งกดปุ่มค่าในคอลัม STATUS บางก็ไม่เปลี่ยน ผมต้องการจะ select คอลัมที่มีการเปลี่ยนแปลงครับ โดยจะมีคอลัม TYPE เป็นตัวอ้าง
อันนี้ผมลองเขียนเทสใน vb นะ เป็นการนับเฉพาะคอลัมที่มีการเปลี่ยนแปลง โดยจัดตาม Type แต่มันเหมือนจะไม่เช็คทีละ Row อะครับ
Code (ASP)
Private Function prcCountUpdate()
nErrNo = 0
Dim myconn As New OleDb.OleDbConnection(Session(Session.SessionID).gsConnect)
myconn.Open()
For j = 0 To qchk.Count - 1 'ดึงค่าคอลัม STATUS ในตารางมาเช็ค
Dim cSQL As String = "select count(DISTINCT TYPE) as count from TABLE where STATUS!= '" & qchk.Item(j) & "' and TYPE like '%[" & qparavhtype & "]' "
Dim myda As New OleDb.OleDbCommand(cSQL, myconn)
Dim mydatareader As OleDb.OleDbDataReader = myda.ExecuteReader()
If mydatareader.Read() Then 'พบรหัส
Return mydatareader.Item("COUNT").ToString
mydatareader.Close()
private void button2_Click(object sender, EventArgs e)
{
//ดึงมาจาก DB
List<Table> table1 = new List<Table>()
{
new Table{Name = "1", Status = "A"},
new Table{Name = "2", Status = "A"},
new Table{Name = "3", Status = "A"},
new Table{Name = "4", Status = "A"},
new Table{Name = "5", Status = "A"}
};
//กรอกเข้ามา
List<Table> user1 = new List<Table>()
{
new Table{Name = "1", Status = "B"},
new Table{Name = "2", Status = "A"},
new Table{Name = "3", Status = "B"},
new Table{Name = "4", Status = "B"},
new Table{Name = "5", Status = "A"}
};
//เปรียบเทียบ
List<string> name = new List<string>();
for(int i=0; i<table1.Count; i++)
{
if (table1[i].Status != user1[i].Status)
{
name.Add(table1[i].Name);
}
}
}
public class Table
{
public string Name { get; set; }
public string Status { get; set; }
}
Private Function prcCountUpdate()
nErrNo = 0
Dim myconn As New OleDb.OleDbConnection(Session(Session.SessionID).gsConnect)
myconn.Open()
For j = 0 To qchk.Count - 1 'ดึงค่าคอลัม STATUS ในตารางมาเช็ค
Dim cSQL As String = "select count(DISTINCT TYPE) as count from TABLE where STATUS!= '" & qchk.Item(j) & "' and TYPE like '%[" & qparavhtype & "]' "
Dim myda As New OleDb.OleDbCommand(cSQL, myconn)
Dim mydatareader As OleDb.OleDbDataReader = myda.ExecuteReader()
If mydatareader.Read() Then 'พบรหัส
Return mydatareader.Item("COUNT").ToString
mydatareader.Close()
next
เพิ่ม field เวลาอัพเดท ลงในตาราง ก็จะรู้ว่าล่าสุดอัพเดทเมื่อไหร่
ตารางที่ทำไม่มีทาง รู้ว่าอันไหนอัพเดทอันไหนไม่อัพเดท
แค่รู้ว่า จำนวนที่มี type ตามกำหนดเท่านั้น
ถ้า a เปลี่ยนเป็น b
และมี field a เปลี่ยนเป็น c
และมี field c เปลี่ยนเป็น a
เราจะรู้ได้อย่างไรว่า ทั้งสาม record ได้เปลี่ยนแปลงไป ถ้าไม่มีวันที่เป็นตัวกำหนด
หรือไม่มีตารางเก่า มาเป็นตัวชีื ยังไงก็ต้องเปลี่ยนแปลงตาราง กำหนดฟีลด์ให้ครบถ้วน