แสดงกระทู้

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 - PNR

หน้า: 1 ... 7 8 9 [10] 11 12 13 ... 32
163
แก้ โค้ดปุ่มค้นหาเป็นแบบนี้ครับ

โค๊ด: [Select]
Private Sub Command14_Click()
If IsNull(txt_FirstName) And IsNull(txt_NickName) Then
MsgBox "กรุณาระบุ ชื่อพนักงาน หรือ ชื่อเล่น ก่อนค้นหา’", vbOKOnly, "Warning !!"
txt_EmpID2.SetFocus

ElseIf Not IsNull(txt_FirstName) And IsNull(txt_NickName) Then
Me.Filter = "(((FirstName) Like '*" & txt_FirstName & "*'))"
Me.FilterOn = True


ElseIf IsNull(txt_FirstName) And Not IsNull(txt_NickName) Then
Me.Filter = "(((NickName) Like '*" & txt_NickName & "*'))"
Me.FilterOn = True

End If
If IsNull(txt_EmpID2) Then
MsgBox "ไม่พบข้อมูล !!", vbOKOnly, "Warning !!"
Me.FilterOn = False
End If
Me.Refresh
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

164
วิธีทำ
1.กำหนดแหล่งข้อมูลแถวของ Combobox TruckNO เป็น
โค๊ด: [Select]
SELECT tblTruck.TruckNO, tblTruck.TruckBrand, tblTruck.DriverName
FROM tblTruck
WHERE ((Not (tblTruck.TruckNO) Is Null));
1.1 กำหนด BoundColumn(หรือ คอลั่มที่ผู้ไว้ เท่ากับ 1)
1.2 กำหนดจำนวนคอลัมน์ 3
1.3 กำหนดความกว้างคอลัมน์ 5ซม.;0ซม.;0ซม.

2.กำหนดแหล่งข้อมูลแถวของ Combobox TruckBrand เป็น
โค๊ด: [Select]
SELECT [tblTruck].TruckBrand FROM tblTruck GROUP BY [tblTruck].TruckBrand HAVING ((Not ([tblTruck].TruckBrand) Is Null)); 2.1 กำหนด BoundColumn(หรือ คอลั่มที่ผู้ไว้ เท่ากับ 1)
2.2 กำหนดจำนวนคอลัมน์ 1
2.3 กำหนดความกว้างคอลัมน์ 5ซม.

3.กำหนดแหล่งข้อมูลแถวของ Combobox DriverName เป็น
โค๊ด: [Select]
SELECT [tblTruck].DriverName FROM tblTruck GROUP BY [tblTruck].DriverName HAVING ((Not ([tblTruck].DriverName) Is Null)); 3.1 กำหนด BoundColumn(หรือ คอลั่มที่ผู้ไว้ เท่ากับ 1)
3.2 กำหนดจำนวนคอลัมน์ 1
3.3 กำหนดความกว้างคอลัมน์ 5ซม.


4.เขียนโค้ด Event เมื่ออัพเดท ของcombobox TruckNO เป็น
โค๊ด: [Select]
Private Sub TruckNO_AfterUpdate()
If Not IsNull(Me.TruckNO) Then
Me.TruckBrand = Me.TruckNO.Column(1)
Me.DriverName = Me.TruckNO.Column(2)
Else
Me.TruckBrand = Null
Me.DriverName = Null
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak, pattan0013, Jieng2021

165
สร้างตัวแปรขึ้นมา 1 ตัวไว้บนสุดของคำสั่งบันทึก
เช่น dim strTAG as string
strTAG = me.tagIMM
.....โค้ดต่างๆที่มี......เช่น
Docmd.save
Docmd.gotorecord,,acnewrec
และจบท้ายคำสั่งด้วย
Me.tagIMM = strTAG


วิธีนี้เป็นการสร้างตัวแปรมาเก็บข้อมูลจาก text box ที่เราต้องการไว้ชั่วคราวและก็หลังจากนั้นก็เรียกกลับมาแสดงอีกครั้งได้ครับ เราแค่ลำดับเหตุการณ์การทำงานของคำสั่งที่เราเขียนไว้แค่นั้นเอง

โพสต์นี้ได้รับคำขอบคุณจาก: ชวลิต เสนะสุทธิ

