แสดงกระทู้

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] 2 3 4 ... 9
1
โอว! วินโดว์

 :cool: :cool: :cool: :cool: XP ครับ รุ่นเก่าๆขี้เกียจเปลี่ยน โปรแกรมที่ใช้งานก็เสถียรดี ครับ ใช้กับ Homc และโปรแกรมเก่าๆซะส่วนใหญ่
อีกอย่าง เห็น Windows OS แล้ว ถ้าเห็นสเปคเครื่องแล้ว จะ โอวววว!!! กว่านี้  :shout: :shout:
โพสต์นี้ได้รับคำขอบคุณจาก: OddyWriter

2
มีในโทรศัพย์ ครับ จะแสดงตอนกดจะตอบคำถาม และด้านล่างของหน้าเว็บ Chromeโทรศัพย์ ส่วนในคอม ไม่แสดง
โพสต์นี้ได้รับคำขอบคุณจาก: PookPuy

3
โค้ดง่ายๆ ใช้ Event Form_Current() ก็ได้ครับเช่น

Private Sub Form_Current()
Me.Text15 = Me.CurrentRecord
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: pattaya48150

4
รบกวนสอบถามการแปลงวันที่ใดๆก็ตามให้เป็นวันแรกของเดือนครับ เท่าที่หาเจอแต่ของ Excel จะได้สูตรประมาณนี้
=DATE(YEAR(A1),MONTH(A1),1)
ก็จะได้ว่า 12-2-2020 กลายเป็น 1-2-2020 คือเป็นวันแรกของเดือน
ต้องการผลลัพทธ์แบบนี้กับ access ใครทราบวิธีการรบกวนชี้แนะครับ

สมมุติฟิลล์วันที่ชื่อ Dates นะครับ

FirstDate: DateSerial(Year([Dates]),Month([Dates]),1)
โพสต์นี้ได้รับคำขอบคุณจาก: prajak, พิชญะ ชัยชนะ

5
อ้างถึง
1.อยากให้แสดง รหัสอาหาร,ชื่ออาหาร ทีไม่มีการสั่งซื้อ
ที่คิวรี่กดมุมมอง Sql เอาโค้ดนี้ไปวาง
โค๊ด: [Select]
SELECT รายการอาหาร.รหัสอาหาร, รายการอาหาร.ชื่อ
FROM รายการอาหาร
WHERE (((รายการอาหาร.รหัสอาหาร) Not In (select [รหัสอาหาร] from [การสั่งอาหาร])));



อ้างถึง
2.อยากให้แสดง รหัสอาหาร,ชื่ออาหาร ที่มีการสั่งซื้อมากที่สุด
รวมจำนวนการสั่งเรียงจากมากไปหาน้อย โค้ดตามนี้เลยครับ
โค๊ด: [Select]
SELECT การสั่งอาหาร.รหัสอาหาร, รายการอาหาร.ชื่อ, Sum(การสั่งอาหาร.จำนวนสั่ง) AS จำนวนการสั่ง
FROM รายการอาหาร RIGHT JOIN การสั่งอาหาร ON รายการอาหาร.รหัสอาหาร = การสั่งอาหาร.รหัสอาหาร
GROUP BY การสั่งอาหาร.รหัสอาหาร, รายการอาหาร.ชื่อ
ORDER BY Sum(การสั่งอาหาร.จำนวนสั่ง) DESC;

ถ้าอยากแสดงจำนวนการสั่งมากที่สุดอันดับที่ 1 ก็ใส่แบบนี้
โค๊ด: [Select]
SELECT TOP 1 การสั่งอาหาร.รหัสอาหาร, รายการอาหาร.ชื่อ, Sum(การสั่งอาหาร.จำนวนสั่ง) AS จำนวนการสั่ง
FROM รายการอาหาร RIGHT JOIN การสั่งอาหาร ON รายการอาหาร.รหัสอาหาร = การสั่งอาหาร.รหัสอาหาร
GROUP BY การสั่งอาหาร.รหัสอาหาร, รายการอาหาร.ชื่อ
ORDER BY Sum(การสั่งอาหาร.จำนวนสั่ง) DESC;
โพสต์นี้ได้รับคำขอบคุณจาก: pattaya48150

