Add-ins SQL VB6 cho Excel, Access Và SQL Server + TCPIP

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,773
Được thích
14,773
Điểm
1,910
Nơi ở
Tp.HCM
Vậy là 1 thời gian ngắn được sự chỉ thêm của @Nguyễn Duy Tuân , Anh @batman1 + HLMT Mạnh đã chuyển cái SQL từ VBA lên VB6 xong từ VB6 vào Delphi thành công ...

Úp lên đây tặng cho Bạn nào iU nó ... lấy dữ liệu File Excel + Access rất đơn giản chỉ việc tích chon ===> thế là xong
Thời gian tới nếu Rảnh Mạnh sẻ viết mấy phần còn lại và bổ sung thêm các tùy chọn nữa ... vui lòng chờ he
File chọn CSDL nên cho nằm phía trên, hoặc ẩn form kia đi, sau khi chọn xong cho hiện lên lại. Như vậy sẽ đở rối hơn.
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Mạnh viết lấy OK rồi có điều cái tạo SQL ấy nó ko biết lấy List TableName sao ... trên VBA + VB6 ok còn Delphi nó ko chịu cái chuỗi đó
cái chuỗi sau có cách gì viết khác không chỉ dùm Mạnh
Mã:
 sSQL = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES " & _
           "WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='" & Me.cboDatabaseName & "'"
hay là do xài TADOConnection.Create(nil)... nó Ứ chịu cái chuỗi đó ta ????
mà cái chuỗi đó chỉ xài cho
Mã:
cnn := CreateOleObject('ADODB.Connection');
mai mốt rảnh mò theo hướng đó xem sao
 

ongke0711

Thành viên tiêu biểu
Tham gia ngày
7 Tháng chín 2006
Bài viết
766
Được thích
881
Điểm
860
Nơi ở
HCM
Mã:
 sSQL = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES " & _
           "WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='" & Me.cboDatabaseName & "'"
Còn một yếu tố thực tế bạn nên nghĩ đến để test code là người quản trị Server có cho quyền bạn vô toàn bộ các Table không mà liệt kê Table để chọn. :)
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Còn một yếu tố thực tế bạn nên nghĩ đến để test code là người quản trị Server có cho quyền bạn vô toàn bộ các Table không mà liệt kê Table để chọn. :)
Mạnh lấy OK có nghĩa là vô ok chứ ... mà cái Server Mạnh ko hiểu lắm ... giờ mới mò tới
Thấy Bạn viết hay quá nên mới quyết tâm mò nó cho vào Addins Delphi đó
Suy cho cùng nếu viết thành công thì nó rất tiện ích cho ai đó truy xuất dữ liệu chỉ việc tích chọn ===> thế là xong
 

ongke0711

Thành viên tiêu biểu
Tham gia ngày
7 Tháng chín 2006
Bài viết
766
Được thích
881
Điểm
860
Nơi ở
HCM
Mạnh lấy OK có nghĩa là vô ok chứ ... mà cái Server Mạnh ko hiểu lắm ... giờ mới mò tới
Thấy Bạn viết hay quá nên mới quyết tâm mò nó cho vào Addins Delphi đó
Lần trước mình viết cho một trường hợp riêng của một bạn nên mới viết chạy được như vậy. Giờ bạn làm cái tool cho nhiều người dùng chung thì nên tính tới các trường hợp có thể xảy ra: người dùng bị phân quyền chỉ cho xem 1, 2 table, không truy cập được các table hệ thống v.v.. thì cái tool nên xử lý như thế nào cho phù hợp, không gây bối rối cho người dùng khi gặp các lỗi trên. Chỉ vậy thôi.
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Lần trước mình viết cho một trường hợp riêng của một bạn nên mới viết chạy được như vậy. Giờ bạn làm cái tool cho nhiều người dùng chung thì nên tính tới các trường hợp có thể xảy ra: người dùng bị phân quyền chỉ cho xem 1, 2 table, không truy cập được các table hệ thống v.v.. thì cái tool nên xử lý như thế nào cho phù hợp, không gây bối rối cho người dùng khi gặp các lỗi trên. Chỉ vậy thôi.
cái đó dễ à ... nếu gặp lỗi thoát và thông báo lỗi thế thôi
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
đã xong mai mốt test lại các kiểu xong Úp tặng cho ai Iu nó -0-0-0-
quậy code Delphi diết .... Trình Delphi của Mạnh lại tăng thêm một cấp code viết ngắn lại vài mét mà toàn xài hàm chung cho 2 cái SQL
cơ bản 2 cái như nhau chỉ khác nhau cái kết nối

1595841075595.png
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Mấy ngày nay mãi mê vui vẻ với Cái Google Sheet ... nay mới coi lại và làm tạm xong cái SQL Server Ms
Như Mạnh đã nói mấy bài trước nay úp Tặng cho ai iU Em nó cứ thế mà xài ... nếu có lỗi phát sinh thì mô tả lỗi + chụp hình báo lỗi úp lên đây dùm Mạnh là vui rồi

