แสดงกระทู้

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 ... 34 35 36 [37] 38 39 40 ... 46
649
ดูเหมือนทั้งคู่จะเป็นซัพฟอร์ม โดยมี ฟอร์มหลักอีกที

จากรูปภาพ ผมว่าถ้าจะนำ 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

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

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

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

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

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

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


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



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

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

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

655
ห้อง 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

656
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 นั้นมาดูนะครับ



657
อ้างถึง
อาจารย์ครับ ขึ้นError ตรง rst.update ครับผม

ฟ้อง error ว่าอะไรหรอครับ

658
ขอทราบ Error ที่แสดงหน่อยครับ ขึ้นว่าอะไร

659
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

ลองดูครับ ว่าได้ไหม

660
ข้อมูลจะ แบ่งหน้าให้เมื่อคุณกดแสดงมุมมองเหมือนพิมพ์ นะครับ

661
ข้อมูล แถวของคอมโบบ๊อกของคุณ มี 2 คอลัมน์ใช่ไหม
ไปกำหนด ตรงนี้ จาก 2 เป็น 1 ได้เลยครับ



662
ผมมีตัวอย่างให้ดูคือ
1.การกำหนด Head Group ของรหัสใบสั่งซื้อ กำหนดส่วนหัวของกลุ่ม ไว้ตรงส่วนนี้ ส่วนรายละเอียดต่างๆ ไว้ส่วน detail



2.Head Group ของรหัสใบสั่งซื้อ กำหนดส่วนหัวของกลุ่ม ต้องกำหนด

663
คืออยากให้ 1 หน้ารายงาน แสดงแค่ 1 รหัสใบสั่งซื้อ ใช่หรือไม่

664
อ้างถึง
ผมจะปริ้นท์รายงานแค่หน้าเรคคอร์ดเดียวต้องทำไง

หน้า เรคคอร์ดเดียวคืออะไรครับผมยังงงๆ คำถามอยู่
อธิบายข้อมูลที่แสดงทั้งหมดนั้นและ ส่วนที่อยากให้แสดงหน้าเดียวหน่อยครับ
ว่าต้องการแบบไหน เพราะมันทำได้หลายอย่าง

665
น่าจะได้นะครับ มันจะไปเช็คค่า ContractorID จากคิวรี่ นั้นและ อัพเดท Field TerminatedDate ตาม  ContractorID ครับ
แต่ TerminatedDate และ WorkID ต้องเชื่อมกับตารางไรตารางนึงด้วยนะครับ

โค๊ด: [Select]
Private Sub TerminatedDate_AfterUpdate()
Me.Dirty = False
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE qryWork SET qryWork.TerminatedDate = [forms]![frmEditWork]![TerminatedDate] WHERE (((qryWork.ContractorID)=[forms]![frmEditWork]![ContractorID]));", dbFailOnError
DoCmd.SetWarnings True

End Sub

666
อ้างถึง
ความต้องการของผมคือ หากกรอก TerminatedDate ที่ Record ใด Record หนึ่ง ก็ให้ค่า TerminatedDate ที่กรอกนั้น ถูก Insert ลงไปยัง Record อื่นๆที่มี ContractorID เดียวกันให้หมด ผมควรจะเขียนโค้ดอย่างไรดีครับ

แก้ไขใหม่
น่าจะเป็น

โค๊ด: [Select]
Private Sub TerminatedDate_AfterUpdate()
Me.Dirty = False
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tblWork SET tblWork.TerminatedDate = [forms]![frmEditWork]![TerminatedDate] WHERE (((tblWork.ContractorID)=[forms]![frmEditWork]![ContractorID]));", dbFailOnError
DoCmd.SetWarnings True
End Sub

tblWork คือตารางที่เราจะอัพเดท By ContractorID ครับ
วิธีนี้ ถ้า ContractorID เดียวกัน ก็จะอัพเดทวันที่ให้ทั้งหมดทุกแถวครับ ไม่สนว่าจะมี WorkID กี่ตัวครับ

หน้า: 1 ... 34 35 36 [37] 38 39 40 ... 46