6
ลองปรับให้แล้วครับ ให้ดูโค้ดล่าสุดที่ข้อความนะครับ ผมใช้การ ซ่อนสถานนะที่เป็น Label ไว้ด้วย

ถ้าอยากจะให้โค้ดทำงานตอนกดบันทึก แทนสถานะ หลังการปรับปรุง ก็ใส่ว่า

โค๊ด: [Select]
Private Sub cmdSave_Click()
    Dim strStatus as string
    Me.Dirty = False
    DoCmd.SetWarnings False
    DoCmd.RunSQL "UPDATE qryWork SET qryWork.TerminatedDate = [txtTerminatedDate] WHERE (((qryWork.ContractorID)=[txtContractorID]));", dbFailOnError
    strStatus = Nz(DLast("[ContractorStatus]", "[qryWork]", "[NationalID]=[Forms]![frmEditWork]![txtNationalID]"))
    Me.[txtContractorStatus2] = strStatus
    If strStatus = "ยังปฏิบัติงานอยู่" Then
    [Forms]![frmEditWork]!Label41.Visible = True
    Else
    [Forms]![frmEditWork]!Label41.Visible = False
    End If
    DoCmd.SetWarnings True
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Tatchawin

7
ลองดูตัวอย่างนี้ครับ
sub form ชื่อ frmsub

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

8
ท่านมาถูกทางแล้ว แต่ผิดนิดเดียวตรงอ้างชื่อฟิลล์นะครับ

หรือจะใช้ Expression แบบเดิมก็ได้เหมือนกัน แก้ตรง อ้างถึงฟิลล์ใหม่ก็ใช้ได้เลย
น่าจะแบบนี้ DLast("ContractorStatus", "qryWork", "[NationalID]=[Forms]![frmEditWork]![txtNationalID]")

หรือ Event Form Current

Private Sub Form_Current()
Me.txtContractorStatus = DLast("ContractorStatus", "qryWork", "[NationalID]=[Forms]![frmEditWork]![txtNationalID]")
End Sub

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

9
ลองดูจาก กระทู้นี้ครับ
https://www.thai-access.com/index.php?topic=1028.msg4550

วิธีการคือการกำหนดให้แสดงข้อมูลทั้งหมดของอีกตาราง ใช้การ Join Table ซึ่งในกระทู้นี้มีตัวอย่างคิวรี่ ครับ
ดูจากข้อมูลของคุณแล้ว ตารางที่นำมา JOin table กันน่าจะจากตาราง Employee กับ ตาราง OT Detail ครับ

ถ้าทำไม่ได้ ก็ส่งตัวอย่างไฟล์มาผมจะสร้างให้
โพสต์นี้ได้รับคำขอบคุณจาก: morzor61

10
ห้อง MS Access / : การรันเลขสัญญา
« เมื่อ: 05 ม.ค. 63 , 15:03:07 »
เพิ่มเติมนิดหน่อยจากอันเดิมครับ คือเราจะสร้าง Field YearStamp ไว้ในตารางด้วย โดยเราจะกำหนด Year(Now()) เพื่อเก็บปีไว้ทุกครั้ง ถ้าโปรแกรมตรวจเจอว่า ข้อมูล Field YearStamp นั้น เป็นปีใหม่และยังไม่มีเลขที่รันลำดับมาก่อน (มาจาก QryMaxInt) ก็จะเริ่มนับใหม่ทันที

โดยผมจะเพิ่ม textbox ชื่อ txtYears ไว้เก็บปีปัจจุบันไว้อ้างอิงกับข้อมูลเดิมที่มีอยู่ใน Query MaxInt
โค้ดประมาณนี้

โค๊ด: [Select]
Private Sub cmdRun_Click()
Dim intMax As Integer

    If Not IsNull(Me.RunC) Then
    Me.txtYears = Year(Now())
    Me.Dirty = False
    intMax = Nz(DLookup("MaxInt", "QryMaxInt", "RunC = " & Me.RunC & " And  Yearstamp = '" & Me.txtYears & "'"))
    intMax = intMax + 1
    Me.runrun = "C-" & Year(Date) & "-" & RunC & Right("0000" & intMax, 4)
    End If   
End Sub

ส่วนในคิวรี่ชื่อ QryMax กับ QryMaxInt ก็นำฟิลล์ YearStamp ใส่ลงไปด้วยเพื่อใช้ในการแยกข้อมูลระหว่างปีเก่าและปีใหม่ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Tawat