166
ตอนแรกลองแก้ปัญหาแบบนั้นแล้วค่ะ แต่ปัญหาคือ พอคลิกเพิ่ม หรือ คลิกถัดไป Sub form มันไม่ไปด้วย มันยังอยู่ที่ระเบียนแรกอะค่ะ
หรือเราควรทำปุ่มให้อยู่ที่ form หลักใช่รึป่าวค่ะ เพราะเดิม ปุ่มมันอยู่ที่ form ผู้ยืม และเอา sub form ผู้ใช้ และ ผู้คืน มาใส่
ถ้าเราแยกทั้ง 3 ฟอร์ม มาเป็นซับฟอร์ม แล้วสร้างฟอร์มหลัก โดยปุ่มอยู่ที่ฟอร์มหลัก จะยังเกิดปัญหานี้มั้ยคะ

ต้องกำหนดการเชื่อมโยงข้อมูลของซัพฟอร์มด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: bo

167
ถ้าเป็นผม ผมจะทำฟอร์มแยกส่วนออกมา เป็นหมวดๆ ครับ
คือ ข้อมูลผู้ยืม , ข้อมูลผู้ใช้ , และข้อมูลการคืนอุปกรณ์ ควรแยกย่อยออกมาเป็นฟอร์มๆไป
หรือถ้าไม่แยกก็ควรอยู่ใน subform ครับ

ส่วนเวลาแสดงผล หรือแสดงรายงาน ค่อยนำมารวมกัน
โพสต์นี้ได้รับคำขอบคุณจาก: bo

168
ยอดเยี่ยมมากๆครับ  :love:
อาจจะมีวิธีอื่นๆที่ง่ายกว่านี้ แต่วิธีนี้สาย DIY คิดได้แค่นี้ แต่ก็สามารถนำไปใช้งานได้เหมือนกัน
ส่วน Left , Mid , Right
บางคนเขาก็จะใช้ Mid อย่างเดียวเลยก็ได้เหมือนกัน เพราะมันสามารถกำหนดช่วงของการนับได้ทั้งหมดอยู่แล้ว
แต่ผมใช้ทั้งสามแบบ เพื่ออยากให้ได้ศึกษาการใช้ Function เหล่านี้ไปประยุกต์ใช้กับงานอื่นๆ ต่อได้ครับ
ขอบคุณที่ช่วยอธิบายได้ละเอียดมากๆครับ

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

