แสดงกระทู้

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

หน้า: [1] 2 3
1
ห้อง MS Access / : เคยส่งline notify ได้ แต่กลับส่งไม่ได้ครับ
« เมื่อ: เมื่อวานนี้ เวลา 16:47:36 »
ลองเอาโค้ดท่านไปใช้เครื่องผมก็ใช้ได้เลยเหมือนกัน
โค๊ด: [Select]
Sub SendMessageToLineNotify1()
Dim myurl As String, iMessage As String, postDATA As String, winHttpReq As Object
iMessage = Me.Text6
Set winHttpReq = CreateObject("Microsoft.XMLHTTP")
myurl = "https://notify-api.line.me/api/notify"
postDATA = "message= " & iMessage
winHttpReq.Open "POST", myurl, False
winHttpReq.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
winHttpReq.SetRequestHeader "Authorization", "Bearer " & "6nAHBJqxbQ....................."
winHttpReq.send (postDATA)
End Sub

โค๊ด: [Select]
myurl = "https://notify-api.line.me/api/notify"

จากรูปท่านขึ้น vba run time error '- 2146697208 (800c0008)': จึงลองเอาไปค้นหาดูมีคนบอกว่าเครื่องที่วิน7/64bit ใช่ได้ | เครื่องวิน7/32bit ใช้ไม่ได้ เครื่องที่ใช้ไม่ได้ของท่านเป็นเช่นนั้นไหม
https://bit.ly/3AjYst1 link
https://stackoverflow.com/questions/60114876/vba-run-time-error-2146697208-800c0008-the-download-of-the-specified-reso link
https://stackoverflow.com/questions/18111884/pass-parameters-in-vba-http-post-request link
โพสต์นี้ได้รับคำขอบคุณจาก: aek

2
ห้อง MS Access / : เคยส่งline notify ได้ แต่กลับส่งไม่ได้ครับ
« เมื่อ: เมื่อวานนี้ เวลา 14:51:59 »
ลองเอา DLookup ออกแล้วใส่เป็นข้อความกับ token สดๆดูครับ

กระทู้ที่ผมลองเอาไปทดสอบแล้วใช่ได้ https://www.thai-access.com/index.php?topic=286.msg1062#msg1062
ปล.โพสต์เป็นข้อความหรือใส่ใน [ code]  [ /code] มาได้ไหมครับผมพิมพ์ไม่เก่ง+ไม่ขยัน :XD:
โพสต์นี้ได้รับคำขอบคุณจาก: aek

3
ผมก็ได้มานานแล้ว แต่ไม่ได้ทำใช้
โพสต์นี้ได้รับคำขอบคุณจาก: aek

4
ได้ข้อมูลมาจากเฟสบุ๊กเพจ "โปรแกรมเมอร์ไทย Thai programmer" ครับ

https://goalkicker.com/?fbclid=IwAR1TjcRyaWd6r_xdj510qNJOu_3B2c9EV_AWjkJ0_lyZqxdBS3bYFHCZERo link

แนะนำเพิ่มเติมว่า สำหรับคนที่ชอบเขียนโปรแกรม ให้ศึกษาวิชา Data Structure (ส่วนนึงอยู่ในหนังสือ Algorithms) และ Algorithms เพราะจะช่วยให้ขยับโลกทัศน์ในการวิเคราะห์และหาวิธีตอบโจทย์ที่ซับซ้อนยิ่งขึ้นได้
โพสต์นี้ได้รับคำขอบคุณจาก: aek

5
อยากจะทราบวิธี ขยาย Check Boxบนฟรอม คะ



ถ้าอยากให้ใหญ่ตามที่เราอยากได้ ใช้ Label มาสร้าง Checkbox ก็ได้ครับ
วิธีทำ
1 สร้าง Label ขึ้นมา ช่องใส่ข้อความ เคาะ space bar 1 ที ไม่ต้องใส่ข้อความ
2.ตั้งชื่อว่า lblCheck
3.จัดแนวข้อความกึ่งกลาง กำหนดขนาดตามต้องการ
4.ใส่ลักษณะพิเศษ แบบยุบตัว

