แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Eik Q Sang

หน้า: 1 [2] 3 4
19
ผมได้ทดสอบปุ่มดูแล้วพบว่า
1.ลองใส่โค้ดดูแล้วลองไม่ระบุ 01-06 ไป แล้วกดปุ่มเพิ่ม แล้วกด "ตกลง" พบว่า ระบบไม่แจ้งเตือนครับอาจารย์ หรือว่าต้องระบุซับฟอร์มด้วยครับ
2.ลองใส่โค้ดดูแล้วลองไม่ระบุ 01-06 ไป แล้วกดปุ่มเพิ่ม แล้วกด "ไม่" พบว่า ระบบมีการเพิ่มรายการแต่ไม่รัน Sequence ให้ครับ
ไม่ทราบว่าต้องแก้ไขยังไงบ้างครับ อาจารย์ ขอบคุณมากครับผม

ลองดูตัวอย่างนี้ครับไม่รู้ได้ไหม
แก้การสร้าง SEQ ใหม่
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

20
งั้นโค้ดน่าจะแบบนี้

If MsgBox("คุณต้องการเพิ่มรายการใช่หรือไม่?", vbExclamation + vbYesNo, "Message Box") = vbYes Then

If IsNull(Me.[01]) And IsNull(Me.[02]) And IsNull(Me.[03]) And IsNull(Me.[04]) And IsNull(Me.[05]) And IsNull(Me.[06]) Then
ElseIf Me.[01] = "0" And Me.[02] = "0" And Me.[03] = "0" And Me.[04] = "0" And Me.[05] = "0" And Me.[06] = "0" Then
    MsgBox "ต้องเลือกข้อมูลอย่างน้อย 1 รายการ", vbCritical, "Message Box"
    Else
   DoCmd.GoToRecord , , acNewRec
   Me.txt_CodeType = ""
End If


Else
DoCmd.SetWarnings True
Me.Undo
Me.Refresh
End If

โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

21
ความต้องการคือ ถ้าเพิ่มข้อมูลใหม่
รายละเอียดสำคัญคือต้องมีข้อมูลในฟิลล์ 01 หรือ 02 หรือ 03 ใช่ไหมครับ
ถ้าไม่มี ข้อมูลพวกนี้ ก็อยากให้ไม่สามารถเพิ่มข้อมูลใหม่ได้ และมีการแจ้งเตือน ใช่ไหม
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

22
Cabinet - ตู้
Shelf - ชั้น
Seq - ลำดับ

รันเลขตู้นั้นมีแค่ 1/1/1 1/1/2 1/1/3 ไปจนถึง 1/1/N ใช่ไหม
ไม่มี 1/2/1  1/2/2  หรือ 3/1/1 ใช่ไหมครับ


โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

23
มีฟอร์มทั้งหมด 2 ฟอร์มชื่อ "collection","ข้อมูลทั้งหมด" ทั้ง 2 ฟอร์มพนักงานจะเปิดใช้พร้อมกัน
คำถามคือ ปัจจุบันผมใช้งานอยู่หน้าฟอร์ม collection และจะเปลี่ยนไปใช้หน้าฟอร์ม ข้อมูลทั้งหมด อยากให้ ฟอร์ม collection ปิดอัตโนมัติต้องทำยังไงครับ

ที่ฟอร์ม ข้อมูลทั้งหมด ใส่ Event แบบนี้เข้าไปครับ
การทำงานคือเมื่อเราใช้งานอยู่ที่ collectionเมื่อเราไปกดที่  ฟอร์มข้อมูลทั้งหมด
จะทำให้ ฟอร์มข้อมูลทั้งหมด ถูก โฟกัสเราก็สั่งปิดฟอร์ม collection ได้เลย

Private Sub Form_GotFocus()
DoCmd.Close acForm, "collection"
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

24
ห้อง MS Access / : รบกวนสอบถาม QR Code ครับ
« เมื่อ: 04 ก.พ. 63 , 12:49:36 »
อันนี้สร้างได้ทั้งบนฟอร์มและรายงานเลยครับ


เครดิต อ.TTT
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

25
ห้อง MS Access / : รบกวนสอบถาม QR Code ครับ
« เมื่อ: 30 ม.ค. 63 , 12:14:31 »
https://www.thai-access.com/yeadram_view.php?topic_id=5576
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

26
เพิ่มเติมต่อจากอาจารย์อีกหน่อยนะครับ