169
ปรับ SQL ของ RecordSort เป็น
โค๊ด: [Select]
SELECT [tb_ข้อมูลการยืม].[id_ข้อมูลการยืม], [tb_ข้อมูลการยืม].[วันที่ยืม], [tb_ข้อมูลการยืม].[id_ประเภทของอุปกรณ์], [tb_ข้อมูลการยืม].[ประเภทของอุปกรณ์], [tb_ข้อมูลการยืม].[id_ที่มาของอุปกรณ์], [tb_ข้อมูลการยืม].[ที่มาของอุปกรณ์], [tb_ข้อมูลการยืม].[id_ผู้ยืม], [tb_ข้อมูลการยืม].[ชื่อผู้ยืม], [tb_ข้อมูลการยืม].[นามสกุลผู้ยืม], [tb_ข้อมูลการยืม].[เลขบัตรประชาชนผู้ยืม], [tb_ข้อมูลการยืม].[id_ที่อยู่ผู้ยืม], [tb_ข้อมูลการยืม].[id_ชุมชน], [tb_ข้อมูลการยืม].[ชื่อชุมชน], [tb_ข้อมูลการยืม].[id_ผู้ใช้], [tb_ข้อมูลการยืม].[ชื่อผู้ใช้], [tb_ข้อมูลการยืม].[นามสกุลผู้ใช้], [tb_ข้อมูลการยืม].[เลขบัตรประชาชนผู้ใช้], [tb_ข้อมูลการยืม].[id_ความสัมพันธ์], [tb_ข้อมูลการยืม].[สาเหตุความจำเป็นที่ใช้อุปกรณ์], [tb_ข้อมูลการยืม].[วันที่คืน], [tb_ข้อมูลการยืม].[id_ผู้คืน], [tb_ข้อมูลการยืม].[ชื่อผู้คืน], [tb_ข้อมูลการยืม].[นามสกุลผู้คืน], [tb_ข้อมูลการยืม].[คืนอุปกรณ์], [tb_ข้อมูลการยืม].[อื่น ๆ (ความสัมพันธ์)], [tb_ข้อมูลการยืม].[อื่น ๆ (ประเภทของอุปกรณ์)], [tb_ผู้ยืม].[ชื่อผู้ยืม], [tb_ผู้ยืม].[นามสกุลผู้ยืม], [tb_ผู้ยืม].[เลขบัตรประชาชนผู้ยืม], [tb_ผู้ใช้อุปกรณ์].[ชื่อผู้ใช้], [tb_ผู้ใช้อุปกรณ์].[นามสกุลผู้ใช้], [tb_ผู้ใช้อุปกรณ์].[เลขบัตรประชาชนผู้ใช้], [tb_ผู้คืน].[ชื่อผู้คืน], [tb_ผู้คืน].[นามสกุลผู้คืน], [tb_ประเภทของอุปกรณ์].[ประเภทของอุปกรณ์], [tb_ที่อยู่ผู้ยืม].[บ้านเลขที่], [tb_ที่อยู่ผู้ยืม].ซอย, [tb_ที่อยู่ผู้ยืม].ถนน, [tb_ที่อยู่ผู้ยืม].[ตำบล], [tb_ที่อยู่ผู้ยืม].[อำเภอ], [tb_ที่อยู่ผู้ยืม].[จังหวัด], [tb_ที่มาของอุปกรณ์].[ที่มาของอุปกรณ์], [tb_ชุมชน].[ชื่อชุมชน], [tb_ความสัมพันธ์].[ความสัมพันธ์กับผู้ยืม]
FROM tb_ความสัมพันธ์ INNER JOIN (tb_ชุมชน INNER JOIN (tb_ที่มาของอุปกรณ์ INNER JOIN (tb_ที่อยู่ผู้ยืม INNER JOIN (tb_ประเภทของอุปกรณ์ INNER JOIN (tb_ผู้คืน INNER JOIN (tb_ผู้ใช้อุปกรณ์ INNER JOIN (tb_ผู้ยืม INNER JOIN tb_ข้อมูลการยืม ON [tb_ผู้ยืม].[id_ผู้ยืม] = [tb_ข้อมูลการยืม].[id_ผู้ยืม]) ON [tb_ผู้ใช้อุปกรณ์].[id_ผู้ใช้อุปกรณ์] = [tb_ข้อมูลการยืม].[id_ผู้ใช้]) ON [tb_ผู้คืน].[id_ผู้คืน] = [tb_ข้อมูลการยืม].[id_ผู้คืน]) ON [tb_ประเภทของอุปกรณ์].[id_ประเภทของอุปกรณ์] = [tb_ข้อมูลการยืม].[id_ประเภทของอุปกรณ์]) ON [tb_ที่อยู่ผู้ยืม].[id_ที่อยู่ผู้ยืม] = [tb_ข้อมูลการยืม].[id_ที่อยู่ผู้ยืม]) ON [tb_ที่มาของอุปกรณ์].[id_ที่มาของอุปกรณ์] = [tb_ข้อมูลการยืม].[id_ที่มาของอุปกรณ์]) ON [tb_ชุมชน].[id_ชุมชน] = [tb_ข้อมูลการยืม].[id_ชุมชน]) ON [tb_ความสัมพันธ์].[id_ความสัมพันธ์] = [tb_ข้อมูลการยืม].[id_ความสัมพันธ์];

แก้โค้ดของ ปุ่มค้นหาเดิม (Marcro1) เป็น
โค๊ด: [Select]
[tb_ผู้ยืม]![ชื่อผู้ยืม] & [tb_ผู้ยืม]![นามสกุลผู้ยืม] & [tb_ผู้ใช้อุปกรณ์]![ชื่อผู้ใช้] & [tb_ผู้ใช้อุปกรณ์]![นามสกุลผู้ใช้] Like '*' & [Forms]![frm_ข้อมูลการยืม]![txt_search] & '*'
แก้โค้ดของ ปุ่มค้นหาเดิม (Marcro2) เป็น
โค๊ด: [Select]
[tb_ข้อมูลการยืม]![เลขบัตรประชาชนผู้ยืม] & [tb_ผู้ใช้อุปกรณ์]![เลขบัตรประชาชนผู้ใช้] Like '*' & [Forms]![frm_ข้อมูลการยืม]![txt_search2] & '*'
โพสต์นี้ได้รับคำขอบคุณจาก: bo