กำหนดสถานะเมื่อ Click เราจะใช้ ChrW(&H2713) หรือ ChrW(&H2714) คือเครื่องหมายกาถูก
โดยเมื่อติ๊กถูกให้ checkbox ที่ชื่อ check1 = true ไปด้วย

Private Sub lblCheck_Click()
Call CheckboxDIY
End Sub

Sub CheckboxDIY()
  If Me.lblCheck.Caption = ChrW(&H2713) Then
    Me.lblCheck.Caption = vbNullString
    Me.Check1 = False
  Else
    Me.lblCheck.Caption = ChrW(&H2713)
    Me.Check1 = True
  End If
End Sub

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

6
พอดีมีเวลาและเห็นว่ามีหลายครั้งที่มีการถามถึงการสร้างฟอร์มล็อคอินและเมนู ผมเลยเขียนตัวอย่างขึ้นมาเอาไว้ให้เป็นแนวทางในการศึกษาครับ

ระบบมี 2 เทเบิลคือ tbUser ไว้เก็บ ID,รหัสผ่าน,และเมนูที่จะใช้ ในขณะที่อีกเทเบิล tbMenu จะเก็บว่าแต่ละเมนูมีโครงสร้างอย่างไร

ฟอร์มหลักๆคือ FmLogon เพื่อรับ ID และรหัสผ่านผู้ใช้ เมื่อป้อนถูกต้องแล้ว ระบบก็จะเปิดฟอร์ม FmMenu เพื่อแสดงเมนูของแต่ละคน เมื่อคลิกหรือเลื่อนมาที่แต่ละรายการในเมนู คำอธิบายของรายการนั้นจะแสดงที่กรอบด้านล่าง แต่ถ้าดับเบิลคลิก จะเป็นการเปิดหน้าฟอร์ม/รายงานของรายการนั้น พร้อมกับตัวเมนูจะถูกหดย่อลงไป และจะกลับมาแสดงโดยอัตโนมัติเมื่อปิดฟอร์ม/รายงานที่ได้เปิดไป หลังจากปิดเมนู ก็จะกลับมาเปิดฟอร์มล็อคอินอีกครั้ง  ส่วนฟอร์มและรายงานที่เหลือเป็นแค่ตัวอย่างเพื่อแสดงให้เห็นว่าฟอร์ม/รายงานนั้นได้เปิดจริงๆแล้วเท่านั้น

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

ปล. อย่าถามนะว่า login ID และรหัสผ่านมีอะไรบ้าง  :sweat:
โพสต์นี้ได้รับคำขอบคุณจาก: aek

7
คงต้องใส่โค้ดไว้ใน Form_Activate event ของทุกฟอร์มแล้วครับ แล้วถ้าจะป้องกันอีกชั้น ก็ใส่เงื่อนไขตรวจสอบปีไว้ใน Validation Rule ของฟิลด์วันที่ในเทเบิลไปด้วยว่าปีต้องอยู่ในช่วงที่เป็นไปได้ เช่น 2010-2050 ก็เขียนเป็น Year([ชื่อฟิลด์]) between 2010 and 2050 ส่วน Validation Text ก็ใส่ข้อความที่จะแสดงเมื่อไม่เป็นไปตาม Rule ที่ว่านี้

หมายเหตุ : ฟังก์ชั่น Year( ) จะให้ค่าเป็นปี ค.ศ. เสมอ แม้ปฏิทินจะกำหนดเป็น พ.ศ.
โพสต์นี้ได้รับคำขอบคุณจาก: aek