สมมุติตารางชื่อ Table1
Field ชื่อ  CusID,CusName,DocNumber,DocAddDate
Textbox ชื่อ txtFindCusID / txtFindCusName /  txtFindDocNum / txtFindDocAddDate
Form ในการค้นหา ชื่อ frmSearchCustomer
โค๊ด: [Select]
Private Sub Command40_Click()
Dim StrFilter1, StrFilter2, StrFilter3, StrFilter4 As String
Dim GroupFilter As String

'กำหนดเงื่อนไขให้กับตัวแปรว่าถ้ามีข้อมูลจะนำ Where Clause นี้มาต่อประโยคใน Sql
If Not IsNull(Me.txtFindCusID) Then
StrFilter1 = "(((Table1.CusID)=[forms]![frmSearchCustomer]![txtFindCusID])"
End If
If Not IsNull(Me.txtFindCusName) Then
StrFilter2 = "(((Table1.CusName)=[forms]![frmSearchCustomer]![txtFindCusName])"
End If
If Not IsNull(Me.txtFindDocNum) Then
StrFilter3 = "(((Table1.DocNumber)=[forms]![frmSearchCustomer]![txtFindDocNum])"
End If
If Not IsNull(Me.txtFindDocAddDate) Then
StrFilter4 = "(((Table1.DocAddDate)=[forms]![frmSearchCustomer]![txtFindDocAddDate])"
End If

'นำเงื่อนไขที่ได้จากด้านบน มาต่อประโยคกัน
GroupFilter = IIf(StrFilter1 = "", "", StrFilter1) & IIf(StrFilter2 = "", "", StrFilter2) & IIf(StrFilter3 = "", "", StrFilter3) & IIf(StrFilter4 = "", "", StrFilter4)

'ใช้ Replace เพื่อใช้ And ต่อเงื่อนไขใน Where Clause
GroupFilter = Replace(GroupFilter, ")(((", ") and ((")

'นำประโยคที่ได้มากำหนด RecordSource
If IsNull(Me.txtFindCusID) And IsNull(Me.txtFindCusName) And IsNull(Me.txtFindDocAddDate) And IsNull(Me.txtFindDocNum) Then
Me.RecordSource = "Select * from table1;"
Else
Me.RecordSource = "Select * from table1 where " & GroupFilter & ");"
End If
End Sub

ข้อดีคือ  สามารถเลือกค้นหาข้อมูลได้ทุก textbox ที่อยากค้นและ เราใช้การสร้าง RecordSource แค่อันเดียว เพราะ Sql ที่ได้มาจากการสร้างเงื่อนไขค้นหาด้านบนไว้หมดแล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

27
ไฟล์ตัวอย่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

28
ใช้ BeforeUpdate เช็คก็ได้คับ

ที่ปุ่มบันทึกใส่
โค๊ด: [Select]
Private Sub CmdSave_Click()
DoCmd.RunCommand acCmdSaveRecord
End Sub

โค๊ด: [Select]
Private Sub Form_BeforeUpdate(Cancel As Integer)
If MsgBox("คุณต้องการบันทึกข้อมูลหรือไม่?", vbQuestion + vbYesNo, "Save Confirmation!!") = vbYes Then
MsgBox ("บันทึกข้อมูลเรียบร้อย!")
Else
Cancel = True
Me.Undo
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

29
ตรงคำสั่งที่ปุ่ม Detail ที่เป็น

    DoCmd.OpenForm "frmLGDocDep", , , stLinkCriteria

ให้เพิ่ม OpenArgs เป็น Me.Address เพื่อส่งค่า Address ไปยังฟอร์มใหม่ที่เปิด

    DoCmd.OpenForm "frmLGDocDep", , , stLinkCriteria, , , Me.Address

ในฟอร์ม frmLGDocDep ตรง control ที่เป็น Address ให้ตั้ง Default Value เป็น = OpenArgs ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

30
ไม่ทราบว่าต้องการเขียนแบบ VBA ไหมคะ ถ้า VBA เป้กำลังทำอยู่เลยค่ะใช้ฟังชันก์ VLOOKUP
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

31
ห้อง MS Access / : สอบถามคิวรี่ครับผม
« เมื่อ: 25 มิ.ย. 62 , 11:52:51 »
ใช้ SubQuery นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

32
ต้องดู ประเภทของข้อมูลด้วยครับ เช่น เป็น text / Date/Time / หรือ ตัวเลข การกำหนดจะไม่เหมืิอนกัน
ที่มันแสดงป๊อบอัพขึ้นมาเพราะเงื่อนไขนั้น Doccode ต้องเป็นตัวเลข แต่ในงานของคุณเป็น text ครับ
แก้เป็นแบบนี้ครับ