170
ปัญหาเกิดจากการ Join Table มาแสดงบนฟอร์ม ทำให้ไม่สามารถดำเนินการเกี่ยวกับการเพิ่มข้อมูลใหม่ ได้ครับ
ขอปรับแก้ให้แปปนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: bo

171
ทำแล้วค่ะทั้ง 2 อย่าง
ขออนุญาตส่งไฟล์ได้มั้ยคะ
ครับส่งเข้า inbox ได้เลย
โพสต์นี้ได้รับคำขอบคุณจาก: bo

172
ลองทำ trust center ตามนี้แล้วใช่ไหม ถ้ายังไม่ได้ทักข้อความมาหน่อยครับ

1) trust center >> trust center setting > macro setting...
ตั้ง enable all...
2) trust center >> trust center setting > ActiveX setting...
ตั้ง enable all....
ไม่เลือก Save mode...
โพสต์นี้ได้รับคำขอบคุณจาก: bo

173
ห้อง MS Access / : สอบถาม error flow error 6
« เมื่อ: 08 ก.พ. 64 , 08:55:30 »
ก่อนแสดงบน textbox ให้ผ่านตัวแปรก่อนได้ไหมครับ
กำหนดตัวแปรเก็บค่าเป็น Long ก็ได้
เช่น

Dim a,b,c  as long
a = ค่าที่ dlookup มาจาก table
b = ค่า sum ที่ได้จาก textbox ใน form

c= (a/b)*100
textbox = c
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

174
ลองวิธีต่างๆ พวกนี้ดูว่าหายหรือไม่
1.ทำการ compact and repair หรือการซ่อมแซมข้อมูล
2.เช็คการเปิดใช้งาน หรือ Trust Location Center ว่าได้เปิดใช้งาน มาโคร แล้วหรือยัง ดูวิธีได้จากลิ้งด้านล่าง
https://www.thai-access.com/index.php?topic=375.msg1562#msg1562

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

175
ใช้ IF เช็ดเงื่อนไขเอาก็ได้แล้วครับเช่น


Private Sub btn_01_Click()
if IsNull(Me.txt_01) Then
Me.txt_01 = "1"
Elseif Me.txt_01 = "1" Then
Me.txt_01 = "0"
Elseif Me.txt_01 = "0" Then
Me.txt_01 = "1"
End if
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

176
Recordsort ของ ซัฟฟอร์มที่ชื่อ frmDepDoccSub ใส่โค้ดไปว่า

โค๊ด: [Select]
SELECT qryDepDoc.Cabinet, qryDepDoc.Shelf, qryDepDoc.Block, qryDepDoc.Sequence, qryDepDoc.DateRecieve, qryDepDoc.AppNo, qryDepDoc.CIF, qryDepDoc.CusName, qryDepDoc.DocTypeCode, qryDepDoc.DocTypeName, qryDepDoc.DateStart, qryDepDoc.Status, qryDepDoc.[01], qryDepDoc.[02], qryDepDoc.[03], qryDepDoc.[04], qryDepDoc.[05], qryDepDoc.[06]
FROM qryDepDoc
WHERE (((qryDepDoc.Cabinet)=[forms]![frmSearchDoc]![Cb_Cabinet]) AND ((qryDepDoc.Shelf)=[forms]![frmSearchDoc]![Cb_Shelf]) AND ((qryDepDoc.Block)=[forms]![frmSearchDoc]![Cb_Block]))
ORDER BY qryDepDoc.Sequence DESC;
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

177
อ้างถึง
กรอกข้อมูลครั้งที่ 2 โดยกรอก AppNo,CIF แต่พอจะใส่วันที่โปรแกรมขึ้น pop up ดังรูปน่ะครับ
ให้ลบ คำส่ง msgbox ออกไปพอดีผมทำมาเช็คค่าของตัวแปร แล้วลืมลบครับ  :XD:

ลบ MsgBox strSequence ออกไปครับ

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

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

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

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

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

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

หน้า: 1 ... 7 8 9 [10] 11 12 13 ... 32