 |
|
ขอรบกวนอีกครั้งครับ ยังงงเหมือนเดิม การวนรูปเพิ่มข้อมูลวันเวลาและสถานะว่าไม่มาลงฐานข้อมูล |
|
 |
|
|
 |
 |
|
ขอรบกวนอีกครั้งครับ ยังงงเหมือนเดิม การวนรูปเพิ่มข้อมูลวันเวลาและสถานะว่าไม่มาลงฐานข้อมูล
จากที่ลองทำแบบที่หลายๆท่านว่า... ผมก็ยังติดแหง๊กอยู่ที่เดิมครับ ถ้าผ่านตรงนี้ไปได้.. ก็จบแล้วครับโปรเจ็กผม
นี้เป็นโค๊ดการเพิ่มข้อมูลครับ
Code (VB.NET)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If sConnection.State = ConnectionState.Closed Then
sConnection.ConnectionString = "SERVER = localhost; USERID=root; PASSWORD=123456; DATABASE=attc;"
sConnection.Open()
End If
Dim intNumRows As Integer
Dim sqlQuery As String = "SELECT COUNT(*) FROM tbl_time WHERE id = '" & txtid.Text & "' and date = '" & Format(Now, "dd-MM-yyyy") & "'"
Dim objCmd = New MySqlCommand(sqlQuery, sConnection)
intNumRows = objCmd.ExecuteScalar()
If intNumRows > 0 Then
MsgBox("รหัสนักศึกษาซ้ำค่ะ.")
Else
sqlQuery = "INSERT INTO tbl_time(id ,date, time) VALUES('" & txtid.Text & "','" & Format(Now, "dd-MM-yyyy") & "','" & Format(Now, "h:mm:ss") & " ')"
Dim sqlCommand As New MySqlCommand
With sqlCommand
.CommandText = sqlQuery
.Connection = sConnection
.ExecuteNonQuery()
End With
MsgBox("คุณได้บันทึกเวลาแล้วค่ะ")
txtid.Clear()
Refresh()
Form1.Show()
Hide()
End If
(แต่ผมต้องการ ให้มันวนรูปเมื่อเรากดปุ่ม หรือถึงเวลาที่กำหนดให้มันวนรูป แล้วมันจะค้นหา id จาก tbl_people ไปลงไว้ใน tbl_time ทุกอันเลยน่ะครับ โดยมันจะไม่เพิ่มคนที่มาลงเวลาแล้ว แต่มันจะข้ามไป.. พอช่วยได้ไหมครับ ถ้ายังไงก็ขอบคุณครับ
ปล. เว็บผมเข้าอัพรูปให้ดูไม่ได้อะครับ)
Tag : .NET, MySQL, VB.NET
|
|
 |
 |
 |
 |
Date :
2013-12-05 15:48:26 |
By :
canasso |
View :
770 |
Reply :
1 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบแบบซื่อๆ ตรงไปตรงมา ถ้าต้องการให้ทำงาน(jobs)อัตโนมัติ สามารถทำได้ใน Service SQL Server Agent
แต่เซอวิสนี้จะมีเฉพาะ SQL Server Standard ขึ้นไป 
ตอบแบบตรงประเด็น ผมว่าคุณยังไม่เข้าใจอะไรบางอย่างเกี่ยวกับการออกแบบฐานข้อมูล Normalization
และอัลกอริทึมคุณยัง งง ๆ กับตัวเองอยู่ 
ผมจะชี้แนวทางให้คุณลองไปทำดูนะครับ (เหมือนเคยตอบกระทู้เก่าของคุณไปแล้วทีนึง)
ตาราง tbl_people(ตาราง นักศึกษา)
ฟิล ID_Std(PK) | FullName เป็นต้น
ตาราง tbl_time(ตาราง ลงเวลา)
ฟิล ID_Time(PK) | ID_Std(FK) | CheckInTime(ชนิด DateTime ฟิลวันเวลาที่มาเรียน) เป็นต้น
สังเกตุว่า 2 ตารางนี้ จะมีความสัมพันธ์ one to many (1 ต่อ หลาย) อยู่คือ
นักศึกษา 1 คน จะมี ได้หลายการลงเวลา (1 คน ลงเวลาได้หลายครั้ง)
มองกลับกัน ที่ตารางลงเวลา(tbl_time) 1 การลงเวลา(1เรคอร์ด) จะมีนักศึกษาได้แค่ 1 คน
ถ้าคุณเข้าใจตรงนี้ถือว่าพื้นฐานคุณผ่าน
"ต่อ"
มาดูที่จุดประสงค์แบบตรงเป้า
- อยากรู้ว่า ใน 1 วัน ใครมาเรียนบ้าง ใครไม่มาบ้าง
วิธีการ
ก่อนอื่น ต้องบอกตั้งแต่การจัดเก็บข้อมูลในตารางที่บอกไปข้างต้นก่อน
ในตาราง tbl_people เราต้องกรอก ข้อมูล นักศึกษาทุกคนในห้อง ในโรงเรียน
ให้ครบก่อน เพื่อให้มีข้อมูลในการเชื่อม FK(Foreing Key)
หลังจากนั้น ถ้านักศึกษาจะลงเวลา ก็ให้ฟิล ID_Time เพิ่มอัตโนมัติ (identity=true)
และฟิล ID_Std เชื่อมกับ ID_Std ของตาราง tbl_people ก็เอา ID_Std ของใครก็เอาของคนนั้นมากรอกลง
ฟิล CheckInTime ลงเวลามา
เมื่อรู้แล้วว่าบันทึกยังไง ต่อมาเราจะทำการ Select ข้อมูลที่เราอยากรู้
1. อยากรู้ว่านักศึกษาที่มาในวันที่ 5/12/2556 มีใครบ้าง จะเขียนคิวรี่ยังไงครับ
Code (SQL)
SELECT tbl_people.ID_Std , tbl_people.FullName FROM tbl_time
LEFT JOIN tbl_people ON tbl_people.ID_Std = tbl_time.ID_Std
WHERE tbl_time.CheckInTime = '5/12/2556'
ผลลัพท์ ก็จะแสดง รหัสนักศึกษา , ชื่อนักเรียน ที่มาเรียนในวันที่ 5/12/2556
2. ตรงกันข้าม ถ้าอยากรู้ว่านักศึกษาที่ไม่มาในวันที่ 5/12/2556 มีใครบ้าง จะเขียนคิวรี่ยังไงครับ
Code (SQL)
SELECT tbl_people.ID_Std , tbl_people.FullName FROM tbl_people
LEFT JOIN tbl_time ON tbl_time.ID_Std = tbl_people.ID_Std AND tbl_time.CheckInTime = '5/12/2556'
WHERE tbl_time.ID_Time IS NULL
หรือ
Code (SQL)
SELECT tbl_people.ID_Std , tbl_people.FullName FROM tbl_people
WHERE tbl_people.ID_Std NOT IN (
SELECT tbl_people.ID_Std FROM tbl_time
LEFT JOIN tbl_people ON tbl_people.ID_Std = tbl_time.ID_Std
WHERE tbl_time.CheckInTime = '5/12/2556'
)
เป็นต้น
ทั้งหมดนี้ อยู่ที่คุณจะขยันทำความเข้าใจ และนำไปประยุกต์ได้อย่างเหมาะสมนะครับ 
|
 |
 |
 |
 |
Date :
2013-12-05 17:12:05 |
By :
01000010 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|