แสดงกระทู้

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 ... 3 4 5 [6] 7 8
91
บรรทัดนี้ได้ลบไปหรือยังครับ Set xlApp = CreateObject("Excel.Application")

ผมบอกว่าให้ลองเปลี่ยนจาก
Set xlApp = CreateObject("Excel.Application")
เป็น
Set xlApp =  New Excel.Application

93
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

95
ทดลองอีกทีครับ จาก Set xlApp =  New Excel.Application เป็น

Set xlApp =  New Excel.Application() หรือ
xlApp =  New Excel.Application()

96
ลองเปลี่ยนจาก
Set xlApp = CreateObject("Excel.Application")
เป็น
Set xlApp =  New Excel.Application

ได้ไม่ได้แจ้งมาอีกทีครับ

97
1. เราสามารถเรียกใช้ Win API ได้โดยประกาศการใช้ใน VBA ครับ เช่น

Private Declare Function apiOpenClipboard Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As Long

หลังจากนั้นเราก็สามารถใช้ฟังก์ชั่น apiOpenClipboard() ใน code ของเราได้

2. ปกติพวก .dll ไม่ได้ถูก compile รวมไปด้วยกับโปรแกรมครับ มันจะไปโหลดที่เครื่องปลายทางตอนเปิดโปรแกรมขึ้นมาครับ .dll บางตัวสามารถใส่ลงไปในที่เดียวกับ .accde ได้ แต่ปกติ Access จะไปหาที่มีอยู่ในระบบก่อน สุดท้ายถึงจะมาหาใน path ที่โปรแกรมอยู่ และไฟล์ .dll บางตัวก็ทำงานไม่ได้ถ้าไม่ได้ register หรือติดตั้งเข้ากับ windows ก่อน

98
ขอบคุณอ.pizza_pมากๆนะครับ ผมได้ความรู้ใหม่อีกข้อแล้วครับ
แต่ว่าผมใช้ภาษาไทยเกือบ100%เลยครับ ไม่ว่าจะเป็นฟอร์ม รายงาน คิวรี่ และตาราง ตอนนี้แปลงเป็น MDEแล้ว ไม่ทราบว่าหากใช้นานๆไปจะมีปัญหาไหมครับ และหากต้องเปลี่ยนชื่อเป็นภาษาอังกฤษจะยุ่งยากไหมครับ
ถ้าไม่มี error อะไรก็ปล่อยผ่านไปได้ครับ แสดงว่าไม่ได้มีสัญลักษณ์อะไรที่มีความหมายต่อโปรแกรม

99
เมื่อผู้ใช้เลือกเครื่องใด ก็ให้ทำ Query ไปที่เครื่องนั้น โดยกำหนดเวลา Time out ให้น้อยตามต้องการ ปกติตั้งไว้ 60 วินาที แล้วดัดจับ Error แจ้งเตือนผู้ใช้ หรือจะไปลบรายชื่อเครื่องนั้นออกจาก list ก็ได้


ปล. ผมยังไม่เคยได้ลองใช้คุณสมบัตินี้นะครับ ไม่ได้อย่างไรต้องขออภัย

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

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

101
เวลาจะอ้างอิง subform ที่อยู่บน mainform ต้องใช้

Forms!mainform!subform.Form.ชื่อคอนโทรล

102
mypict = Nz(DLookup("pict", "Production", "[ฟิลด์ที่เก็บ Style no.]='" & Me.[Style No] & "'"))

103
เอาไปวางตรง control Style No. ใน AfterUpdate event

104
แก้โดยการเพิ่ม 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 แล้วใช้ค่าดังกล่าวแทน

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

Dim mypict As String

mypict = Nz(DLookup("pict","Production","เงื่อนไขที่กำหนด style no."))
Me.ชื่อImageControl.Picture = mypict

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

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

107
Private Sub login_Click()
Dim fpass As String, fusername As String, flevel As String

fusername = Nz(DlookUp("[UserName]","UserLogin","[UserName]='" & Me.UserBox & "'"))
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบรายชื่อผู้ใช้งาน"
    Me.Undo
    Me.UserBox.SetFocus
Else
    fpass = Nz(DlookUp("[Password]","UserLogin","[UserName]='" & Me.UserBox & "'"))
       If fpass = Me.PassBox Then
          flevel = DlookUp("[Level]","UserLogin","[UserName]='" & Me.UserBox & "'")
          SetUserLevel flevel
          DoCmd.OpenForm "Main Form", acNormal
       Else
          MsgBox "รหัสผ่านไม่ถูกต้อง", vbCritical, "พบข้อผิดพลาด"
          Me.Undo
          Me.UserBox.SetFocus
   End If
End If

End Sub

108
โค้ดที่ผมให้ไป ให้ตรวจดูว่าพวกปุ่ม พวก control หรือชื่อฟอร์มต่างๆ มันชื่อนั้นหรือเปล่า copy ไปดื้อๆ มักจะไม่ได้นะครับ เพราะผมก็ไม่รู้ว่า control หรือปุ่มมันชื่ออะไรจริงๆ เพียงเดาจากรูปว่าน่าจะเป็นอะไรเท่านั้น

รูปแบบโค้ดที่ผมให้มันจะไม่ไปยุ่งกับตัว SupplierForm เลยนะครับ ฉะนั้นไม่ต้องไปปรับแต่ SupplierForm แต่อย่างใด

หน้า: 1 ... 3 4 5 [6] 7 8