แสดงกระทู้

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

หน้า: [1] 2 3 4
1
อ้างถึง
ขอบคุณมากเลยครับ แต่ผมอาจจะอธิบายไปชัดเจน ผมอยากให้ lock record วันที่ 3 ในเดือนถัดไปครับ จะใช้วิธีนี้ได้ไหมครับ?? แล้วมันจะใช้ได้ทุกเดือนไหมครับ??
เช็คเฉพาะวันที่ 3 ของทุกเดือนใช้แบบนี้
SELECT IIf(Day(Mydate)=3,1,0) AS CheckMonth, *  FROM Mytable;

ถ้าอยากให้ วันที่ 3 ของเดือนนี้สามารถเพิ่มหรือแก้ไขข้อมูลได้แต่ของเดือนอื่นๆ ที่ไม่ใช่เดือนนี้ห้ามแก้ไขใส่แบบนี้
SELECT IIf(Day(Mydate)=3 And Not Month(Mydate) = Month(Date()),1,0) AS CheckMonth, *  FROM Mytable;


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

2
ใช้  Datediff ช่วยเช็คได้ไหมครับ



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

3
1. ผมอยากที่จะ Lock เมื่อพนักงานใส่ข้อมูลเรียบร้อยแล้วและไม่ให้มาแก้ไขอีกเมื่อเวลาผ่านไป 5 วัน สามารถทำได้ไหมครับ??
ตอบ ทำได้ครับ โดยใช้ VBA นับวันที่บันทึกข้อมูลแต่ละเรคอร์ด ซึ่งจะใช้ไม่ได้กับ Continuous Form หรือ Datasheet


2. ผมอยากให้เวลาพนักงานกด Save หรือ Submit แล้วให้ auto เปลี่ยนข้อความในช่องสถานะ
ตอบ ต้องใช้ Update Query เพื่อ Update หลัง Submit
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

4
เปลี่ยนฟอร์นหรือปรับขนาดตัวอักษรที่เมนูด้านบนได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

5
เปิด Query Design แล้วคลิกพื้นสีเทา จากนั้นกำหนด Unique Values = Yes



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

6
ขอตอบตามวิธีที่ผมใช้นะครับนั่นคือ
> CostTruckingSupplier = [ชื่อฟอร์มย่อย].[Form]![Sum CostSup]
> ทำ TextBox ผูกกับตารางที่ต้องการเก็บค่า(แต่สั่งซ่อนไว้ไม่แสดง)
> ทุกปุ่มคำสั่งที่เกี่ยวกับชุดข้อมูลนี้เช่น ปุ่มตัวอย่างก่อนพิมพ์,ปุ่มพิมพ์,ปุ่มปิดฟอร์ม ผมก็จะแอบใส่คำสั่งเข้าไปว่าให้ TextBox.Value = CostTruckingSupplier.Value เพื่อนำค่าไปเก็บใว้ในตารางทีหลังนะ หรือท่านจะใช้เป็น GotFocus,Before,AfterUpdate ก็ได้นะครับลองดู
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

7
ถ้าหากจะใช้การตัดวันที่ ที่ผ่านมาออกไปแสดงเฉพาะวันที่ปัจจุบันเป็นต้นไปยังไม่เคยทำครับ

แต่ถ้าจะใช้การกำหนดเงื่อนไขว่าถ้าเลือกวันที่ๆผ่านมาแล้วให้แจ้งเตือนและให้ระบุใหม่ก็ลองแบบนี้
สมมุติ textbox เลือกวันที่ ชื่อ txtDatePick

Private Sub txtDatePick_AfterUpdate()
If Me.txtDatePick < Date() Then
MsgBox "ไม่สามารถเลือกวันที่ย้อนหลังได้", vbCritical, "แจ้งเตือน"
Me.Text0 = Null
End If
End Sub

ถ้าผมตอบก่อนจะบอกว่า"กรุณาเลือกวันที่ปัจจุบันหรืออนาคต"นะนี่ :shout:
โค๊ด: [Select]
Private Sub Text20_AfterUpdate()
    If Me.Text20 < Date Then
         MsgBox "กรุณาเลือกวันที่ปัจจุบันหรืออนาคต"
    End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

