เขียน VBA ใน Access

  1. เริ่มต้นจาก Hello World
  2. ใช้งาน Control
  3. เรียก GET request
  4. ดาว์นโหลดรูปภาพมาบันทึกเป็นไฟล์ แล้วแสดงที่ Control Image

1.เริ่มต้นจาก Hello World

แสดงข้อความด้วย MsgBox

Sub MyCodeMacro()
  MsgBox "Hello World"
End Sub

มีการคำนวณซักหน่อย

Sub MyCodeMacro()
  x = 3 * 5
  MsgBox x
End Sub

2.ใช้งาน Control

คลิกปุ่ม (Command0) แล้วเอาค่าไปหยอดลง Textbox (Text1) ให้ใช้ .Value

เพราะถ้าใช้ .Text จะฟ้องว่า “you can’t reference a property or method for a control unless the control has the focus

กำหนดค่าให้ TextBox

Private Sub Command0_Click()
  Text1.Value = "Hello World!"
End Sub

อ่านค่าจาก TextBox

Private Sub Command0_Click()
  MsgBox Text1.Value
End Sub

3.เรียก GET request

ก่อนอื่นไปที่เมนู Tools > References แล้วเพิ่ม Microsoft XML v6.0

Sub SimpleGet1()
  'Add a reference to Microsoft XML v6.0 via Tools > References

  apiURL = "https://localhost:44335/api/default/5"

  requestString = apiURL

  Set request = New ServerXMLHTTP60        'creates the object
  request.Open "GET", requestString, False 'populates object fields
  request.send                             'actually sends the request
  MsgBox request.responseText
  request.abort
End Sub

.NET Core WebApi (DefaultController)

// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(string id)
{
    return "Hello" + id;
}

การต่อพารามิเตอร์ให้กับ GET request

Sub SimpleGet2()
  'Add a reference to Microsoft XML v6.0 via Tools > References

  apiURL = "https://api.iextrading.com/1.0/"
  endpoint = "tops/last"
  params = "symbols="
  tickers = "MSFT,AAPL,AMZN"

  requestString = apiURL & endpoint & "?" & params & tickers

  Set request = New ServerXMLHTTP60           'creates the object
  request.Open "GET", requestString, False    'populates object fields
  request.send                                'actually sends the request over the wire (internet)
  MsgBox request.responseText
  request.abort
End Sub

4.ดาว์นโหลดรูปภาพมาบันทึกเป็นไฟล์ แล้วแสดงที่ Control Image

Public Sub httpGet(ByVal sourcePath As String, ByVal destinationPath As String)
  Dim xmlHTTP
  Dim contents
  Dim oStr

  Set xmlHTTP = CreateObject("Microsoft.XMLHTTP")
  xmlHTTP.Open "GET", sourcePath, False
  xmlHTTP.send
  contents = xmlHTTP.responseBody

  Set oStr = CreateObject("ADODB.Stream")
  oStr.Mode = adModeReadWrite
  oStr.Type = adTypeBinary
  oStr.Open

  oStr.write (contents)
  oStr.SaveToFile destinationPath, adSaveCreateOverwrite
End Sub

Private Sub Command4_Click()
  sourcePath = "https://localhost:44335/api/default/" & Text1.Value
  filePath = "C:\tmp\" & Text1.Value & ".png"
  httpGet sourcePath, filePath
  Image3.Picture = filePath
End Sub

.NET Core WebApi (DefaultController)

// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(string id)
{
    BarcodeLib.Barcode b = new BarcodeLib.Barcode();
    Image img = b.Encode(BarcodeLib.TYPE.CODE128, id
                   , Color.Black, Color.White, 290, 120);
    img.Save("code128.png", ImageFormat.Png);

    Byte[] b1 = System.IO.File.ReadAllBytes("code128.png");
    return File(b1, "image/png");
}