8
ในภาษา VBA  เครื่องหมาย double quote เป็น string delimeter เปิด/ปิดสำหรับค่าคงที่ของข้อความ (ในนี้ผมจะใช้สีแดงแล้วกัน) เช่น ค่าคงที่ของข้อความ AB ก็จะต้องสร้างเป็น "AB"   แต่ถ้าค่าคงที่ของข้อความต้องมี double quote อยู่ภายในอยู่ด้วย เช่น A"B  เราต้องใช้ double quote 2 ตัว   VBA จะรู้ว่าจริงๆแล้ว นี่เป็นตัวอักษร double quote เพียงตัวเดียว ไม่ใช่ delimiter  ดังนั้นเราก็ต้องสร้างเป็น "A""B" 


ส่วน string delimeter ในภาษา SQL จะใช้ได้ทั้ง double quote และ single quote  ดังนั้นเมื่อต้องการค่าคงที่ของข้อความ SELECT * FROM Output WHERE [Type] like 'AB' ลงในตัวแปรชื่อ SQL เราก็จะสร้างคำสั่งเป็น SQL = "SELECT * FROM Output WHERE [Type] like 'ABC'" หรือถ้าเราใช้ double quote แทน single quote คำสั่งก็จะกลายเป็น SQL = "SELECT * FROM Output WHERE [Type] like ""ABC"""


ส่วน & คือ operator ที่ใช้เชื่อมข้อความ 2 ข้อความเข้าด้วยกัน เช่น "A" & "B" ก็จะได้ค่าคงที่ของข้อความเป็น AB หรือ "A" & """B""" ก็จะได้เป็น A"B"
โพสต์นี้ได้รับคำขอบคุณจาก: aek

9
อ้างถึง
1. หลักความแตกต่างระหว่าง " และ ' และ & คืออะไรครับ

 " และ '  เราเรียกว่า double quote และ Single quote ครับ สัญลักษณ์พวกนี้เป็นการบอกให้ทราบว่า คุณได้กำหนดช่วงของ ข้อความ หรือ String หรือ ตัวเลข หรือตัว Control จาก ไหน ถึง ไหน ครับ เช่น "..............." เป็นการบอกว่า ภายใน double quote นี้คือเนื้อหาส่วนเดียวกัน

ความแตกต่างของการใช้  " และ ยกตัวอย่างการใช้ Dlookup
เราจะใช้ ' ในการกรณีที่ อ้างถึงเขตข้อมูลที่เป็น string หรือข้อความ เช่น
DLookup("FieldName" , "TableName" , "Criteria= 'String'")

ในกรณีที่เป็น ตัวเลข เราจะใช้ " ในการกำหนดขอบเขตครับเช่น N คือตัวเลข
DLookup("FieldName" , "TableName" , "Criteria = n")

แต่ " " นี้ก็ไม่ได้ใช้กับตัวเลขเสมอไป เราจะใช้ในการกำหนด เริ่มต้นและสิ้นสุดของข้อความที่เรากำหนดได้เหมือนกันเช่น

msgbox "สวัสดีครับ",vbInformation,"ทักทาย"

& นั้นใช้ในการเชื่อมต่อกับส่วน อื่นๆของคำสั่ง เช่น ตัวแปร เชื่อมกับ Control / ข้อความเชื่อมกับ Control / กำหนด เชื่อมฟิลล์เข้าด้วยกัน เช่น Field1 & "/" & Field2  ก็จะได้ Field1/Field2เป็นต้น

อ้างถึง
2. ในกรณีนี้ทำไมต้องใส่ " " ที่ตอนต้นและตอนท้ายด้วยครับ เพราะดูในที่อื่น ก็ select * from  where ไม่เห็นต้องมี " " ปิดหัวท้ายเลย


คุณอ้างถึงตัวแปร Sql ที่เป็น string ซึ่ง ต้องมี " " ปิดหัวท้ายเพื่่อกำหนดขอบเขตของ String ที่เรากำหนดคับ

