มือไหม่ช่วยหน่อยค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 1,253   1
URL.หัวข้อ / URL
มือไหม่ช่วยหน่อยค่ะ

คือว่าอยากลองใช้ acc เป็นบ้างค่ะ เลยซื้อหนังสือมาอ่าน แต่ก็ยังไม่เข้าใจเลย
เข้าเรื่องเลยน่ะค่ะ
คือว่าสร้าง form1 ไว้ตรวจสอบเวลาเข้างาน และพนักงานที่อยู่ที่บริษัท น่ะค่ะ
มี txtbox1 ไว้กรอกข้อมูล คือ ID หรือ txtname โดยการ Scanbarcode บัตร พนักงาน หากใครลืมเอาบัตรมาก็สามารถกรอก ID หรือ ชื่อได้เลย (ทำได้แล้ว)

มี txtbox2 แสดงวันที่ และเวลา (ทำได้แล้ว)
มี table1_subform ไว้แสดง รายชื่อพนักงานที่กรอกข้อมูลแล้ว (ทำได้แล้ว)
มี table2_subform ไว้แสดงการกรอกซ้ำ คือมีข้อมูลอยู่ที่ table1 แล้ว (ยังทำไม่เป็นเลยค่ะ)

มี table3_subform ไว้แสดงการกรอกข้อมูลที่กรอกผิด คือไม่มีข้อมูลในรายชื่อหรือID ถูกต้อง อยากทำให้มีเสียงเตือนด้วย (ยังทำไม่เป็นเลยค่ะ)
มี table1 มีฟิล ID, txtname ,txt_time
มี table2 มีฟิล ID, txtname ,txt_time
มี table3 มีฟิล txtErr ,txt_time
มี table4 มีฟิล ID, txtname ,Sec ,......

หนูเขียนคำสั่งที่
Private Sub txtbox1_Exit(Cancel As Integer)
   Dim Db As DAO.Database
   Dim SQL As String
   Dim InTrans As Boolean

   If Nz(Me.txtbox1, "") = "" Then Exit Sub
    
   InTrans = False

On Error GoTo err_rtn

   Set Db = CurrentDb

DBEngine.BeginTrans: InTrans = True
SQL = "insert into table1(ID,txtname,txt_time) select ID,txtname,txt_time #" & Format(Now(), "dd-mmm-yyyy hh:nn") & "# from table4 where table4.ID = '" & Me.txtname & "' or table4.txtname = '" & Me.txtname & "' "
   Db.Execute SQL
      me.txtname = ""
      me.txtname.SetFocus
DBEngine.CommitTrans dbForceOSFlush: InTrans = False
Me.[table1_subform].Form.Requery
Me.[table2_subform].Form.Requery
Me.[table3_subform].Form.Requery
exit_rtn:
   Exit Sub

err_rtn:
   If InTrans Then DBEngine.Rollback
   MsgBox "error code " & Err.Number & ", " & Err.Description
   Resume Next
   
End Sub

ต้องทำแบบไหนค่ะที่จะให้ txtname ที่ซ้ำไปอยู่ที่ table2
และ ไม่มีข้อมูลไปอยู่ที่ table3 (ไม่มีข้อมูลให้มีเสียงเตือนด้วย)
ไม่ทราบว่าถูกต้องหรือเปล่า
ถ้าใครมีอะไรบอกได้น่ะค่ะ หนูเขียนตามความเข้าใจ
อยากให้คนมีประสบการณ์ช่วยชี้แนะด้วย




1 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R08618
ฟอร์มย่อย1 แสดงผลจาก table1
ฟอร์มย่อย2 แสดงผลจาก table2
ฟอร์มย่อย3 แสดงผลจาก table3

ฟอร์มหลัก ให้มี textbox 2 ตัว
1 txBox2 แสดงผลวันเวลาปัจจุบัน
2 txBox1 ไว้รับค่าการป้อนข้อมูล (กรอกได้เฉพาะเลข ID เท่านั้น ห้ามกรอกอย่างอื่น)

เขียนโค้ดใน txBox1
sub txBox1_Exit(cancel as integer)

if txBox1="" then exit sub

dim xID, xDupplicate, xName
Dim sql as string
Dim Conn as new adodb.connection
set Conn = currentproject.connection

xID = nz(dlookup("ID", "table4","ID = '" & txBox1 & "'"),"NoID")
if xID = "NoID" then
sql = "Insert into table3 values('No ID input : " & txBox1 & "', " & now() & ");"
docmd.beep
Conn.execute sql
table3_subform.requery
else
xName = dlookup("txName","Table4","ID = '" & txBox1 & "'")
xDupplicate = nz(dlookup("ID", "table1","ID = '" & txBox1 & "'"),"Dupplicate")
if xDupplicate = "Dupplicate" then
sql = "Insert into table2 values('" & txBox1 & "', '" & xName & "', " & now() & ");"
Conn.execute sql
table2_subform.requery
else
sql = "Insert into table1 values('" & txBox1 & "', '" & xName & "', " & now() & ");"
Conn.execute sql
table1_subform.requery
end if
end if
set Conn = nothing
end sub
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3396s