โค๊ด: [Select]
DoCmd.OpenForm "frmFollowDetail", WhereCondition:="[Doccode]= '" & txt_DocCode1 & "'"
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

33
รบกวนถ้าจะอ้างอิง Code ยาวๆ จากโพสก่อน ผมว่าไม่ต้องก็ได้ครับให้กดโพสข้อความไปเลยไม่ต้องอ้างอิงมาเพราะมันจะดูรก และอ่านยากครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

34
ไม่รู้แบบนี้ไหมนะครับ ที่ฟอร์มสอง ถ้าไม่กดบันทึก เวลาจะปิดจะมีการสอบถามเรื่องการบันทึกข้อมูลถ้าตอบ No ข้อมูลจะไม่บันทึกใน ตาราง tblFollowDetail
เพิ่มระบบค้นหา No มาแสดง ลองดูครับ

โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

35
ใช้การสร้างตัวแปล มาเช็คสถานะของการบันทึกก็ได้ครับ โดยใช้ Events Form_BeforeUpdate ในการตรวจสอบ โค้ดผมยุบเหลือแค่นี้นะครับ
โค๊ด: [Select]
Private Sub cmb_Save_Click()
Dim IsSave As Boolean
If IsNull(txt_CIF) Then
MsgBox "กรุณาระบุ CIF !!", vbOKOnly, "Warning !!"
ElseIf IsNull(txt_TONo) Then
MsgBox "กรุณาระบุ TO No. !!", vbOKOnly, "Warning !!"
ElseIf IsNull(txt_DocCode) Then
MsgBox "กรุณาระบุรหัสเอกสาร !!", vbOKOnly, "Warning !!"
ElseIf IsNull(txt_DocTypeCode) Then
MsgBox "กรุณาระบุรหัสประเภทเอกสาร !!", vbOKOnly, "Warning !!"
ElseIf IsNull(txt_DocName) Then
MsgBox "กรุณาระบุชื่อเอกสาร !!", vbOKOnly, "Warning !!"
ElseIf IsNull(txt_DocDate) Then
MsgBox "กรุณาระบุวันที่เอกสาร !!", vbOKOnly, "Warning !!"
else
DoCmd.RunCommand (acCmdSaveRecord)
IsSave = True
End If
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)  'ก่อนข้อมูลจะถูกบันทึกในตารางต้องผ่านเงื่อนไขนี้ก่อน ครับถ้าตอบ No หรือกดปิดฟอร์มโดยไม่ได้กดบันทึก ข้อมูลจะไม่ถูกบันทึก
Dim msg As Integer
If IsSave = False Then
    msg = MsgBox("คุณต้องการบันทึกข้อมูลนี้หรือไม่?", vbYesNo, "สอบถาม")
    If msg = vbNo Then
       Me.Undo
    End If
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

36
ผมสร้างฟอร์ม ชื่อ frmMain1 มี text box ชื่อ txt_No1 ในฟอร์มนี้มีปุ่มเปิดฟอร์ม ชื่อ frmMain2 ในฟอร์มนี้มี textbox ชื่อ txt_No2
คำถาม ผมต้องการให้ frmMain1 เมื่อกดปุ่มเปิดฟอร์ม frmMain2 ให้ txt_No1= txt_No2 ต้องเขียนโค้ดใน vb ว่าอย่างไรบ้างครับ ขอบคุณมากครับ

ถ้าเป็นแบบ อ้างอิงแบบไม่ได้ Filter ที่ปุ่มก็ใส่แบบนี้ครับ
โค๊ด: [Select]
Private Sub OpenFrmMain2_Click()
DoCmd.OpenForm "frmmain2"
Forms!frmmain2.Form!txt_No2 = Me.txt_No1
End Sub

แต่ถ้าเป็นรูปแบบการ Filter เช่น txt_No2 Bound Field ชื่อ No และอยากให้ ระบุ No ที่ frmmain1 เมื่อเปิดฟอร์ม frmmain2 ก็ให้ Filter No มาแสดงก็ใส่แบบนี้
ถ้า Field No เป็น Number
โค๊ด: [Select]
Private Sub OpenFrmMain2_Click()
DoCmd.OpenForm "frmmain2", WhereCondition:="[No]=" & Me.txt_No1
End Sub

ถ้า Field No เป็น text
โค๊ด: [Select]
DoCmd.OpenForm "frmmain2", WhereCondition:="[No]= '" & Me.txt_No1 & "'"
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

หน้า: 1 [2] 3 4