อ้างถึง
3. like '" & Nz(Me.tcombo, "*") & "'  --> รบกวนช่วยแปล Code นี้หน่อยครับ ไม่เข้าใจตรงการเขียน '" & XXX & "'
จากตัวอย่างนี้ลองสังเกตุ '" & XXX & "' การใส่ เครื่องหมาย  " และ ' ให้การ Control ที่เป็นข้อความคับ
Nz(Me.tcombo, "*") คือการกำหนดให้ตรวจสอบ Control ที่ชื่อ tcombo ครับโดยการกำหนดให้แสดงผลตามว่า tcombo ว่างหรือไม่ว่าง
ถ้า tcombo ไม่เป็นค่าว่าง สมมุติเราใส่ กรุงเทพ เงื่อนไขของ คำสั่งนี้คือ   like "กรุงเทพ" ซึ่ง ถ้าเขตข้อมูลไหนมีคำว่ากรุงเทพก็จะแสดงรายการออกมาครับ
แต่ถ้า tcombo เป็นค่าว่าง Nz Function ก็จะแทนค่าว่างด้วย * คือถ้าว่างก็ให้เงื่อนไขคือแสดงข้อมูลทั้งหมด

ผมตอบได้เท่าที่ผมนึกออกนะคับ  รออาจารย์ท่านอื่นมาเสริม
โพสต์นี้ได้รับคำขอบคุณจาก: aek

10
สุดยอดเลยค่ะอาจารย์
หนูขออนุญาตโหลดไฟล์โปรแกรมตัวอย่างของอาจารย์
ไปเก็บไว้ศึกษาปรับประยุกต์ใช้งานต่อด้วยอีกคนนะคะ

ขอบคุณเจ้าของกระทู้นี้ด้วยเช่นกันค่ะ
โพสต์นี้ได้รับคำขอบคุณจาก: aek

11
ยินดีครับ ที่จริงมันสามารถ Convert File รูป เป็นรูปแบบที่ต้องการได้ด้วยนะครับ เช่น ต้นฉบับเป็น .BMP จะแปลงเป็น .JPEG หรือ อื่นๆได้ โดยใช้ WIA
แต่จากความต้องการเจ้าของกระทู้ ไม่น่าจะใช้ในส่วนนี้ครับ  :cool: :cool:
โพสต์นี้ได้รับคำขอบคุณจาก: aek

12
เห็นแล้วสุดยอดเลยครับ อ.ปิ่นณรงค์...ผมขออนุญาติโหลดเพื่อนำมาศึกษาและนำมาประยุกต์กับการใช้งานจริงนะครับ..และขอขอบคุณเจ้าของกระทู้ด้วยนะครับ

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

13
อ้างถึง
เพิ่มนามสกุลไฟล์จาก JPG เป็นไฟล์รูปภาพอื่นต้องเพิ่มอย่างไรครับ



ถ้าจะเพิ่มการเก็บไฟล์รูปภาพประเภทอื่นๆ ด้วยลองใส่ตามนี้ครับมี 2 แบบให้เลือก
โค๊ด: [Select]
Private Sub Import_Click()
Dim File As FileDialog
Dim strPath, StrFile, SetPathon As String
If IsNull(Me.SetPath) Then
MsgBox "กรุณากำหนด Path ที่จะจัดเก็บก่อน", vbInformation, "แจ้งเตือนขั้นตอน"
Else
Set File = Application.FileDialog(msoFileDialogFilePicker)
With File
        .Title = "เลือกรูปภาพ"
        .Filters.Clear
        .Filters.Add "JPG", "*.JPG"
        .Filters.Add "BMP", "*.BMP"
        .Filters.Add "JPEG File ", "*.JPEG"
        .Filters.Add "GIF", "*.GIF"
        .Filters.Add "PNG", "*.PNG"
        .Filters.Add "TIFF", "*.TIFF"
        .Filters.Add "ALL Pictures", "*.JPG,*.BMP,*.JPEG,*.GIF,*.PNG,*.TIFF"
 End With
If File.Show Then
Me.PhotoPath = File.SelectedItems.Item(1)
End If
If Not IsNull(PhotoPath) Then
SetPathon = SetPath
strPath = Me.PhotoPath
StrFile = Right(strPath, Len(strPath) - InStrRev(strPath, "\"))
Me.SetPath = SetPathon & "\" & StrFile
End If
End If
End Sub

หรือแบบไม่ต้องกำหนด ประเภทไฟล์คือให้แสดงทุกรูปแบบนามสกุลไฟล์ที่เป็นรูปภาพตามที่เรากำหนดประมาณนี้ครับ

โค๊ด: [Select]
Private Sub Import_Click()
Dim File As FileDialog
Dim strPath, StrFile, SetPathon As String
If IsNull(Me.SetPath) Then
MsgBox "กรุณากำหนด Path ที่จะจัดเก็บก่อน", vbInformation, "แจ้งเตือนขั้นตอน"
Else
Set File = Application.FileDialog(msoFileDialogFilePicker)
With File
        .Title = "เลือกรูปภาพ"
        .Filters.Clear
        .Filters.Add "ALL Pictures", "*.JPG,*.BMP,*.JPEG,*.GIF,*.PNG,*.TIFF"
End With
If File.Show Then
Me.PhotoPath = File.SelectedItems.Item(1)
End If
If Not IsNull(PhotoPath) Then
SetPathon = SetPath
strPath = Me.PhotoPath
StrFile = Right(strPath, Len(strPath) - InStrRev(strPath, "\"))
Me.SetPath = SetPathon & "\" & StrFile
End If
End If
End Sub

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

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

ถ้าจะสร้างการตรวจสอบเมื่อเปิดไฟล์ขึ้นมางั้นเราจะเพิ่มโค้ดตรวจสอบไว้ที่ AutoExec นะครับ
โดย Macro และ Module นี้นำไปไว้ที่ โปรแกรมหลักของเราเลย เวลา Copy ไฟล์ Macro และ Module นี้จะติดมาด้วย

ขั้นตอนที่ 1 สร้าง Module ใส่
โค๊ด: [Select]
Public Function AutoExec_AutoExec()
On Error GoTo AutoExec_AutoExec_Err
   Dim strFileName As String
   Dim DFileName As String
   
   strFileName = CurrentProject.Path & "\" & CurrentProject.Name
    DFileName = Dir(strFileName)
   
   If Left(DFileName, 6) = "Backup" Then
   MsgBox "ไฟล์นี้เป็นไฟล์สำรองไม่ควรเปิดใช้งานจนกว่าจะเปลี่ยนชื่อไฟล์ใหม่", vbInformation, "แจ้งเตือน"
    DoCmd.Quit
   End If
AutoExec_AutoExec_Exit:
    Exit Function
   
AutoExec_AutoExec_Err:
    MsgBox Error$
    Resume AutoExec_AutoExec_Exit
   
End Function

ขั้นตอนที่ 2 สร้างมาโครขึ้นมา 1 อันใส่โค้ดนี้ไปตั้งชื่อว่า AutoExec


เท่านี้เวลาเปิดไฟล์ไหนก็แล้วแต่ที่ Copy มา ถ้าไฟล์ ชื่อขึ้นต้นด้วย BackUp ก็จะแสดง Msgbox แจ้งเตือนทันทีคับ

ผมมีตัวอย่างไฟล์ ลองกด Botton Copy แล้วไปลองเปิดไฟล์ Backup ที่ Drive D ดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: aek

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

16
สนับสนุนการบ่นอีกเสียงครับ

บางคำถามอ่านแล้วได้แต่ถอนใจ
โพสต์นี้ได้รับคำขอบคุณจาก: aek

หน้า: [1] 2 3