8
ถ้าหากจะใช้การตัดวันที่ ที่ผ่านมาออกไปแสดงเฉพาะวันที่ปัจจุบันเป็นต้นไปยังไม่เคยทำครับ

แต่ถ้าจะใช้การกำหนดเงื่อนไขว่าถ้าเลือกวันที่ๆผ่านมาแล้วให้แจ้งเตือนและให้ระบุใหม่ก็ลองแบบนี้
สมมุติ textbox เลือกวันที่ ชื่อ txtDatePick

Private Sub txtDatePick_AfterUpdate()
If Me.txtDatePick < Date() Then
MsgBox "ไม่สามารถเลือกวันที่ย้อนหลังได้", vbCritical, "แจ้งเตือน"
Me.Text0 = Null
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

9
ให้อัพเดททุก Jobno
หรือเฉพาะ Jobno ที่ต้องการครับ

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

10
จากตัวอย่างลองเปิด form frmExpBooking ขึ้นมา
จะแสดง Jobno และรายละเอียดคร่าวๆ ของ Jobno นั้น

เวลาจะเข้าไประบุ truckNo ให้ดับเบิ้ลคลิกที่ เรคคอร์ดที่ต้องการ จะเข้าไปสู่หน้าของการระบุ truckno และรายละเอียดต่างๆครับ

ดูจากงานของท่านแล้ว ต้องศึกษาการทำ Normalization ก่อนเป็นอันดับแรกเลย
เพราะท่านรวบรวมข้อมูลต่างๆ ไว้ด้วยกันทั้งหมด ผมว่าไม่เวิคครับ

ลองดูจากตัวอย่างนี้ไปเป็นแนวทางในการปรับในส่วนอื่นๆก็ได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

11
อ้างถึง
ค้าอยากให้เพิ่ม PO Truck Number เป็นโมดูลใหม่เพื่อออกบิลให้ Supplier
วิธีในการออก PO Truck Number มีขั้นตอนการออกอย่างไร

อ้างถึง
ใครมีไอเดียที่สามารถใส่ เลขทะเบียนรถ ได้มากกว่า 1 คัน โดยไม่ต้องทำ Table แยกเป็น Truck 1/ Truck 2........ บ้างครับ
ไม่ต้องแยก Truck1 / Truck2
หรอกครับ
แต่ในตารางก็จะต้องมี
ตาราง Jobno ตารางนี้สร้างขึ้นมาไว้กำหนดรายละเอียดของ Job เช่น
JobNo
CustomerName
Tel
ฯลฯ

ส่วนตารางใหม่ที่น่าจะทำ
JobNo ไว้กำหนด RelationShip
TruckNumber ไว้กำหนดลำดับ Truck จะทำให้ Auto ก็ได้ หรือระบุเองก็ได้
TruckID  ฟิลล์นี้เก็บทะเบียนรถ

คุณสมบัติตารางเป็นแบบ Many
Jobno ต้องซ้ำได้

ข้อดีคือ ใน 1 Jobno มีรถกี่ค้นก็ได้เป็น 100 คันก็ได้ เพราะข้อมูลกำหนดเป็น Row ไม่ใช้ Column แบบที่คุณทำ

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

12
ห้อง MS Access / : สอบถามการเขียนครับ
« เมื่อ: 08 มี.ค. 64 , 15:28:44 »
โค๊ด: [Select]
IF IsNull(CmbG) Then
Me.CmbG.SetFocus
Msgbox "CMBG ว่าง!!!"
Else
IF Not IsNull(Me.JobNo) Then
Msgbox "มีการกำหนด JobNo ไว้แล้ว"
Exit Sub
else
Me.JobNo = AutotxtID
End if
End if

แก้เฉพาะปุ่ม CommandBotton นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

13
แบบนี้เปล่าครับ

https://www.thai-access.com/yeadram_view.php?topic_id=3444
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

14
ลองปรับ criteria เป็น
LIKE Nz([Forms]![ReportMA]![txtTruck],"*")


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

15
TruckNo คือเลขทะเบียนรถใช้ใหมครับ ?
Criteria ให้อยู่ในบรรทัดเดียวกันได้เลย
ไม่ต้องมี Like ครับ

