แสดงกระทู้

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

หน้า: [1]
1
อย่างที่บอกไงครับ ไม่ใช่ Before Update จะทำได้หมด

คราวนี้ก็ต้องมาดูว่าคุณจะ Update ตอนไหน ก็ไปดักหน้าเก็บข้อมูลเข้าตารางก่อน ซึ่งผมก็บอกไม่ได้ว่าต้องทำอย่างไร เพราะต้องดู Process Flow แล้วหาจุดดักเก็บข้อมูล เช่น

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

สรุปคือคุณต้อง Tricker Point ให้เจอก่อนครับ ถ้าหาไม่เจอก็สร้างมันขึ้นมา
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

2
ทำได้ครับ แต่เงื่อนไขต้องชัดเจนก่อนเช่น
1. เก็บทั้งหมด หรือเก็บแค่บางฟิลด์
2. เก็บไว้นานแค่ไหน เก็บไปเรื่อยๆ หรือเก็บไว้เผื่อทำ Undo

หลักการง่ายๆ คือ เก็บไว้ในตัวแปร หรือเก็บไว้ในตาราง (พิจารณาจากเงื่อนไขทั้ง 2 ข้อ) โดยใช้ Event ที่เหมาะกับขั้นตอนการทำงาน (บางกรณี Before Update ใช้ไม่ได้)
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

3
หลังอัพเดทข้อมูลฟิวล์ Barcode(กล่องท่านชื่อ Text6) สั่งให้นำ6ตัวท้ายมาใส่กล่อง,ฟิวล์ IDProduct
โค๊ด: [Select]
Private Sub Text6_AfterUpdate()
    Me.IDProduct = Right(Me.Text6, 6)
End Sub

หรือเมื่อใส่ IDProduct แล้วให้ Barcode = A$+IDProduct
โค๊ด: [Select]
Private Sub IDProduct_AfterUpdate()
    Me.Text6 = "A$" & Me.IDProduct
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

4
สมมุติตาราง A ชื่อ Mytable
1.สร้างคิวรี่ใส่ SQL เข้าไป ตั้งชื่อ Q1
SELECT Idnumber, LV  FROM MyTable GROUP BY Idnumber, LV HAVING ((Not (LV) Is Null));

2.สร้างปุ่มขึ้นมา 1 ปุ่ม
ใส่โค้ดนี้เข้าไป
Private Sub Command0_Click()
Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Mytable", dbOpenDynaset)
   
    rst.MoveFirst
    Do Until rst.EOF
    If IsNull(rst!LV) Or rst!LV = "" Then
    rst.Edit
    rst!LV = DLookup("LV", "Q1", "Idnumber =" & rst!Idnumber & "")
    rst.Update
    End If
       rst.MoveNext
    Loop
   
    rst.Close: Set rst = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

5
คำตอบ
โค๊ด: [Select]
Private Sub Select_AfterUpdate()
    CurrentDb.Execute "UPDATE RssmNew_filter SET complete = " & Me.Select & " WHERE เลขที่ใบเบิก = '" & Me.IDNumber & "'", dbFailOnError
    Me.Recalc
End Sub

ขอบคุณวิธีทำจากโพสต์ของ อ.สันติสุข ครับ :love:
: Update ข้อมูล หลาย Record พร้อมกัน
> ขอสอบถามเรื่องการอัพเดทข้อมูลครับ


เลขที่ใบเบิก ใน VBA ก็อบมาใส่เว็บ = àÅ¢·ÕèãºàºÔ¡ ก็อบจากเว็บกลับไปวางใน VBA โดยไม่แก้ก่อนจะเป็น ????????????  :ouch:
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

6
ไปตั้งค่า Trust Center ครับ
https://www.thai-access.com/index.php?topic=375.0
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

7
ลองดูตัวอย่างนี้นะครับ

สร้าง Module ใส่โค๊ด
โค๊ด: [Select]
Public Function ConcatRelated(strField As String, _
    strTable As String, _
    Optional strWhere As String, _
    Optional strOrderBy As String, _
    Optional strSeparator = ", ") As Variant
On Error GoTo Err_Handler
 
    Dim rs As DAO.Recordset
    Dim rsMV As DAO.Recordset
    Dim strSql As String
    Dim strOut As String
    Dim lngLen As Long
    Dim bIsMultiValue As Boolean
   
   
    ConcatRelated = Null
   
 
    strSql = "SELECT " & strField & " FROM " & strTable
    If strWhere <> vbNullString Then
        strSql = strSql & " WHERE " & strWhere
    End If
    If strOrderBy <> vbNullString Then
        strSql = strSql & " ORDER BY " & strOrderBy
    End If
    Set rs = DBEngine(0)(0).OpenRecordset(strSql, dbOpenDynaset)
   
    bIsMultiValue = (rs(0).Type > 100)
   

    Do While Not rs.EOF
        If bIsMultiValue Then
         
            Set rsMV = rs(0).Value
            Do While Not rsMV.EOF
                If Not IsNull(rsMV(0)) Then
                    strOut = strOut & rsMV(0) & strSeparator
                End If
                rsMV.MoveNext
            Loop
            Set rsMV = Nothing
        ElseIf Not IsNull(rs(0)) Then
            strOut = strOut & rs(0) & strSeparator
        End If
        rs.MoveNext
    Loop
    rs.Close
   
 
    lngLen = Len(strOut) - Len(strSeparator)
    If lngLen > 0 Then
        ConcatRelated = Left(strOut, lngLen)
    End If

Exit_Handler:

    Set rsMV = Nothing
    Set rs = Nothing
    Exit Function

Err_Handler:
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "ConcatRelated()"
    Resume Exit_Handler
End Function