Nếu Bạn nào có yêu cầu gì thêm cứ nêu ra nếu Ok trong khả năng code của Mạnh thì Mạnh làm cho he

vậy là các Bạn có cái Add-ins mà có 2 cái SQL cơ bản rồi đó 1 cái cho Excel + Access và 1 cái cho Server Ms
lấy dữ liệu chỉ việc tích chọn thế là =========> xong ========= > rất đơn giản :p

1596290286935.png
 

File đính kèm

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Cái hàm sau check chọn Folder Anh @batman1 cho Năm ngoái giờ xem lại ứng dụng nó Tổng hợp File trong Folder với tích chọn
Giờ mới thấy giá trị của nó nè .... tìm mờ mắt trên Google ko thấy luôn
Cảm ơn Anh cho Em cái hàm hay

1596342886206.png
 

ongke0711

Thành viên tiêu biểu
Tham gia ngày
7 Tháng chín 2006
Bài viết
766
Được thích
881
Điểm
860
Nơi ở
HCM
Như Mạnh đã nói mấy bài trước nay úp Tặng cho ai iU Em nó cứ thế mà xài ... nếu có lỗi phát sinh thì mô tả lỗi + chụp hình báo lỗi úp lên đây dùm Mạnh là vui rồi
Gửi mấy cái hình lỗi lên cho vui nhé. :cool:

1. Cái tool hiện tại của bạn chỉ "tự động" lấy cái Database đầu tiên trong SQL Server chứ không lấy theo tên database nhập trên tool của bạn.
Cụ thể tôi muốn truy xuất Database "danhba" nhưng tool lại lấy database "abc" nằm đầu tiên trong danh sách database.

sql.png


2. Khi mở tool lên, chưa nhập tham số gì mà bấm nút [Kết nối] sẽ hiện ra cái list các Table của Database "master" của cái SQL Server (local) tôi đang cài trên máy.
Bấm [Lấy dữ liệu] thì báo lỗi như hình dưới.

Error2.png

error3.png

3. Khi chọn Table rồi mà chưa click chọn tên field nào trong listbox kế bên mà bấm nút [Lấy dữ liệu] sẽ bị lỗi như hình dưới.
Nó không mặc định lấy dữ liệu như câu lệnh SQL mà bạn cho hiển thị ở textbox bên dưới.

error4.png

4. Khi chọn một table có vài cột (field) thì không cần click chọn tên Field bên listbox -> chương trình vẫn chạy trả về dữ liệu. Nhưng sau đó khi bấm chọn qua Table khác có hơn 10 field là báo lỗi như hình dưới đây.

Screen Shot 2020-08-03 at 12.57.51 PM.png


5. Hiện thông báo bên dưới Userform (do lỡ tay kéo userform ra giữa màn hình) là chịu chết, không đọc được nó khuyến cáo nên làm gì chỉ có cách bấm Tab đại cho con trỏ nó tự di chuyển trên cái message box đó rồi bấm Enter để nó thoát tình trạng Popup Dialog.

Screen Shot 2020-08-03 at 12.49.17 PM.png


6. Đặc biệt là các báo lỗi trên đều gây treo máy, chứ không tự giải phóng, trả lại hiện trạng ban đầu.
7. Con trỏ chuột có lúc mất kiểm soát, tự nhảy qua lại giữa Userform và Sheet. Đang gõ pass trên userform thì nó nhảy vô một cell nào đó trên sheet.
8. Che dùm cái textbox nhập Password nhé.
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
1/ cái mục này đã biết tại sao ... xử lý sau tạm thời chỉ lấy cái Database đầu tiên trong SQL Server :p
2/ cái mục này cũng chưa biết xử lý sao .... ghi nhớ đó làm sau
3/ cái mục này mạnh cho thế nếu ko chọn cột nào thì mặc định nó lấy hết theo SQL trên Form .. còn lỗi sao máy mạnh thấy Ok mà
xem lại sau
4/ có thể thao tác trước lỗi thoát ra làm lại xem sao dùm !!! ... xem lại sau
5/ cái đó do Excel nó ngăn cản chuột ... trên cái SQL Excel + Access mạnh làm trên TEdit thì ok ... qua SQL Server cho lên LabeoEdit thì bị cái đó
trên máy mạnh cũng thế ( cái này sửa sau chắc Ok thôi)
6/ cái này do tạo duy trì kết nối chạy đa luồng khi kết nối tới Server lỗi đó chưa tìm ra cách xử lý
7/ cái này mạnh biết như mục số 5
8/ cái này chuyện nhỏ ... căn bản chạy và fix lỗi xong sẻ tính cái đó ( cho tùy chọn Show pass Or Pass hoa thị hay mã hóa pass)
......

ý tưởng làm thêm như sau vì thấy mỗi lần đăng nhập khai báo mất công quá đi

