ACE Giúp mình tự động lấy dữ liệu từ Tables trong SQL ra Excel với.

Liên hệ QC

hoanghoa_dtt91

Thành viên chính thức
Tham gia
5/11/13
Bài viết
67
Được thích
0
Mình giờ cần lấy dữ liệu trong SQL để đưa ra Excel. Ai hướng dẫn mình lập trình trên excel để tự động lấy dữ liệu trong bảng SQL với. Thank!
 
SQL tức là MS SQL Server hay là MySQL?

Đọc và tìm hiểu các đề tài "Chú ý: ... ADO ..."

Sau khi đã biết cách sử dụng ADO rồi thì chỉ cần biết:

1. Các bài kia dùng cỗ máy Jet hoặc Access để lấy dữ liệu. Voiws SQL Server thì phải dùng cỗ máy SQLOLEDB. Vì vậy phải thay chuỗi kết nối như sau:

connString = "Provider=SQLOLEDB;Data Source=INSTANCE\SQLEXPRESS;" & _
"Initial Catalog=Tên_DataBase;" & _
"Integrated Security=SSPI;"

2. Một số lệnh truy vấn và hàm hơi khác một chút (SQL Server dùng T-SQL trong khi Access dùng Access SQL) . Tuy nhiên nếu chỉ thuần truy vấn đơn giản thì in hệt nhau.

3. Đừng để ý đến mấy bài nói về DAO. Công cụ này tuy chạy hiệu quả hơn ADO hơn không dùng được tổng quan cho nhiều loại CSDL.
 
SQL tức là MS SQL Server hay là MySQL?

Đọc và tìm hiểu các đề tài "Chú ý: ... ADO ..."

Sau khi đã biết cách sử dụng ADO rồi thì chỉ cần biết:

1. Các bài kia dùng cỗ máy Jet hoặc Access để lấy dữ liệu. Voiws SQL Server thì phải dùng cỗ máy SQLOLEDB. Vì vậy phải thay chuỗi kết nối như sau:

connString = "Provider=SQLOLEDB;Data Source=INSTANCE\SQLEXPRESS;" & _
"Initial Catalog=Tên_DataBase;" & _
"Integrated Security=SSPI;"

2. Một số lệnh truy vấn và hàm hơi khác một chút (SQL Server dùng T-SQL trong khi Access dùng Access SQL) . Tuy nhiên nếu chỉ thuần truy vấn đơn giản thì in hệt nhau.

3. Đừng để ý đến mấy bài nói về DAO. Công cụ này tuy chạy hiệu quả hơn ADO hơn không dùng được tổng quan cho nhiều loại CSDL.
Anh có thể viết cho em tham khảo một ví dụ cụ thể với.
 
Tìm trên diễn đàn toàn thấy hướng dẫn "Kết nối truy vấn CSDL từ file Excel đến file Access."

Không thấy hướng dẫn truy vấn CSDL đến SQL Server. Ai giúp mình truy vấn tới SQL server với. Thank!

Anh có thể viết cho em tham khảo một ví dụ cụ thể với.

Tôi có tật rất lười, hiếm khi viết code từ đầu đến cuối. Bạn làm bị vướng chỗ nào thì tôi chỉ cho cách sửa.

Thiết tưởng bạn làm việc với SQL Server mà không rành T-SQL thì không nên làm nữa. Dùng Import/Export Wizard đưa cả bảng snag Excel rồi truy vấn.
 
Tôi có tật rất lười, hiếm khi viết code từ đầu đến cuối. Bạn làm bị vướng chỗ nào thì tôi chỉ cho cách sửa.

Thiết tưởng bạn làm việc với SQL Server mà không rành T-SQL thì không nên làm nữa. Dùng Import/Export Wizard đưa cả bảng snag Excel rồi truy vấn.
Anh giúp em viết code kết nối với e làm mà không được. Thank!
 
À kết nối được rồi nhưng không truy xuất được
 
sau một hồi lò mò mãi cũng đã truy xuất được, giờ còn lọc giữ liệu có gì sẽ nhờ các sư huynh.
 
Các sư huynh cho em hỏi, làm sao để tự động xoá dữ liệu trong database trên SQL Server. Vì mình đưa liên tục dữ liệu lên sợ nó tràn. Thank!
 
Lưu thoải mái mà, có tràn đâu. Chỉ sợ dung lượng ổ đĩa không đủ thôi.
 
Các sư huynh cho em hỏi, làm sao để tự động xoá dữ liệu trong database trên SQL Server. Vì mình đưa liên tục dữ liệu lên sợ nó tràn. Thank!

Cái gì tràn - "nó" là cái gì? Tràn ra làm sao?

SQL Server có những phương cách tiết giảm quy mô (culling) của nó. Vừa tiện lợi vừa an toàn. Tự dưng mang ra làm tự động bằng Excel có phải là đem chó đi kéo cày hay không!
 
Cái gì tràn - "nó" là cái gì? Tràn ra làm sao?