สร้างคิวรี่แรกเพื่อสร้าง เลขที่เอกสาร(Qty)  ตั้งชื่อ Q1
โค๊ด: [Select]
SELECT t1.IDProduct, t1.Qty, [เลขที่เอกสาร] & "(" & [qty] & ")" AS เลขที่
FROM t1;

สร้างคิวรี่ที่สอง ใส่โค๊ดเพื่อแสดงผลโดยใช้ฟังชั้นจากโค๊ดด้านบน
โค๊ด: [Select]
SELECT Q1.IDProduct, Sum(Q1.Qty) AS ผลรวม, ConcatRelated("เลขที่","Q1","IDProduct = '" & [IDProduct] & "'") AS เลขที่เอกสาร
FROM Q1
GROUP BY Q1.IDProduct, ConcatRelated("เลขที่","Q1","IDProduct = '" & [IDProduct] & "'");

เครดิต allenbrowne จากการนำโค๊ดมาปรับใช้กับเคสนี้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

8
ดูเหมือนเป็นการ Running Total นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

9
ลองทำ Query และใช้ DateAdd ก็จะได้วันที่ถัดไปครับ โดย DateAdd สามารถระบุได้ต้องการเป็น วัน เดือน ปี ครับ



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

10
ลองทำ Query และใช้ DateAdd ก็จะได้วันที่ถัดไปครับ โดย DateAdd สามารถระบุได้ต้องการเป็น วัน เดือน ปี ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

11
ผมต้องการทำการแจ้งเตือนเมื่อครบรอบปีอะคับ แบบต้องไปตรวจเช็คอุปกรณ์ วันที่ เท่านี้ พอมาถึงอีกปีนึงก็แจ้งอะคับว่าต้องไปตรวจได้แล้ว
เช่น ผมตั้งวันตรวจเช็คอุปกรณ์ A วันที่ 4 มค 60 ในตาราง ก็คือจะมีการแจ้งเตือนทุกปีวันที่ 4 มค อะคับ
แจ้งเตือนเป็นรูปแบบไหนได้บ้างครับ  จะทำยังไงได้บ้างครับ รบกวนช่วยผมหน่อยครับ

รบกวนอธิบายอย่างละเอียดนิดนึงครับ พอดียังใช้โปรแกรมได้ไม่กี่วันยังใช้ไม่ค่อยเป็นครับ
ขอบคุณล่วงหน้าครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

12
-.บุคคลทั่วไปสามารถอ่าน,ค้นหา,โหลดเอกสารไฟล์แนบได้ทุกกระทู้
-.สมาชิกถึงจะสามารถตั้งกระทู้,โพสต์ถาม-ตอบ หรือกดขอบคุณได้
สมัครสมาชิกผ่านลิ้งนี้ โดยสามารถเชื่อมผ่านไอดี Google/Gmail,Facebook,instagram,twitter ได้ครับ

1.วิธีการเริ่มหัวข้อหรือตั้งกระทู้ใหม่
(บอร์ดนี้มีทั้งฉบับ อ.Yeadram,อ.สุภาพ และที่ใช้อยู่ในปัจจุบันนี้ *พยายามค้นหาก่อนโพสต์ถามจะดีมากครับ :in love:)

1.1 เข้าไปยังหน้าบอร์ดที่เกี่ยวข้องกับเนื้อหาที่จะโพสต์
ห้อง MS Access     "เรื่องอื่นๆ"เกี่ยวกับ Access     ห้องสนทนาทั่วไป

1.2 กดที่ปุ่ม @ เริ่มหัวข้อใหม่

1.3 ตั้งชื่อ หัวข้อ: ใส่คำถามหรือเนื้อหาหลักที่ต้องการลงในกล่องข้อความ

1.4 ตรวจสอบข้อความที่ต้องการโพสต์หรือกดดูตัวอย่างได้ที่ปุ่ม แสดงตัวอย่าง

1.5 เมื่อเรียบร้อยตรงตามที่ต้องการแล้วก็กดที่  ตั้งกระทู้ เป็นอันเสร็จสิ้นการตั้งกระทู้โพสต์

ปล.ปุ่มตั้งกระทู้,แสดงตัวอย่างอยู่บริเวณขวาล่างของกล่องข้อความ
โพสต์นี้ได้รับคำขอบคุณจาก: nawahovvp

13
ประกาศสำคัญ & ข่าวสารต่างๆของบอร์ดเรียนรู้ Access สำหรับคนไทยแห่งนี้ครับ
:ninja:• กฎกติกาบอร์ดเรียนรู้ Access สำหรับคนไทย •
 :yuush:• โครงการปรับเปลี่ยนเว็บบอร์ดเก่าให้เป็น PHP •

การใช้งานเว็บบอร์ดเบื้องต้น  :nice day:
-> วิธีการเริ่มหัวข้อหรือตั้งกระทู้ใหม่
-> วิธีโพสต์ตอบ,โพสต์ขอบคุณหรือแสดงความคิดเห็นในกระทู้
-> ข้อควรระวังในการพิมพ์ข้อความ,โค้ดหรือสคริปต่างๆ
-> วิธีการอัพรูป / วิธีการแนบไฟล์
-> แนวทางวิธีการพิมพ์หรือโพสต์ลิ้งเว็บไซด์ต่างๆ :meaw:
*ทุกไฟล์แนบเว็บบอร์ดขอไม่รับผิดชอบใดๆเลยนะครับ (ไวรัส,ลิขสิทธิ์,ฯลฯ เป็นต้น)


-> แจ้งปัญหาหรือพูดคุยเกี่ยวกับเว็บบอร์ดแห่งนี้ โพสต์ที่นี้ครับ <-

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

หน้า: [1]