1/ Khi đăng nhập lần đầu sẻ có 1 cái checkbox tùy chọn lưu Pass + IP + Use ... lại
2/ khi đăng nhập lại lần thứ 2 nó sẻ lấy cái cái thông tin mục số 1 tự động điền vào chỉ việc nhấn nút là xong
3/ nếu thay đổi thông tin đăng nhập thì chọn checkbox xong khai báo mới lại thì nó sẻ update lại luôn
.....
...........
1/ Lưu thông tin đăng nhập lần đầu vào Registry ???
2/ Lưu ra 1 cái File x nào đó trên máy ????
3/ Tùy chọn lưu ra 1 file x nào đó do người dùng chọn dường dẫn lưu ( cái này lại phát sinh thêm là khi đăng nhập lại chọn lại file đó )
4/ Pass + IP sẻ mã hóa hết

Các Bạn tham gia cho ý kiếm bổ sung thêm và nên làm như thế nào và ko nên làm ???

Xin cảm ơn
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Ối dào cái mục che cái pass kia làm cho nó thành ngôi sao tưởng khó mà dễ như ăn kẹo mút :p
Ngày nay khi nào rảnh mò 1 chút cuối cùng cũng bắt trước xong cái Mục lưu password lần đầu đăng nhập Server như Anh Google
lần thứ 2 trở đi là nó tự điền vào .... Lưu vào files x trên máy luôn xong cho nó ẩn luôn đi ... mò hết trên máy là ra thôi nhưng cái Pass đã mã hóa rùi vãi lắm ... giải mã ra cũng nhọc đấy -0-0-0-

Mục Lưu CSDL là lưu pass + đấy... nếu check là nó lưu luôn lần sau khỏi khai báo cứ thế bay vào Server cái vèo
( tại cái tật làm biếng nên nghỉ ra trò mà chơi cho nó vui vẻ vậy )

Untitled.png
 

ongke0711

Thành viên tiêu biểu
Tham gia ngày
7 Tháng chín 2006
Bài viết
766
Được thích
881
Điểm
860
Nơi ở
HCM
Mục Lưu CSDL là lưu pass + đấy... nếu check là nó lưu luôn lần sau khỏi khai báo cứ thế bay vào Server cái vèo
( tại cái tật làm biếng nên nghỉ ra trò mà chơi cho nó vui vẻ vậy )
Tham khảo thêm nè bác. Góp ý là dùng từ cho rõ nghĩa chút chứ bạn ghi "lưu CSDL" lại nghĩ là backup CSDL ra chỗ khác.

Screen Shot 2020-08-04 at 10.07.00 PM.png

Screen Shot 2020-08-04 at 10.13.38 PM.png
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Tham khảo thêm nè bác. Góp ý là dùng từ cho rõ nghĩa chút chứ bạn ghi "lưu CSDL" lại nghĩ là backup CSDL ra chỗ khác.

View attachment 242387

View attachment 242388
Mạnh ghi nhận sự tham gia đóng góp chân thành và nhiệt tình của Bạn ... sẻ điều chỉnh sau

Có cái Form = cái bàn tay vẻ đủ thứ lên đó mà viết : dùng Files INI chứa thông số kết nối .... dài quá ko còn chỗ ghi ( Tính sau )

Cái quan trọng hàng đầu là:
1/ chạy code ok
2/ Fix lỗi code
3/ Tinh chỉnh code ... Fix các code thừa + tăng tốc cho nó xử lý nhanh chút
4/ thêm các tùy chọn khác vvv
5/ hoàn thiện trang trí màu mè câu từ hoa lá vvv
....
Còn phê lắm ... rảnh nghiên cứu viết chơi thôi mà có làm gì mà vội với vàng cơ chứ
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
:p
Rảnh mới viết thêm như sau ( Mọi thứ lỗi vẫn như mô tả của bài 53 và trả lởi bài 54 ... thong thả Mạnh fix sau )
1/ Thêm tự động lưu thông tin đăng nhập lần đầu tới Server ( lần sau là nó tự điền luôn ... Lưu ý chọn cái Checkbox đó dùm )
2/ Thêm cái List Database Server ... cái này ko biết nó lấy có chính xác không nữa ...????!!!!
....
....
cái con đường code két nhọc quá cứ mò hoài rồi có ngày nó sẻ ra thôi
Nhờ các bạn test dùm Xin cảm ơn

ListDatabase.PNG
 

File đính kèm

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Khó khăn quá mò không ra mới hỏi tây nó chỉ cho xong ... vậy cơ bản cái SQL Server của Mạnh đang hoàn thiện :p
Lưu tấm hình hỏi Tây lên đây và cũng là chia sẻ cho thế hệ sau ai đam mê code trên Delphi xài khi cần đến
111.PNG
22.PNG
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,272
Được thích
2,974
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
lâu này à ơi làm biếng quá .... mới ngó viết thêm 1 tẹo Úp cho Bạn nào đó iu thì xài thử ... SQL Server chưa có hoàn thiện nó còn lỗi và chỉnh sửa nhiều
Ngay Cả Bill viết bộ Office mấy chục năm còn sai tè le ấy chứ là Mạnh he -0-0-0-
Thêm List Database trên Server lấy nó lên xong iU cái nào chọn cái đó là xong

SQL.PNG
 

File đính kèm

Top Bottom