จากตัวอย่างของคุณ เอา Between.... ขึ้นมาอีก 1 บรรทัดครับ แล้วดูผลใหม่

ถ้าไม่ได้ขอดูคำสั่ง Forms!...... ตรงส่วนของ Criteria หน่อย
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

16
วิธีทำ
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
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

17
ทำได้ 2 แบบด้วยกัน
แบบที่ 1
สมมุติตารางชื่อ Mytable
Field ไอดี ชื่อ ID
Field วันที่ ชื่อ Mydate

คิวรี่กำหนดดังนี้
SELECT Mytable.ID, IIf(Month([Mydate])=Month(Date()) And Year(Date())=Year([Mydate]),1,0) AS CheckMonth
FROM Mytable;
กำหนดชื่อคิวรี่ชื่อ QryCheckMonth
คิวรี่ด้านบน ท่านจะได้ข้อมูล ที่ถ้าหากปีเป็นปีปัจจุบัน และเดือนเป็นเดือนปัจจุบัน จะมีค่าเท่ากับ 1 ส่วนเดือนอื่นๆ ปีอื่นๆจะเท่ากับ 0

ต่อไปเขียนโค้ดไว้เรียกใช้เงื่อนไขในการเช็ค
Private Sub CheckAllowEdits()
Dim MonthCheck As String
MonthCheck = DLookup("CheckMonth", "QryCheckMonth", "ID =" & Me.ID & "")
If MonthCheck = 0 Then
Me.AllowEdits = False
Me.Undo
Else
Me.AllowEdits = True
End If
End Sub

ต่อไปเวลาจะนำโค้ดไปใช้ ก็ใส่ CheckAllowEdits ได้เลยครับ
อาจจะใช้ในเงื่อนไข หลังจากการค้นหาข้อมูลมาแสดงที่ฟอร์ม แล้วเช็คระบบการแก้ไข
หรือ ใช้ในปุ่มแก้ไขข้อมูลได้เลย เมื่อ User กดถ้าเ็นเดือนอื่นๆ มันจะ Undo ข้อมูลกลับทันทีและจะไม่สามารถกดพิมพ์เพิ่มอีกได้


แบบที่ 2 สามารถใช้กับ Formแบบ  Continuous Form ได้ดี
สมมุติตารางชื่อ Mytable
Field ไอดี ชื่อ ID
Field วันที่ ชื่อ Mydate

คิวรี่ ที่จะเป็น Record Source โค้ดจะเป็น
SELECT IIf(Month([Mydate])=Month(Date()) And Year(Date())=Year([Mydate]),1,0) AS CheckMonth, *
FROM Mytable;

เวลาเรานำ ข้อมูลลงมาบน Control ก็นำ Field CheckMonth ลงมาด้วย ตั้งชื่อ textbox ว่า CheckMonth เลย
โดยเราจะสามารถ กำหนดให้ซ่อนไว้ก็ได้ครับ ไม่ต้องแสดง
ต่อไปเราจะสร้างเงื่อนไขในการ ปิดการแก้ไขข้อมูลโดยใช้การจัดรูปแบบตามเงื่อนไข


กำหนดนิพจน์ตามภาพ




วิธีนี้เวลาแสดงในฟอร์มแบบ Continuous Form
ถ้าrecord ไหน CheckMonth = 0 จะถูก Enabled = false ทันที
คือกดแก้ไขไม่ได้เลย ถ้า CheckMonth = 1 ก็จะแก้ไขได้ปกติ

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

18
ไม่รู้ว่าการแสดงข้อมูลเป็นแบบไหนนะครับ แต่ถ้าทำวิธีง่ายๆ คือสร้างคิวรี่ไว้ตรวจสอบ เพื่อใช้กับเงื่อนไขว่า เป็นข้อมูลของเดือนที่แล้วหรือไม่
ถ้าเป็นข้อมูลของเดือนที่แล้วก็ กำหนดให้Formให้ ห้ามแก้ไข = true ได้ครับ

สร้างตารางไว้ตรวจสอบนี้ มีเก็บ ID ของข้อมูลหลัก และ วันเดือนปี ของข้อมูลหลัก เพื่อนำมาเช็คเดือนว่าเป็นเดือนปัจจุบันหรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

หน้า: [1] 2 3 4