Hỏi về lấy dữ liệu kết nối ODBC (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

maxft2911

Thành viên chính thức
Tham gia
17/4/15
Bài viết
63
Được thích
0
Em xin chào các anh chị GPE, em có tạo kết nối ODBC đến Server, đoạn code như sau:
Mã:
Sheet1.Range("a1:z100").ClearApplication.ScreenUpdating = False
varConn = "ODBC;DSN=Manufacturing;DATABASE=xxxx;SERVER=xxxxxxxx;PORT=5432;UID=xxxxxx;;SSLmode=disable;ReadOnly=0;Protocol=7.4;FakeOidInde"
slect = "select "
slect = slect & "xxxxxxxxxxxxxxxx"
slect = slect & "xxxxxxxxxxxxxx"
from = " from "
from = from & "xxxxxxxxxxxxxx" 'not exist ","
whe = " where "
whe = whe & "sort_wo::text = '" & a_wo & "' order by sort_wo Asc;"
SQL = slect & from & whe
With Sheet1.QueryTables.Add(Connection:=varConn, Destination:=Sheet1.Range("a1"), SQL:=SQL)
    .RefreshStyle = xlOverwriteCells
    .Refresh
End With
Application.CalculateUntilAsyncQueriesDone
Em muốn đưa dữ liệu được lấy về vào một mảng do em đã tạo trước, chứ không muốn xổ xuống Sheet như câu lệnh :Destination:=Sheet1.Range("a1")
Mọi người xem giúp em với nhé!
Em xin cảm ơn!
 
Lần chỉnh sửa cuối:
QueryTables là một hàm của Worksheet. Nó bắt buộc phải đổ dữ liệu vào range.
Bạn có 2 chọn lựa, một là dùng DAO để nối vào workspace của query, cách này rất rắc rối; và hai là chuyển code sang dùng ADO, dễ hơn một chứt.

Tuy nhiên, nếu là tôi thì tôi giản dị hoá mọi việc. Cứ giữ code đó. Tạo một sheet tạm, ghi dữ liệu vào, đọc ra mảng rồi xoá sheet tạm.
 
Upvote 0
Em chỉ biết dùng ADO kết nối mở một File Excel ẩn để lấy dữ liệu, còn kết nối lấy dữ liệu qua SQL thì em không biết. Anh VietMini có thể hướng dẫn giùm em được không?Hoặc ví dụ giùm em cũng được! Em cảm ơn!
 
Upvote 0
Em chỉ biết dùng ADO kết nối mở một File Excel ẩn để lấy dữ liệu, còn kết nối lấy dữ liệu qua SQL thì em không biết. Anh VietMini có thể hướng dẫn giùm em được không?Hoặc ví dụ giùm em cũng được! Em cảm ơn!

SQL là gì? Đúng định nghĩa chỉ là ngôn ngữ truy vấn dữ liệu qua các CSDL có dạng bảng có thể hổ trợ ngôn ngữ này, hết.

SQL khong phải là CSDL. Có lẽ bạn muón nói MS SQL Server?
Vào tìm trong mục "Cơ Sở Dữ Liệu" sẽ thấy có vài bài chỉ dẫn cách kết nối vào SQL Server. Cái quan trọng là thiết lập mọt connection (*)

Sau khi có connection rồi. Chỉ việc lấy nó ra. Lệnh execute của connection trả vè 1 recordset. Lệnh GetRows của recordset trả về 1 mảng.
Như vậy muốn đổ dữ liệu vào mảng chỉ cần:
Dim mang as Variant
mang = meConnection.Excute(meSSQLstring).GetRows

(*) Lưu ý: SQL Server là một CSDL nghiêm chỉnh. Muốn kết nối thì chủ CSDL phải cho phép. Máy chủ cho phép nối ODBC không có nghĩa là nó sẽ tự động cho nối OLEDB (ADO dùng OLEDB). Vì vậy tôi đã đề nghị ở trên, cách dễ nhất là cứ để yên cách truy vấn ODBC rồi dùng sheet tạm.
 
Upvote 0
Em cảm ơn anh VietMini, có lẽ em phải dùng như cách ban đầu, vì bên em dùng không phải là MS SQL Server nên phải kết nối theo driver khác không có sẵn, mà bảo mật thì tùm lum nên phiền phức quá!
Em cảm ơn anh VietMini đã giúp đỡ!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom