แสดงกระทู้

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

หน้า: 1 2 [3]
37
Docmd.RunSQL "DELETE POD.* FROM POD WHERE POD.PONumber = '" & Me.PONumber & "'"
โพสต์นี้ได้รับคำขอบคุณจาก: prajak, chatchai

38
ห้อง MS Access / > ลบข้อมูลซ้ำ
« เมื่อ: 15 มี.ค. 61 , 21:51:05 »
DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]=" & MySearch!MemberCode & " AND tblName.[Date]=" & CDbl(MySearch!MaxOfDate)

แก้ชือตารางให้ตรงด้วยนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

39
ห้อง MS Access / > การแยกข้อมูลภายในแถว
« เมื่อ: 15 มี.ค. 61 , 09:47:34 »
ลองดูตัวอย่างในฟอร์ม DemoForm ครับ ผมเรียกใช้งาน Query และ Module อยู่ในนั้น
โพสต์นี้ได้รับคำขอบคุณจาก: Earth

40
ห้อง MS Access / > ลบข้อมูลซ้ำ
« เมื่อ: 14 มี.ค. 61 , 20:09:12 »
โค๊ด: [Select]
Private Sub Delete_Last()
Dim MySearch As Recordset

Set MySearch = CurrentDb.OpenRecordset("SELECT tblName.MemberCode, Count(*) AS CountRec, Max(tblName.Date) AS MaxOfDate FROM tblName GROUP BY tblName.MemberCode HAVING (Count(*))>1;")
If MySearch.RecordCount > 0 Then
    MySearch.MoveFirst
    Do While Not MySearch.EOF
        DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]='" & MySearch!MemberCode & "' AND [Date]=" & CDbl(MySearch!MaxOfDate)
        MySearch.MoveNext
    Loop
End If

MySearch.Close
Set MySearch = Nothing
   
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

41
ห้อง MS Access / > การแยกข้อมูลภายในแถว
« เมื่อ: 14 มี.ค. 61 , 17:40:43 »
ลองดูตามตัวอย่างในไฟล์นะครับ

- มีการใช้ฟังก์ชั่นใน Module InvoiceConv ด้วยนะครับ
- เรียกใช้งานจากฟอร์ม DemoForm จะได้ผลลัพธ์เป็นตาราง ResultTable
โพสต์นี้ได้รับคำขอบคุณจาก: Earth

42
ห้อง MS Access / > การแยกข้อมูลภายในแถว
« เมื่อ: 14 มี.ค. 61 , 14:54:05 »
Import Excel เข้ามาก่อน เอาไปไว้ที่ตารางชั่วคราวที่เรากำหนด แล้วก็ Query ข้อมูลให้เป็นอย่างที่เราต้องการครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Earth

43
ตรง On Page event ของ report ให้ใช้คำสั่ง Line ในการตีเส้นครับ Line(x1,y1)-(x2,y2)

Private Sub Report_Page()
Me.ScaleMode = 7         'กำหนดให้หน่วยเป็น cm.
Me.Line (0.1, 7.4)-(0.1, 19.6)     'ลากเส้นจากตำแหน่งพิกัด 0.1 cm, 7.4 cm ไปที่พิกัด 0.1 cm, 19.6 cm
Me.Line (1.2, 7.4)-(1.2, 19.6)
Me.Line (3.1, 7.4)-(3.1, 19.6)
Me.Line (10.5, 7.4)-(10.5, 19.6)
Me.Line (12.2, 7.4)-(12.2, 19.6)
Me.Line (14.2, 7.4)-(14.2, 19.6)
Me.Line (16.2, 7.4)-(16.2, 19.6)
Me.Line (18.67, 7.4)-(18.67, 19.6)
Me.Line (0.1, 7.4)-(18.67, 7.4)
Me.Line (0.1, 8.6)-(18.67, 8.6)
Me.Line (0.1, 19.6)-(18.67, 19.6)

End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, I love movies

44
Private Function FilterOut()
Dim stCriteria As String

stCriteria = IIf(IsNull(Me.[Style No.]), "", "[Style No.] = '" & Me.[Style No.] & "' AND ") & _
                 IIf(IsNull(Me.Buyer), "", "[Buyer] = '" & Me.Buyer & "' AND ") & _
                 IIf(IsNull(Me.[OD#]), "", "[OD#] = '" & Me.[OD#] & "' AND ") & _
                 IIf(IsNull(Me.Currency), "", "[Currency] = '" & Me.[Currency] & "' AND ") & True

Me.SubFormName.Form.Filter = stCriteria
Me.SubFormName.Form.FilterOn = True

End Function

ใน Combobox ทุกอันในช่อง AfterUpdate ให้ใส่ = FilterOut() หรือจะ call FilterOut ใน Sub AfterUpdate event ก็ได้

ปล. พวกชื่อฟิลด์หรือคอนโทรลต่างๆ ให้ตรวจสอบกับชื่อที่ใช้จริงก่อนนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

45
ตามที่คุณ PookPuy ตอบมาเลยครับ กรณีที่มี combobox แล้วตัว combobox มีการ populate data มาจากตารางที่ต้องการอยู่แล้ว แล้วจะกำหนดให้ฟิลด์อื่นๆมีค่าตาม data ใน combobox ก็แค่เพียงกำหนดให้ฟิลด์นั้นมีค่าเท่ากับ column(0), column(1), column(2)...โดยที่ไม่ได้ต้องไป dlookup ข้อมูลในตารางอีก แต่ผมแนะนำผูกไว้กับ AfterUpdate event

Private Sub StyleNo_AfterUpdate()
       OD#.Value = StyleNo.Column(1)
       Customers.Value = StyleNo.Column(2)
       QtyOrder.Value = StyleNo.Column(3)
End Sub

ปล. ทำไมถึงไม่ bound Table หรือ Query ไว้กับฟอร์มเลย จะได้ให้ Access มันใส่ค่าให้อัตโนมัติ (หรือต้องการเขียนเผื่อสำหรับ upsize ไป MS SQL)
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

46
คำสั่งเดียวกันกับวงกลมที่ว่าคือ

DoCmd.RunCommand acCmdSelectRecord

ลองเอาไปใส่ก่อนที่จะ save ดูครับ เผื่อจะได้
โพสต์นี้ได้รับคำขอบคุณจาก: TaroKung Ichimura

47
Private Sub ViewPageSource()
Dim url As String, txtPageSource As String, i As Long

  url = "https://marketdata.set.or.th/mkt/sectorquotation.do?sector=SET50"
 
  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", url, False
    .Send
    txtPageSource = .ResponseText
  End With

End Sub

ดัดแปลงจาก https://www.mrexcel.com/forum/excel-questions/556844-read-html-source-code-vba-5.html
โพสต์นี้ได้รับคำขอบคุณจาก: bgfc

48
พวกชื่อ Object ต่างๆใน Access พวก Form, Report, Table, Query, Control ผมแนะนำให้ใช้ภาษาอังกฤษและไม่มีเว้นวรรคหรือสัญลักษณ์ต่างๆ (ยกเว้น _ ) ในชื่อ Object เหล่านี้ครับ

ถ้าจำเป็นต้องมีเว้นวรรคหรือสัญลักษณ์ในชื่อ เวลาจะเขียน VBA เพื่ออ้างอิง Object เหล่านี้จะต้องมี [ ] คร่อมชื่อเอาไว้เพื่อให้ Access รู้ว่ามันเป็นชื่อของ Object ไม่งั้น Access จะตีความสัญลักษณ์เหล่านั้นตามความหมายที่มันมี ดังนั้นหลีกเลี่ยงการตั้งชื่อที่มีเว้นวรรคหรือสัญลักษณ์ต่างๆจะดีที่สุด จะได้ไม่ต้องพะวงมาคอยใส่ [ ] ตอนเขียน code หรือ SQL ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

49
แก้โดยการเพิ่ม parameter นี้เข้าไป

Public Function QRString(vAny As Variant) As String
Dim DateStr As String, DateChr(12) As String, i As Integer

DateStr = Format(Now(), "DDMMYYYYHHmm")
For i = 1 To 12
    DateChr(i) = Mid(DateStr, i, 1)
Next

QRString = Format(Int(Rnd() * 1000), "000") & DateChr(9) & DateChr(5) & DateChr(3) & DateChr(1) & DateChr(6) & DateChr(11) & DateChr(7) & DateChr(8) & DateChr(2) & DateChr(10) & DateChr(4) & DateChr(12)

End Function

คุณได้รัน function นี้ใน Query หรือไม่ ถ้าเอาไปรันใน Query ให้ระบุชื่อ field ที่มีอยู่ฟิลด์ไหนก็ได้ลงไปใน function นี้เช่น

QRString([ชื่อฟิลด์อะไรก็ได้ที่มีอยู่])

ปล. ทุกครั้งที่มีการ populate หรือ recalculate ตัว Query นี้ค่ามันจะเปลี่ยนทุกครั้ง ดังนั้นให้เรียกใช้เพียงครั้งเดียวแล้วเก็บค่าที่ได้เข้าในตาราง หรือใน Log แล้วใช้ค่าดังกล่าวแทน
โพสต์นี้ได้รับคำขอบคุณจาก: tubitmmm

50
--ก็จะมีฟิวด์ที่ชื่อ pict ไว้เก็บข้อมูลรูปของแต่ละ style อยู่แล้ว
ถ้าอันนี้หมายถึงฟิลด์นั้นเก็บ path ของรูปไว้ เช่น D:\pict\abc.jpg คุณก็ให้แสดงรูปได้โดยกำหนดว่า

Dim mypict As String

mypict = Nz(DLookup("pict","Production","เงื่อนไขที่กำหนด style no."))
Me.ชื่อImageControl.Picture = mypict
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

51
ไม่แน่ใจว่าหมายถึงการสร้างรหัสแบบนี้หรือเปล่า

Public Function QRString() As String
Dim DateStr As String, DateChr(12) As String, i As Integer

DateStr = Format(Now(), "DDMMYYYYHHmm")
For i = 1 To 12
    DateChr(i) = Mid(DateStr, i, 1)
Next
QRString = Format(Int(Rnd() * 1000), "000") & DateChr(9) & DateChr(5) & DateChr(3) & DateChr(1) & DateChr(6) & DateChr(11) & DateChr(7) & DateChr(8) & DateChr(2) & DateChr(10) & DateChr(4) & DateChr(12)

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

52
ที่ช่อง Discount ของ Main Form กำหนด AfterUpdate event ประมาณนี้

Private Sub Discount_AfterUpdate()

DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE PODetails SET PODetails.Discount = [Quantity] * [Unit Price] * " & Me.Discount / 100 & " WHERE PODetails.[PO Number] = '" & Me.[PO Number] & "';"
DoCmd.SetWarnings True

Me.ชื่อSubForm.Refresh

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

หน้า: 1 2 [3]