Odbc.Query ใช้สำหรับดำเนินการคำสั่ง SQL โดยตรงต่อฐานข้อมูล ODBC ใดๆ เช่น SQL Server, MySQL, PostgreSQL, Oracle และส่งคืนผลลัพธ์เป็นตาราง
=Odbc.Query(connectionString as any, query as text, optional options as nullable record) as table
=Odbc.Query(connectionString as any, query as text, optional options as nullable record) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| connectionString | text or record | Yes | สตริงการเชื่อมต่อ ODBC หรือระเบียน property-value pairs สำหรับเชื่อมต่อฐานข้อมูล | |
| query | text | Yes | คำสั่ง SQL ที่ต้องการดำเนินการบนฐานข้อมูล (เช่น SELECT, UPDATE, DELETE) | |
| options | record | Optional | null | ตัวเลือกเพิ่มเติมเพื่อกำหนดค่าพฤติกรรมการเชื่อมต่อ (ConnectionTimeout, CommandTimeout เป็นต้น) |
let ConnectionString = "dsn=MyDatabase", Query = "SELECT * FROM Customers", Result = Odbc.Query(ConnectionString, Query) in Resultlet
ConnectionString = "dsn=MyDatabase",
Query = "SELECT * FROM Customers",
Result = Odbc.Query(ConnectionString, Query)
in
Result
ตารางแสดงข้อมูลลูกค้าทั้งหมดจากตาราง Customers
let ConnectionString = "Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=SalesDB;Uid=admin;Pwd=password123", Query = "SELECT ProductID, ProductN…let
ConnectionString = "Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=SalesDB;Uid=admin;Pwd=password123",
Query = "SELECT ProductID, ProductName, Price FROM Products WHERE Price > 1000",
Result = Odbc.Query(ConnectionString, Query)
in
Result
ตารางแสดงสินค้าที่มีราคามากกว่า 1000 หน่วยสกุลเงิน
let ConnectionString = "dsn=MyDatabase", Query = "SELECT * FROM LargeTable", Options = [ ConnectionTimeout = #duration(0, 0, 0, 30), CommandTimeout = #duration(…let
ConnectionString = "dsn=MyDatabase",
Query = "SELECT * FROM LargeTable",
Options = [
ConnectionTimeout = #duration(0, 0, 0, 30),
CommandTimeout = #duration(0, 0, 5, 0)
],
Result = Odbc.Query(ConnectionString, Query, Options)
in
Result
ตารางข้อมูลจาก LargeTable โดยมี timeout ที่กำหนดไว้
let ConnectionString = "dsn=CompanyDB", Query = "SELECT o.OrderID, o.OrderDate, c.CustomerName, p.ProductName FROM Orders o INNER JOIN Customers c ON o.Customer…let
ConnectionString = "dsn=CompanyDB",
Query = "SELECT o.OrderID, o.OrderDate, c.CustomerName, p.ProductName
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID
INNER JOIN Products p ON o.ProductID = p.ProductID
WHERE o.OrderDate >= '2024-01-01'",
Result = Odbc.Query(ConnectionString, Query)
in
Result
ตารางแสดง OrderID, OrderDate, CustomerName, ProductName สำหรับออเดอร์ตั้งแต่ 2024-01-01 เป็นต้นไป
let ConnectionString = "dsn=SalesDB", Query = "SELECT CategoryID, SUM(Amount) AS TotalSales, COUNT(*) AS TransactionCount FROM Sales GROUP BY CategoryID ORDER B…let
ConnectionString = "dsn=SalesDB",
Query = "SELECT CategoryID, SUM(Amount) AS TotalSales, COUNT(*) AS TransactionCount
FROM Sales
GROUP BY CategoryID
ORDER BY TotalSales DESC",
Result = Odbc.Query(ConnectionString, Query)
in
Result
ตารางแสดง CategoryID, TotalSales, TransactionCount โดยจัดเรียงจากยอดขายสูงสุดไปต่ำสุด
เกือบทุกฐานข้อมูลเลยครับ ตราบใจ ODBC driver เค้ารองรับ SQL Server, MySQL, PostgreSQL, Oracle, Microsoft Access, SQLite ฯลฯ ถ้าฐานข้อมูลไหนมี ODBC driver ก็ใช้ได้เหมือนกัน
Odbc.DataSource มันโชว์รายชื่อตารางและ views ที่อยู่ในฐานข้อมูลให้คุณเลือก แล้ว Odbc.Query ต่างหากครับ มันเอา SQL command ที่คุณเขียนไปรันตรงๆ แล้วส่งผลลัพธ์กลับมา ดังนั้นถ้าต้องคิด query ที่ซับซ้อน ใช้ Odbc.Query นะครับ
ต้องแน่นอนครับ ถ้าเครื่องของคุณไม่มี ODBC driver สำหรับฐานข้อมูลที่ต้องการ Odbc.Query มันจะไม่หาเจออยู่แล้ว หาอันที่เหมาะสมติดตั้งเสียก่อน
Connection timeout คือ ‘นานเท่าไหร่ถึงจะยอมท้อว่าเชื่อมต่อไม่ได้’ ส่วน Command timeout คือ ‘นานเท่าไหร่ถึงจะยอมเพิ่มเติมว่า query นั่นค้างไป’ เท่านั้นแหละ อันแรกเรื่องการเชื่อมต่อ อันหลังเรื่องการรันคำสั่ง
ได้นะครับ แต่จริงๆ ก็ไม่ค่อยเห็นใครใช้เพื่อแก้ไขข้อมูล มักจะใช้สำหรับดึงข้อมูล (SELECT) มากกว่า เพราะถ้าใช้ INSERT/UPDATE/DELETE ต้องมี permission พอ และต้องระวังไว้ด้วย ไม่อย่างนั้นขึ้นตัวที่ผิดไปเต็มฐานข้อมูล 😅
Odbc.Query คือฟังก์ชัน Power Query ที่ช่วยให้คุณเชื่อมต่อกับฐานข้อมูลต่างๆ ผ่าน ODBC (Open Database Connectivity) และดำเนินการคำสั่ง SQL โดยตรง ไม่ว่าจะเป็น SELECT, UPDATE, DELETE หรืออื่นๆ บนฐานข้อมูลเหล่านั้น ผลลัพธ์จะส่งกลับมาเป็นตาราง Power Query ที่พร้อมใช้งาน
ที่เจ๋งของ Odbc.Query คือมันรองรับฐานข้อมูลเกือบทุกประเภท SQL Server, MySQL, PostgreSQL, Oracle, SQLite ฯลฯ ตัวคุณไม่ต้องใจเรื่องฟังก์ชัน SQL.Database หรือ Access.Database ที่มีจำเพาะเจาะจงแต่ละตัว แค่ใช้ Odbc.Query ตัวเดียวก็ทำงานได้ทั้งระบบปืนเก่า legacy database และระบบใหม่สุด modern database
ส่วนตัวผม 😎 ถ้าต้องเชื่อมต่อหลายประเภทฐานข้อมูล Odbc.Query เป็นตัวเลือกแรกของผม เพราะไม่ต้องคิดมาก ดำเนินการได้ตรงไปตรงมา และสามารถใช้ได้กับเกือบทุกฐานข้อมูลที่มี ODBC driver ติดตั้งไว้