แสดงกระทู้

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

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

FirstDate: DateSerial(Year([Dates]),Month([Dates]),1)

2
ห้อง MS Access / : ส่งเมล์อัตโนมัติผ่าน Access to Outlook
« เมื่อ: เมื่อวานนี้ เวลา 13:07:57 »
แนวทางนะครับ

ใช้การสร้าง ฟอร์มแบบ Continuous Forms แล้วใช้ recordsetclone

แล้วใช้ การสร้าง Do while >  loop ให้ส่งได้ทุก Record ครับ
ให้ Loop จนครบทุก Record


3
อ้างถึง
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;

4
สร้าง backup ฐานจริงไว้ แล้วรีโมทไปแก้ให้ดีกว่าครับ ผมก็ไม่รู้ว่าฟอร์มจริงตั้งค่าไว้แบบไหน อธิบายยาก
หรือ รีโมท anydesk ไปดูจะสะดวกไหม ผมทักไลน์ไปหาท่านแล้วครับ

5
ลองปรับให้แล้วครับ ให้ดูโค้ดล่าสุดที่ข้อความนะครับ ผมใช้การ ซ่อนสถานนะที่เป็น 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

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

หรือส่งไฟล์มาทางกล่องข้อความครับเดียวผมดูให้

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

หรือจะใช้ 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 หรือเปล่า

8
ไม่รู้แบบนี้หรือเปล่า คลิกแล้ว ไปแสดงที่อีกซัพฟอร์ม

9
เหมือนฟอร์มเก็บบิลที่ชำระ จะไม่ได้เปิดให้ให้เพิ่มข้อมูลใหม่ นะครับ
ถ้าเพิ่มเรคคอร์ดใหม่ไม่ได้ ใช้แค่เรคคอร์ดเดียวที่ฟอร์ม 2 ให้ลบโค้ด Docmd.gotorecord,,acnewrec ออกไป
ข้อมูลก็จะเพิ่มแค่เรคคอร์ดเดียวเมื่อกด ฟอร์ม1 เข้ามา


หรือถ้าฟอร์ม 2 นั้นจะปิดการเพิ่ม Record ใหม่ บนฟอร์ม
จะใช้วิธีอื่นๆก็ได้เช่น rs!Addnew หรือจะใช้การ AppendQeury ไปที่ F_receivable_total แล้วสั่ง Requery บนฟอร์ม2 เพื่อแสดง ID นั้นขึ้นมา ก็ได้เหมือนกันครับ

10
textbox ของ field voucher_s_id ของ frm01 ครับ ตั้งชื่อไว้ว่า voucher_s_id เลยก็ได้คับ

11
ดูเหมือนทั้งคู่จะเป็นซัพฟอร์ม โดยมี ฟอร์มหลักอีกที

จากรูปภาพ ผมว่าถ้าจะนำ voucher_s_id จาก Subform หนึ่ง มาวาง ในอีก Subform ใช้การสร้างตัวแปรเก็บค่าไว้แล้วเอาไปแสดงอีกทีเช่น
ผมกำหนด Form รายการบิลที่ค้างชำระ ชื่อ Frm01
             Form รายการบิลที่ต้องการชำระ ชื่อ Frm02
             Formหลัก ชื่อ Frmmain
 ใช้ Event Double Click

Private Sub voucher_s_id_DblClick(Cancel As Integer)
Dim strID As String
If MsgBox("ต้องการตัดบินใช่หรือไม่", vbYesNo, "สอบถาม") = vbYes Then
Me.Dirty = False
strID = Me.voucher_s_id
Forms!frmmain.Form.frm02.SetFocus
DoCmd.GoToRecord record:=acNewRec
Forms!frmmain.Form.frm02!voucher_s_id.SetFocus
Forms!frmmain.Form.frm02!voucher_s_id = strID
End If
End Sub

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

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

ถ้าทำไม่ได้ ก็ส่งตัวอย่างไฟล์มาผมจะสร้างให้

13
ห้อง 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 ใส่ลงไปด้วยเพื่อใช้ในการแยกข้อมูลระหว่างปีเก่าและปีใหม่ครับ

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

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


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



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

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

ลองดูแบบนี้ก่อนถ้าไม่ได้เดี่ยวลองวิธีใหม่

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