-
RE: Làm thế nào để dùng SQL trong lập trình?
Minh Tiên > 02-11-16, 12:20 PM
Chào Ngọc (paausteilgel) !
Tiên dùng đoạn code sau của Ngọc
Trích dẫn:INSERT INTO tblTest ( Mahang, Tenhang, Donvitinh, Nhomhang, Dongiabanle ) IN 'E:\Users\Paulsteigel\Desktop\gpE\qbNHNhan\test.mdb'
chạy rất nhanh.
SELECT a.Mahang, a.Tenhang, a.Donvitinh, a.Nhomhang, 5 AS DGBL
FROM strTableNameTam AS a;
Cho Tiên hỏi nếu file test.mdb có Pass thì chuỗi kết nối như thế nào ?
Thanks nhiều ! -
RE: Làm thế nào để dùng SQL trong lập trình?
maidinhdan > 02-11-16, 11:08 PM
(02-11-16, 12:20 PM)Minh Tiên Đã viết: Chào Ngọc (paausteilgel) !
Tiên dùng đoạn code sau của Ngọc
Trích dẫn:INSERT INTO tblTest ( Mahang, Tenhang, Donvitinh, Nhomhang, Dongiabanle ) IN 'E:\Users\Paulsteigel\Desktop\gpE\qbNHNhan\test.mdb'
chạy rất nhanh.
SELECT a.Mahang, a.Tenhang, a.Donvitinh, a.Nhomhang, 5 AS DGBL
FROM strTableNameTam AS a;
Cho Tiên hỏi nếu file test.mdb có Pass thì chuỗi kết nối như thế nào ?
Thanks nhiều !
Ít thấy anh Ngọc online mình xin trả lời thay
Tiên xem lại bài số 1 của anh Ngọc có 1 đoạn:
Trích dẫn:
Mã PHP:' Khoi tao ket noi voi CSDL
Property Get ConnectDatabase(dpPath As String, Optional ConnectAsADODB As Boolean = True) As Object
Dim dbs As Object
On Error GoTo ErrHandler
If ConnectAsADODB Then
Set dbs = CreateObject("ADODB.Connection")
dbs.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dpPath & ";"
Thay đoạn dbs.Open... bằng:
Mã PHP:dbs.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & linkData & "\Test1.mdb;Jet OLEDB:Database Password=maidinhdan;"
Trong đó:
+ linkData: là đường dẫn ví dụ là D: => file Test1 đầy đủ là D:\Test1.mdb
+ maidinhdan: là pass để mở file Test1
Hết -
RE: Làm thế nào để dùng SQL trong lập trình?
Minh Tiên > 04-11-16, 03:24 PM
Sau một thời gian tìm tòi, Tiên đã làm được. Đoạn code đơn giản ko phức tạp như Dân nói.
Cụ thể:
Trong đó:Mã:Dim sql as string
sql = "INSERT INTO [;DATABASE=E:\Thunghiem\Apend\FileNguon_WithPass.accdb;PWD=a1].TableName_Dich SELECT * FROM table_Nguon;"
CurrentDb.Execute sql
- E:\Thunghiem\Apend\FileNguon_WithPass.accdb là Tên đường dẫn và File
- a1 là Password
-TableName_Dich là tên table đích được ghi dữ liệu vào;
- table_Nguon là table nguồn lấy dữ liệu.
Insert rất nhanh và OK !
Xin chia sẻ.
Thân./. -
RE: Làm thế nào để dùng SQL trong lập trình?
maidinhdan > 04-11-16, 05:07 PM
(04-11-16, 03:24 PM)Minh Tiên Đã viết: Sau một thời gian tìm tòi, Tiên đã làm được. Đoạn code đơn giản ko phức tạp như Dân nói.
Cụ thể:
Trong đó:Mã:Dim sql as string
sql = "INSERT INTO [;DATABASE=E:\Thunghiem\Apend\FileNguon_WithPass.accdb;PWD=a1].TableName_Dich SELECT * FROM table_Nguon;"
CurrentDb.Execute sql
- E:\Thunghiem\Apend\FileNguon_WithPass.accdb là Tên đường dẫn và File
- a1 là Password
-TableName_Dich là tên table đích được ghi dữ liệu vào;
- table_Nguon là table nguồn lấy dữ liệu.
Insert rất nhanh và OK !
Xin chia sẻ.
Thân./.
Đó là đoạn code truy xuất thẳng. Vậy nó chẳng liên quan đến chủ đề ADO/DAO mà bác Ngọc đã khởi sướng.
Code này tạo trên query và ta có thể copy vào VBA mà dùng. ( như vậy chẳng cần phải biết DAO/ADO chi cho mệt) cứ dùng sql là xong hết hà. Cũng chẳng cần viết lệnh kết nối từ Access để truy xuất các database.
Còn đường tự bước vào Access của mình so với tiên ( Chắc mình kém Tiên 10 năm). Cho nên có lẽ giờ này tiên phải nhận ra rằng lợi ít của việc dùng ADO hay DAO và đi sâu nghiên cứu về lập trình hướng đối tượng chứ. Cứ lằn nhằn mãi mấy cú pháp này làm chi nửa.
=> Vài tháng nay dân đang nghiên cứu về lập trình hướng đối tượng trong VBA, VB, C, VB.Net và hệ thống tất cả hàm API và thông số của nó
Mục đích:
+ Xem sự khác biệt giữa các cú pháp triển khai
+ Tạo ra các đối tượng có thể dùng đi dùng lại
+ Tạo ra Add-in nhằm tự động tạo ra các đối tượng tự động và thường gặp/ lặp đi lặp lại nhất
+ Giúp diễn đàn có thêm 1 chuyên mục để cùng các bạn thảo luận
+ Làm vài video để cùng các bạn thảo luận về hướng đối tượng trên Access ( Mình tìm rất nhiều chỗ nhưng hầu như video về hướng đối tượng trên Access là không có) Sách có nhưng cũng rất ít.
* Từ lúc tham gia hỗ trợ các member mới mình thấy khả năng lập trình mình tiến bộ rất nhanh. Vì thế mình luôn tâm huyết về Diễn đàn này.
* Nhìu lời khó tả hết.... -
RE: Làm thế nào để dùng SQL trong lập trình?
Minh Tiên > 04-11-16, 05:49 PM
Thanks Dân !
Do Tiên thấy chủ đề: " Làm thế nào để dùng SQL trong lập trình?" của Pau rất hay.
Trong đó có đoạn code sql:
INSERT INTO tblTest ( Mahang, Tenhang, Donvitinh, Nhomhang, Dongiabanle ) IN 'E:\Users\Paulsteigel\Desktop\gpE\qbNHNhan\test.mdb'
SELECT a.Mahang, a.Tenhang, a.Donvitinh, a.Nhomhang, 5 AS DGBL
FROM strTableNameTam AS a;
nên Tiên mày mò để text thử -->Chọn phương án Insert dữ liệu nào tối ưu nhất --> Áp dụng bào PM của mình.
Đúng là đoạn code trên không liên quan gì đến chủ đề DAO hay ADO (Vì đều kết nối File được theo đường dẫn).
Đúng là Tiên đã tiếp cận Anh Access này khá lâu rồi nhưng do công việc thay đổi nhiều nên ko có thời gian nghiền ngẫm.
Đây chỉ là đam mê của bản thân ngoài công việc thường ngày.
Hơn nữa Tiên thấy nghiên cứu Lập trình giúp ích cho mình rất nhiều trong việc tư duy, suy luận, logic, ...
Bây giờ ngại nghiên cứu cái mớii lắm, vì đầu óc đã lão rồi ...
Rất mong chờ Seri bài "hướng dẫn về lập trình hướng đối tượng" của Dân.
Thân./. -
RE: Làm thế nào để dùng SQL trong lập trình?
haonlh > 04-08-20, 05:32 PM
Không hỏi thì không biết, mà hỏi thì cứ sợ ngu. Thôi "liều".
Với người mới bắt đầu với Access, có bắt buộc phải biết cả DAO và ADO, hay chỉ cần một cái, còn cái kia đọc sau. Khi đó cái đọc sau là cái gì (DAO hay ADO).
Cảm ơn -
RE: Làm thế nào để dùng SQL trong lập trình?
haonlh > 05-08-20, 11:13 AM
Nhờ đọc đoạn cuối của (maidinhdan) của
https://thuthuataccess.com/forum/thread-9259.html[url=https://thuthuataccess.com/forum/thread-9259.html][/url]
Bạn nên dùng cái nào?
Bạn có thể sử dụng DAO, ADO hoặc cả hai làm công nghệ giao diện cơ sở dữ liệu của bạn. DAO tiếp tục là công nghệ giao diện cơ sở dữ liệu mặc định trong Access.
Ví dụ: Tất cả các biểu mẫu, báo cáo và truy vấn Access sử dụng DAO. Nhưng khi di chuyển sang SQL Server, hãy cân nhắc đến việc sử dụng ADO để tăng tính hiệu quả cho giải pháp của bạn. Đây là các hướng dẫn chung để giúp bạn quyết định khi nào sử dụng DAO hoặc ADO.
Sử dụng DAO khi bạn muốn:- Tạo biểu mẫu đọc/viết, liên kết mà không cần sử dụng VBA.
- Các bảng cục bộ truy vấn.
- Tải dữ liệu xuống bảng tạm thời.
- Sử dụng truy vấn chuyển qua làm nguồn dữ liệu cho các báo cáo hoặc biểu mẫu trong chế độ chỉ đọc.
- Xác định và sử dụng đối tượng TableDef hoặc Querydef trong VBA.
- Tận dụng thêm các cách thức tối ưu hóa, chẳng hạn như thực hiện các thao tác không đồng bộ.
- Chạy các truy vấn chuyển qua DDL và DML.
- Truy nhập dữ liệu SQL Server trực tiếp thông qua recordsets trong VBA.
- Viết mã đơn giản hơn cho một số tác vụ nhất định, chẳng hạn như truyền các đối tượng lớn dưới dạng nhị phân.
- Gọi trực tiếp một thủ tục lưu sẵn bằng các tham số, sử dụng đối tượng lệnh trong VBA.
- Tạo biểu mẫu đọc/viết, liên kết mà không cần sử dụng VBA.
-
RE: Làm thế nào để dùng SQL trong lập trình?
ongke0711 > 05-08-20, 12:32 PM
(05-08-20, 11:13 AM)haonlh Đã viết: Nhờ đọc đoạn cuối của (maidinhdan) của
https://thuthuataccess.com/forum/thread-9259.html[url=https://thuthuataccess.com/forum/thread-9259.html][/url]
Bạn nên dùng cái nào?
Bạn có thể sử dụng DAO, ADO hoặc cả hai làm công nghệ giao diện cơ sở dữ liệu của bạn. DAO tiếp tục là công nghệ giao diện cơ sở dữ liệu mặc định trong Access.
Ví dụ: Tất cả các biểu mẫu, báo cáo và truy vấn Access sử dụng DAO. Nhưng khi di chuyển sang SQL Server, hãy cân nhắc đến việc sử dụng ADO để tăng tính hiệu quả cho giải pháp của bạn. Đây là các hướng dẫn chung để giúp bạn quyết định khi nào sử dụng DAO hoặc ADO.
Sử dụng DAO khi bạn muốn:- Tạo biểu mẫu đọc/viết, liên kết mà không cần sử dụng VBA.
- Các bảng cục bộ truy vấn.
- Tải dữ liệu xuống bảng tạm thời.
- Sử dụng truy vấn chuyển qua làm nguồn dữ liệu cho các báo cáo hoặc biểu mẫu trong chế độ chỉ đọc.
- Xác định và sử dụng đối tượng TableDef hoặc Querydef trong VBA.
- Tận dụng thêm các cách thức tối ưu hóa, chẳng hạn như thực hiện các thao tác không đồng bộ.
- Chạy các truy vấn chuyển qua DDL và DML.
- Truy nhập dữ liệu SQL Server trực tiếp thông qua recordsets trong VBA.
- Viết mã đơn giản hơn cho một số tác vụ nhất định, chẳng hạn như truyền các đối tượng lớn dưới dạng nhị phân.
- Gọi trực tiếp một thủ tục lưu sẵn bằng các tham số, sử dụng đối tượng lệnh trong VBA.
Thực ra từng cái chấm đầu dòng ở trên đều không còn nằm ở mức lập trình cơ bản nhé bạn. Và để nắm rõ nó thì tốt nhất bạn cứ lập trình dùng thư viện mặc định của Access là DAO. Thư viện này nó rất mạnh, bạn dư sức viết ứng dụng hoàn chỉnh với DAO.
DAO là thư viện gốc của bộ máy Jet Engine của Access, nó như trái tim của Access vậy nên Access sẽ chạy nhanh với thư viện này.
Bạn cũng cần biết thêm ADO ở mức cơ bản trước để có thể kết nối với các loại dữ liệu khác hỗ trợ cho ứng dụng Access của bạn như: import/export file text (CSV), xuất ra Excel/Word theo mẫu báo cáo v.v..
Sau này khi nâng cấp CSDL lên SQL Server hay mySQL thì bạn dùng 80% (ý kiến chủ quan) là thư viện ADO để tương tác với CSDL backend.
Nói chung là đây là 2 thư việc để hỗ trợ bạn trong việc lập trình ứng dụng, tuỳ theo công việc cụ thể để chọn công cụ phù hợp để tối ưu hoá tốc độ ứng dụng.
Đối với thư viện DAO, bạn lập trình nâng cao, cao cao luôn cũng được trên nền tảng Ms Access. - Tạo biểu mẫu đọc/viết, liên kết mà không cần sử dụng VBA.
-
RE: Làm thế nào để dùng SQL trong lập trình?
AnNguyen > 05-08-20, 12:45 PM
(05-08-20, 12:32 PM)ongke0711 Đã viết: .....
Mã:INSERT INTO tblTest ( Mahang, Tenhang, Donvitinh, Nhomhang, Dongiabanle ) IN 'E:\Users\Paulsteigel\Desktop\gpE\qbNHNhan\test.mdb'
SELECT a.Mahang, a.Tenhang, a.Donvitinh, a.Nhomhang, 5 AS DGBL
FROM strTableNameTam AS a;
nên Tiên mày mò để text thử -->Ch
Anh Bảo ơi có phải đoạn code này là để lấy dữ liệu từ sql sv rồi đổ vào 1 table local ở MS Access không ạ?
Em cũng làm thế nhưng toàn báo lỗi ạ. -
RE: Làm thế nào để dùng SQL trong lập trình?
ongke0711 > 05-08-20, 04:05 PM
(05-08-20, 12:45 PM)AnNguyen Đã viết:
Mã:INSERT INTO tblTest ( Mahang, Tenhang, Donvitinh, Nhomhang, Dongiabanle ) IN 'E:\Users\Paulsteigel\Desktop\gpE\qbNHNhan\test.mdb'
SELECT a.Mahang, a.Tenhang, a.Donvitinh, a.Nhomhang, 5 AS DGBL
FROM strTableNameTam AS a;
nên Tiên mày mò để text thử -->Ch
Anh Bảo ơi có phải đoạn code này là để lấy dữ liệu từ sql sv rồi đổ vào 1 table local ở MS Access không ạ?
Em cũng làm thế nhưng toàn báo lỗi ạ.
INSERT INTO thì đúng là Insert vào Local Table rồi đó nhưng còn cái "SELECT...FROM..." thì cũng phải FROM local table chứ không thể từ ADO Recordset (Recordset lưu trên bộ nhớ) được.
ADO Recordset chỉ có thể tương tác thông qua:
- rs!TenField (hoặc rs.Fields("Ten field"))
- Đưa toàn bộ ADO recordset vào mảng rồi duyệt mảng, truyền vào câu lệnh SQL "INSERT INTO..."
- Dùng Update Batch như bạn maidinhdan có làm file demo rồi đó.