11
ห้อง MS Access / : Queries
« เมื่อ: 03 ม.ค. 63 , 14:22:32 »
ข้อมูล ของคุณนั้นจะต้อง นำ Place มาเชื่อมความสัมพันธ์ด้วย นะครับ
โดย Lot - Boxes (In) เพิ่มฟิลล์ Place ด้วย คือทุกคิวรี่ที่จะเชื่อมกันต้องมี Place ด้วย ข้อมูลจะได้เป็นกลุ่มที่ถูกต้อง

ตัวอย่างผมนำ  Lot - Boxes (In) กับ Lot - Boxes (Out) มาเชื่อมกัน


ลองไปปรับตรงส่วนนี้ดูครับ


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

12
อ้างถึง
มาวันนี้ผมแก้ไข Table ใหม่ โดยแยกข้อมูล company ออกจาก User

Table ใหม่ ID_CompanyUser น่าจะต้องมี Primary Key เพราะมันน่าจะไม่ซ้ำกัน

ลองดูแบบนี้ก่อนถ้าไม่ได้เดี่ยวลองวิธีใหม่
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

13
ผมเคยโพสในกระทู้นี้ครับ
https://www.thai-access.com/index.php?topic=425.msg1866#msg1866
โพสต์นี้ได้รับคำขอบคุณจาก: Psong UN

14
ห้อง MS Access / : การรันเลขสัญญา
« เมื่อ: 23 ธ.ค. 62 , 10:48:28 »
ลองดูไม่รู้ต้องการแบบนี้ไหม

ขั้นตอนที่ 1 สร้างคิวรี่ ตั้งชื่อว่า QryMax
โค้ด
โค๊ด: [Select]
SELECT Table1.RunC, Nz(Max(Right([runrun],4)),0) AS [Max]
FROM Table1
GROUP BY Table1.RunC;

ขั้นตอนที่ 2 สร้างคิวรี่ ตั้งชื่อว่า QryMaxInt
โค้ด
โค๊ด: [Select]
SELECT qryMax.RunC, Val([Max]) AS MaxInt
FROM qryMax;

ที่ฟอร์ม ปุ่ม Run ใส่โค้ด
โค๊ด: [Select]
Private Sub cmdRun_Click()
Dim intMax As Integer
    If Not IsNull(Me.RunC) Then
    Me.Dirty = False
    intMax = Nz(DLookup("MaxInt", "QryMaxInt", "RunC = " & Me.RunC & ""))
    intMax = intMax + 1
    Me.runrun = "C-" & Year(Date) & "-" & RunC & Right("0000" & intMax, 4)
    End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Tawat, thanapol.w

15
gotocontrol ต้องระบุชื่อฟิลล์ ที่เชื่อมอยู่นะครับ Error นั้นแจ้งว่าคุณไประบุชื่อ คอนโทรล ไม่ใช่ชื่อฟิลล์ที่เชื่อมไว้ หรือลองตั้งชื่อ ฟิลล์และ ชื่คอนโทรลเหมือนกันดูครับ

ส่วน โค้ดจะใช้  Me.Txtsearch6.Setfocus ได้เลย

 ถ้าจะเขียนเป็นโค้ดทั้งหมด ก็น่าจะเป็น

Private Sub PrintBotton_Click()
DoCmd.OpenReport "P_ScanOrder", acViewNormal, , "RuningID Like '*" & [forms]![Frm_PS_SCANERORDER]!TxtSearch & "*'"
Docmd.GoToRecord,,acNext
Me.txtSearch6.Setfocus
End Sub
ลองดูครับว่าได้หรือไม่ถ้าติด ERROR ช่วยส่งรูป Error นั้นมาดูนะครับ


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

16
Private Sub Command2_Click()
  Dim rst As ADODB.Recordset
  Set rst = New ADODB.Recordset
    rst.Open "Table1", CurrentProject.Connection, adOpenStatic, adLockOptimistic
         rst.Supports (adUpdate)
         rst.field(0) = txt1.value
         rst.field(1) = txt2.value
         rst.Update     
         rst.close
         rst = nothing

End Sub

ลองดูครับ ว่าได้ไหม
โพสต์นี้ได้รับคำขอบคุณจาก: akekorn

หน้า: [1] 2 3 4 ... 9