SQL Server có những phương cách tiết giảm quy mô (culling) của nó. Vừa tiện lợi vừa an toàn. Tự dưng mang ra làm tự động bằng Excel có phải là đem chó đi kéo cày hay không!
ah sợ nó đầy ổ cứng nên em muốn 1 thời gian thì xóa các cái củ đi, thì phải làm thế nào?
 
Lần chỉnh sửa cuối:
Nếu muốn xóa 1 số dòng trong Table của dữ liệu SQL thì: 1. Dùng câu lệnh SQL DELETE; 2. Phương pháp xóa từ Excel dùng Tool hỗ trợ (ví dụ như: savetodb) hoặc VBA.
 
Tạo một Stored Procedure trong SQL Server để xoá. Và dùng SQL Server Agent để nó tự động chạy SP này.

Đã nói rồi. Bảo trì SQL Server qua Excel VBA là dùng chó kéo cày. Nếu không có khả năng dùng SS Management Studio để bảo trì nó thì tốt hơn nên đổ dữ liệu qua Access rồi làm việc. Access và Excel cùng là thành phần của MS Office cho nên chúng hoạt động phù hợp với nhau hơn. SQL Server vừa đắt tiền vừa nặng ký.
 
Giờ em đang đưa dữ liệu từ phần mền khác lên database, cập nhập theo phút cứ 1 phút đẩy lên Table của SQL. Em muốn cứ một tháng thì dữ liệu này xóa đi và lưu lại từ dòng đẩu của Table. Ai giúp với, thank!
 
Giờ em đang đưa dữ liệu từ phần mền khác lên database, cập nhập theo phút cứ 1 phút đẩy lên Table của SQL. Em muốn cứ một tháng thì dữ liệu này xóa đi và lưu lại từ dòng đẩu của Table. Ai giúp với, thank!

"muốn" mà chả chịu vận động não.
muốn "cứ một tháng" thì phải có cái gì để đánh dấu 1 tháng.
Có thấy dữ liệu ra sao đâu mà biết thế nào là dòng record đã 1 tháng tuổi.

Giả sử trong record có trường ngayGhi thì câu lệnh xoá 1 tháng là

DELETE FROM BangABC_GiDo
WHERE 1 <= DateDiff(month,GetDate(),ngayGhi)
 
Em không chuyên về lĩnh vực này, nên chỉ tìm hiểu qua để làm một số cái cơ bản thôi.
 
Từ đầu tôi đã nói không chuyên SQL Server thì cứ giao các công việc chỉnh đốn dữ liệu của nó cho Db Manager người ta làm.

Sợ tràn bảng thì tốt hơn hết bảo cái phần mềm ghi bảng nó làm thêm công việc xoá bớt dữ liệu cũ.
 
Từ đầu tôi đã nói không chuyên SQL Server thì cứ giao các công việc chỉnh đốn dữ liệu của nó cho Db Manager người ta làm.

Sợ tràn bảng thì tốt hơn hết bảo cái phần mềm ghi bảng nó làm thêm công việc xoá bớt dữ liệu cũ.
Em viết cái code trên phân mên cần đưa dữ liên database đây. Anh xem thêm giúp em lệnh xoá dữ liệu trong table bên sql server theo điều kiện thời gian với ạ. Thank!
Option Explicit
Function action
Dim objConnection
Dim strConnectionString
Dim strSQL
Dim objCommand


Dim mday
Dim NewTag_1
Dim NewTag
Dim Timer
Set Timer = HMIRuntime.Tags("timer")


mday =FormatDateTime(Now(),0)


Timer.Write mday


strConnectionString ="Driver={SQL Native Client};Server=HOANGHOA-PC\WINCC;Database=CC_fffff_14_01_13_16_22_29R;Trusted_Connection=yes;"


NewTag_1 = HMIRuntime.Tags("NewTag_1").Read
NewTag = HMIRuntime.Tags("NewTag").Read


strSQL = "INSERT INTO dbo.test (Date,Values1,Values2) VALUES ('"& mday & "' ,'"& NewTag & "' ,'" & NewTag_1 & "');"
Set objConnection = CreateObject("ADODB.Connection")
objConnection.ConnectionString = strConnectionString
objConnection.Open
Set objCommand = CreateObject("ADODB.Command")
With objCommand
.ActiveConnection = objConnection
.CommandText = strSQL
End With
objCommand.Execute
Set objCommand = Nothing
objConnection.Close
Set objConnection = Nothing
End Function
 
...
With objCommand

.ActiveConnection = objConnection
.CommandText = strSQL
End With
objCommand.Execute
' Xoá bớt dữ liệu - xoá những dòng lớn hơn 1 tháng tuổi
objConnection.Execute "DELETE FROM dbo.test WHERE 1 <= DateDiff(month,[Date],GetDate())"
' Xoá xong
Set objCommand = Nothing
objConnection.Close
Set objConnection = Nothing
...

Chú ý: đặt tên trường mà dùng những tên Date, Month, Year,... là rước hoạ vào thân
 
Web KT
Back
Top Bottom