Posts

การเก็บข้อมูลตัวแปร Arrays, Dictionary, ArrayList และ data structures อื่นๆ ใน VBA

การเก็บข้อมูลบนตัวแปร นอกจาก Array ที่เราเคยใช้กันนั้น ยังมีหลายรูปแบบที่รองรับการเขียนโปรแกรมบน VBA ที่น่าสนใจ และใช้งานง่ายกว่า Array เช่น Collection, Dictionary, Hashtable เป็นต้น ลองตามไปดูกันว่ามีอะไรน่าสนใจบ้าง https://analystcave.com/excel-vba-dictionary-arrays-and-other-data-structures/ https://analystcave.com/vba-collection/ https://www.mrexcel.com/forum/excel-questions/177640-hashtable-vba.html

Select ข้อมูล MS Access ผ่าน OLEDB

Image
การสร้าง process เพื่อ select ข้อมูลจาก MS Access database ผ่าน OLEDB จำเป็นต้องติดตั้ง  Microsoft Access Database Engine 2010 Redistributable เพื่อเป็น driver ในการเชื่อมต่อ Download: https://www.microsoft.com/en-us/download/details.aspx?id=13255 1. การ Select ข้อมูล ให้ทำการสร้าง Process โดยใช้งาน "Get Collection" action โดยต้องทำการเชื่อมต่อกับ database ให้ทำการสร้าง stage การทำงานดังภาพ 2. Stage "Connect DB" ให้ทำการตั้งค่าดังภาพ 3. Stage "Select users" สามารถใช้เขียน SQL command เพื่อ query ข้อมูลจาก database ได้ ดังภาพ เรียนรู้วิธีการเขียน SQL command เบื้องต้น Download: http://www.math.uaa.alaska.edu/~afkjm/cs111/handouts/IntroSQL_AccessOleDB.pdf ติดตั้ง OLEDB object บน BluePrism https://opexdev.blogspot.com/2018/05/data-oledb-object-blueprism-ms-access.html

ติดตั้ง Data - OLEDB object เพื่อรองรับการเชื่อมต่อ BluePrism ไปยัง MS Access

Image
การใช้งาน BluePrism เพื่อเชื่อมต่อกับ Database MS Access สามารถทำได้ผ่าน VBO พื่นฐานที่มีให้แล้ว เพียงแต่เราต้อง Import และ เพิ่ม function อีกนิดหน่อยเท่านั้นเอง 1 วิธี Import Data - OLEDB เพื่อรองรับการ Connect ไปยังฐานข้อมูล MS Access 1.1 Import Data - OLEDB object โดยเลือกจาก Folder ที่ติดตั้ง BluePrism 1.2 โดยปกติแล้ว ตัว Object เอง จะมี action ในการ Select ข้อมูลอยู่แล้ว คือ "Get Collection" ให้เราทำการ duplicate "Get Collection" page และตั้งชื่อว่า "Query" page เพื่อสร้าง action รองรับงาน Insert/Update/Delete 1.3 เปิด action ที่ทำการ duplication ขึ้นมา แล้ว double click ที่ "Get Data Table" stage ตั้งชื่อเป็น "Query" เลือก Tab "Code" เพื่อแก้ไข script ดังภาพ 1.4 จากนั้น เราจำเป็นต้องติดตั้ง  Microsoft Access Database Engine 2010 Redistributable เพื่อเป็น Driver ให้กับ OLEDB เชื่อมต่อกับ MS Access Download:  https://www.microsoft.com/en-us/download/details.aspx?id=13255 เท่านี้ เราก็สามารถเขียน...

เมื่อมีการ UpdateBatch ด้วย ADODB แล้วการใช้ข้อมูลในบรรทัดถัดไปมีปัญหา

เมื่อเรามีการ update ข้อมูลเป็นชุดลง MS Access ปรากฏว่าการ query ในบรรทัดถัดไป ข้อมูลยัง update ไม่ทัน ให้ลองใช้คำสั่ง .Requery หลังการ update ก่อน query ครั้งถัดไป เช่น set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" Dim objRs1 As ADODB.Recordset objRs1.Open "SELECT ShipperId, CompanyName, Phone FROM Shippers", conn , adOpenStatic, adLockBatchOptimistic, adCmdText objRs1 .AddNew objRs1 (1) = "New Shipper A" objRs1 (2) = "555-5555555" objRs1 .UpdateBatch objRs1 .Requery delCmd="DELETE FROM  Shippers WHERE  Phone = ' 555-5555555 ' " conn.Execute delCmd Ref. Cher https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/updatebatch-and-cancelbatch-methods-example-vb?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/ado/guide/data/sending-the-updates-updatebatch-method?view=sql-server-2017

เรื่องของ Null vs Empty ใน Excel VBA

Empty ใช้เปรียบเทียบค่า Variable เมื่อมีการประกาศตัวแปรและยังไม่ถูก Set ค่าใดๆ "" ใช้เปรียบเทียบ Variable ถูก set ค่าเป็น "" Null ใช้เปรียบเทียบค่า่า Variable ที่ถูก set เป็น Null หรือ เป็นค่า Null ที่มาจาก MS Access Dim num As Integer Dim str As String Dim obj As Object If str = Null Then 'False 'Variable is not null End If If str = Empty Then 'True Range("J3").Value = "Zero-Length-String" End If If num = Empty Then 'True Range("J4").Value = "Numeric 0" End If If str = ZLS Then 'True Range("J5").Value = "Zero-Length-String" End If If str = "" Then End If If str = "" Then End If If str = "" Then 'True Range("J6").Value = "Zero-Length-String" End If If Range("J7").Value = Empty Then 'True Range(...