Tạo ứng dụng Client - Server đơn giản trong Access

suynghidi

Thèm một số thứ!
Hội viên mới
Bài viết này nhằm giải thích cho nhu cầu của tinhocvp1120

tinhocvp1120 nói:
Các bác giúp em vấn đề này nhé. Sau khi em viết ứng dụng quản lý học sinh bằng Access xong . Bi giờ em mới nhìn lại phần Backup dữ liệu và Import dữ liệu thì em chịu không bít phỉa sử lý sao cả.
Trong XSDL của em có các Table sau
DSHS(Stt,Hodem,ten,ngaysinh,gioitinh...)
Baomat(Manhanvien,matkhau..)
Em muốn hỏi các bác chỉ giúp em phần code để:
- Backup dữ liệu
- Import dữ liệu từ file Backup hoặc từ nguồn khác ...
Giúp dỡ em nhé
Cảm ơn các bác.

Và nói thêm về cách sử dụng Winrrar để tạo bộ cài đặt cho các ứng dụng Access.

Chi tiết bài viết:

Theo SND thì cách làm cũng không khó lắm. SND đã làm rồi. Chương trình chạy kiểu Client - Server theo cách đơn giản!!!. Database nằm riêng, ứng dụng (form, report, Module, Query) nằm riêng.
Mô hình bạn làm như thế này nhé:
1/ Thiết kế Database xong, ví dụ XSDL_Sever.mdb, bạn lưu tại máy Server (ip là 192.168.1.65 - tên máy SND - có thể là chính máy bạn lun, tùy bạn): Thư mục ví dụ như sau: D:-/IT4DKT\Duan1\XSDL_Server.mdb. sau đó bạn share thư mục IT4DKT này.
2/ Rồi vào máy Client (hoặc chính máy bạn), start\Run\ gõ \\192.168.1.65...(Ip hoặc tên máy chủ Database) ---> Kích chuột phải vào thư mục IT4DKT đã được Share trước đó (nó sẽ hiện ra vì đã share) ----> chọn Map để map một ổ đĩa mới tại máy Client, đặt tên ổ đĩa này là T.
3/ Bạn tạo một ứng dụng Client, file access mdb rỗng (hoặc dùng chính ứng dụng bạn đã viết, tại máy bạn (cũng có thể là chính máy Server nếu bạn đang trong quá trình viết ứng dụng), đặt tên là XSDL_Client.mdb (đặt vào thư mục nào bạn dễ quản lý).
4/ Trong XSDL_Client.mdb này. Bạn xóa tất cả các table đã tạo (nhớ là phải chép một bản lưu với tên XSDL_Server.mdb trứoc đó nhé). Rồi, bạn vào menu access, chọn File/Get External Data/Link table nhé, chọn ổ T đã có trước đó, chọn Thư mục Duan1, chọn fie XSDL_Server.mdb. Rồi, chọn hết tất cả các Table có trong XSDL-Server.mdb để Liên kết Table vào.
5/ OK, bạn thử chạy ứng dụng (từ menu..v..v bạn đã viết). Mọi thứ sẽ Ok.
6/ Bây giờ việc backup dữ liệu sẽ đơn giản rất nhiều, theo cách behatieu cũng được.
Đây là dòng lệnh mình hay dùng để backup
FileCopy CurrentProject.Path & "\data\data.mdb", CurrentProject.Path & "\backup\data" & Format(Date, "dd_mm_yyyy") & ".mdb"
Hoặc chỉ cần chọn file XSDL_Server.mdb nén lại với tên có ghi ngày tháng năm để nhận biết. Khi cần thì bung ra thôi để Restore dữ liệu đã Backup.

7/ Việc nâng cấp và Install ứng dụng cũng rất đơn giản, sau khi bạn viết hoàn thiện lần đầu có thể đặt tên là XSDL_Client_Version1.mdb. Bạn dùng Winrar để nén lại, Chọn kiểu nén tự bung (thành File Exe, có tùy chọn cài đặt vào chỗ nào, các ghi chú...sẽ giải thích cái này cho bạn sau). Như vậy bạn đã có một bản cài đặt cho Client OK. Sau này nâng cấp phiên bản, bạn cũng làm như thế, nhớ lưu Version để khi cần có thể quay lại.
8/ Khi muốn cài đặt cho các máy client tại máy Client nào đó (trong mạng LAN, có thể có Domain tùy cơ quan bạn) thì chỉ cần làm 2 bước: Map ổ T và chạy file Install XSDL_Client_Version1.exe ---> Khi đó sẽ có biểu tượng ứng dụng trên Desktop máy Client. Kích chạy thôi.
Chúc bạn thành công! :cheers1:.

Mọi vướng mắc có thể trao đổi chi tiết để hoàn thiện cách làm trên ngay tại Topic này hoặc trao đổi tại Shoutbox của hội IT4DKT .
en cơm thôi...
 
Sửa lần cuối:
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Làm theo cách trên cũng được nhưng hơi dài, việc cho access chạy trong mạng Lan là bất đắt dĩ, vì chạy rất chậm.
- Sau khi tạo được một chương trình Access bạn tách CSDL thành hai phần bằng cách vào Menu Tool\Database Utilities\Database Splitter.
- Phần chứa Table đặt trên máy chủ hoặc bất kỳ máy nào bạn muốn.
- Phần chứa Forms, Query, report ... đặt trên máy trạm
- Nhớ là Phần chứa Tabe phải được share trong mạng Lan
- Tại máy trạm bạn chạy chương trình và làm như sau:
+ Vào menu Tool\Database Utilities\Linked table Manager
+ Tìm đến thư mục chứa phần Table đã chia sẻ chọn CSDL này.
- Chờ hệ thống thiết lập.
_ Bây giờ thì OK.
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Làm theo cách trên cũng được nhưng hơi dài, việc cho access chạy trong mạng Lan là bất đắt dĩ, vì chạy rất chậm.
- Sau khi tạo được một chương trình Access bạn tách CSDL thành hai phần bằng cách vào Menu Tool\Database Utilities\Database Splitter.
- Phần chứa Table đặt trên máy chủ hoặc bất kỳ máy nào bạn muốn.
- Phần chứa Forms, Query, report ... đặt trên máy trạm
- Nhớ là Phần chứa Tabe phải được share trong mạng Lan
- Tại máy trạm bạn chạy chương trình và làm như sau:
+ Vào menu Tool\Database Utilities\Linked table Manager
+ Tìm đến thư mục chứa phần Table đã chia sẻ chọn CSDL này.
- Chờ hệ thống thiết lập.
_ Bây giờ thì OK.

Nói ngắn gọn thì mình đỡ mệt chút!, nhưng khó cho người đọc, đằng nào cũng viết bài hướng dẫn rồi thì mình viết chi tiết để anh chị em dễ tiếp cận.
@Trung: Làm như cách của Trung thì khi nâng cấp phần ứng dụng ở Client thì có chạy OK không? có làm thêm bước gì nữa không? với mỗi máy trạm thì ta phải làm cái link table chứ k dùng bản cài đặt cho Client à? SND thấy làm bản cài đặt vẫn hay mà? Trao đổi thêm nhé :cheers1:
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Anh SND tiếp tục bài của anh đi, bài của anh nào nghe cũng hay ah, bọn em nghe nhiều cho biết nhiều. Việc nào hay hay thích hợp thì bọn em dùng.
Thế thôi.
Ah quên: Mạng LAN chậm thì có cách nào giải quyết cho nhanh hơn được ko ah? thay cab, đấu chéo hay kế nối qua HUB (Sw) cái nào hay hơn khi tạo Sev = Cli vậy anh?
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Mạng LAN mà than chậm nữa thì mạng nào nhanh?
Chỉ có trên cùng 1 máy thì nhanh thôi.

Nên phát triển theo dạng server giống như internet vậy chứ đừng "share" như mạng LAN.
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Mạng LAN mà than chậm nữa thì mạng nào nhanh?
Chỉ có trên cùng 1 máy thì nhanh thôi.

Nên phát triển theo dạng server giống như internet vậy chứ đừng "share" như mạng LAN.

Ngay từ đầu em nói: Mô hình ứng dụng Access Client - Server đơn giản. "Share" có nhiều cái dở, đúng thật. Còn chuyện nghiệp thì chắc phải theo mô hình SQL Server - làm Database Server. Trong tương lai em cũng muốn chuyển đổi các ứng dụng đã viết theo hướng này, hiện tại còn busy quá, chưa lên lịch được. Lúc đó phải nhờ anh em tư vấn thêm để tiết kiệm time nghiên cứu.
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Thế ah. Vậy làm them mô hình như anh Muontennguoi nói có khó không ah? Phải bắt đầu từ học SQL ah anh?
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Thế ah. Vậy làm them mô hình như anh Muontennguoi nói có khó không ah? Phải bắt đầu từ học SQL ah anh?

Tùy quan niệm cũng như mục tiêu của em thôi: Nếu như mục tiêu của em là làm những ứng dụng lớn, chuyên nghiệp thì cần bỏ nhiều time để nghiên cứu và làm chủ SQL Server (or Oracle) - Access. Ngược lại nếu muốn giải quyết những nhu cầu nhỏ (thế nào là lớn, là nhỏ ? --> phụ thuộc vào trình độ, kinh nghiệm mỗi người!!!), trong thời gian ngắn có thể tạo được ứng dụng cho riêng mình thì không nhất thiết phải học xong SQL Sv - Access. Em có thể kết hợp cả 2 song song nếu em có nhiều time dành cho nghiên cứu Access.

Còn về việc học lập trình, thì theo SND có nhiều con đường để đến đích, tùy vào nền tảng em có thôi?
Lý thuyết:
--> Nền tảng về phân tích thiết kế hệ thống, ứng dụng công cụ hỗ trợ(ví dụ Usercase) ?
--> Hiểu về Cơ sở dữ liệu quan hệ?, SQL, hiểu về các phần mềm flatform (Oracle, SQL Server, Access, MySQL,..)?
--->Phân tích thiết kế giải thuật (để viết các Module)?
---> Ngôn ngữ lập trình mà em am hiểu nhất: VB, VBA, delphi, visual C,..php, asp (lập trình web), ...
---> Các kiến thức hỗ trợ khác + công cụ: Design, mỹ thuật...

Thực hành:
Trường hợp A: Có người không học trường lớp, nhưng có niềm đam mê --> tự học. Đa số họ chọn con đường là ngâm cứu các Sample, chắp vá các Module hay tham khảo được --> vẫn tạo ra được ứng dụng phục vụ cho mình (lúc đó thấy sướng!!), cái này giống như một người dân quê, không bản đồ đến cư ngụ ở thành phố lạ, ngày nào cũng đi bán vé số (ví dụ vậy), đi cùng các con đường ngõ hẽm...sau vài năm họ cũng có một bản đồ (trong đầu) của mình.
Trường hợp B: Được đào tạo bài bản từ lý thuyết đến thực hành. Nói chung họ có cái nhìn tổng quan và cũng cụ thể các việc phải làm, trình tự phải làm khi đứng trước một ý tưởng, một dự án đặt ra (một số người năng lực coding có thể không bằng công nhân IT ở trường hợp A)
Trường hợp C: Phối hợp cả A & B --> tạo ra những Lập trình viên chuyên nghiệp!!!

Nói chung, theo SND, kinh nghiệm, kỹ năng phát triển phần mềm của em tiến bộ nhanh hay chậm là nó cũng "có số" đấy (40%)!. Đó là môi trường IT - Lập trình mà em sống trong đó. Ví dụ, có thể tham gia nhóm Access với nhiều người giỏi trong DKT--> đó cũng là cái số (hên xui chưa bít :smilielol5:). Còn lại 60% là do bạn (Thông minh bẩm sinh!, tinh thần tự học, khả năng truyền thông giao tiếp (cái này cũng quan trọng à, nếu những chuyên gia không thích tính cách của bạn --> có thể họ giúp bạn không nhiệt tình --> chậm cho bạn)).
Phù, viết nhiều quá, chắc cũng có chỗ dở rồi...:sweatdrop:
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Thế ah. Vậy làm them mô hình như anh Muontennguoi nói có khó không ah? Phải bắt đầu từ học SQL ah anh?

Không khó. Mọi việc vẫn u như kỹ.

Nó chỉ khác là thay vì hệ điều hành trên máy của bạn đọc và hiểu data thì bây giờ ta tách việc đó giao cho máy chủ.
Như vậy ta chỉ cần máy chủ cài driver cho loại CSDL đó thay vì các máy con đều phải cài như cách share file trên mạng LAN.
Vì cách share file thì nó chỉ share file thôi còn đọc và hiểu cấu trúc dữ liệu là do có cài driver trên từng máy con hay không.

Với cách phục vụ server thì ta có thuận lợi là chỉ cần máy server cài driver cho các loại CSDL khác nhau (Access, SQL server, MySQL, dBase, Foxpro, Excel...) là các máy con đều có thể khai thác được.
Nghĩa là các ứng dụng khác nhau có thể gộp chung lại.
Giả sử Phần Kế Toán thì dùng CSDL Foxpro còn phần Quản lý nhân sự thì dùng CSDL Access.
Nay nếu dùng server thì trong QLNS ta viết tiếp phần Kế toán và lấy dữ liệu cũ đã có từ Foxpro đưa vào form ...

Nó mở rộng khả năng khai thác dữ liệu đầu cuối.
Như vậy data bạn muốn lập bằng SQL server hay bằng Access đều được cả, không ảnh hưởng đến phần giao diện người dùng cuối.
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Anh ơi em ngốc lắm, nghe khó hiểu quá. Từ driver cho CSDL nghĩa là gì vậy anh?
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Anh ơi em ngốc lắm, nghe khó hiểu quá. Từ driver cho CSDL nghĩa là gì vậy anh?

Đại khái nó là cái để đọc và hiểu nội dung của 1 file.
Tương tự như lấy Excel mở đọc 1 file Word thì nó đâu có hiểu.
Muốn đọc được thì phải cài phần mềm Word vào máy và khi đó PM đó cũng tự động cài driver của nó vào máy.
Access hay SQL hay Foxpro cũng thế. Khi cài các phần mềm đó vào máy thì nó cũng đã tự cài driver cả nó vào máy.
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Anh ơi em hiểu thế này nha: Trên máy chủ em cài MS Access, còn các máy khác em ko cài. Nhưng làm cách nào để các máy trạm kia đọc được file.mdb trên máy chủ? Mà em không share thì phải làm thế nào để các máy trạm kia tìm đến được file.mdb trên máy chủ?
Em biết là làm anh rất mệt mỏi, nhưng anh ơi giúp em nhé, giúp dân kế toán bọ em hiểu biết nhiều hơn anh ah. Cảm ơn anh!
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Thân gửi anh Muontennguoi, em thấy anh tienduyet nói cũng đúng đó, anh chỉ bảo cho em, cho bọn em cách làm như thế nhé, chứ làm theo hình thức mạng LAN nghe chừng có vẻ chậm (như em tham khảo ở những phần viết của các anh ở trên).
Anh Muontennguoi giup em và các đồng môn trên danketoan.com nhé!
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Không cài access thì làm sao chạy được file access cơ chứ. Theo mình biết có bộ runtime đi cùng thì cũng không phải cài access vì nó tạo 1 môi trường giống access cho các file access chạy. Ngoài ra nếu không muốn thì viết bằng VB hay 1 ngôn ngữ khác để biên dịch ra exe cũng được.
Còn chuyện không share thì trong kết nối có khai báo thông số về maý chủ, password, user, đường dẫn rồi cứ khai báo đúng là kết nối thôi
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

LAN là mạng nội bộ, các máy gần nhau, chế độ kiểm duyệt cũng đơn giản hơn là Internet ...
Như vậy mà còn chê LAN chậm thì không biết làm sao.
Vấn đề tôi nói chỉ là ý tưởng khi thiết kế thôi.
Ta phân chia ra rõ ràng: data nằm riêng, ứng dụng nằm riêng.
Chỉ là phân đoạn ra trong suy nghĩ thôi, còn thao tác thì vẫn y như cũ.

Với 1 tổ chức lớn, có nhiều máy thì người ta tổ chức server vì khi đó có thể tập trung tài chánh để sắm 1 cái server cực mạnh.
Do đó nó chạy nhanh hơn.
Nhanh là nhờ tiền nhiều thế thôi.

Nếu tổ chức server-cleint thì phải cài hệ điều hành server.

Nhưng hiện nay bạn chưa có server.
Thì vẫn làm như cũ.
Nhưng điều tôi nhắc là: sẵn sàng tư duy để nâng lên thành server-cleint.
Như vậy đừng hướng ứng dụng của mình đến chuyện làm thành bộ install trên máy đơn ...
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Em hiểu rồi, tạm thời thì em cứ share file Sever kia ra (file Sever chỉ có bảng), và trên các máy cleint thì có form, query, report, module,...
Để rồi mai kia em nâng nên thành máy Sever. Nhưng anh ơi chắc là khi share thì phải chọn Allow network...... thì máy cleint mới thêm nếm được vào file sever anh nhỉ.
 
Sửa lần cuối:
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Như vậy cũng chưa gọi là server-cleint.
Bởi vì data là Access. Nó vẫn là share. Hãy thử làm data bằng SQL để hình dung thêm chút nữa.
Rồi sau đó sẽ bước thêm bước nữa để làm server-cleint.

Như vậy, nếu tách Access thành 2 phần thì tự nhiên ta sẽ nghĩ là phải lấy data từ đâu đó mà mang về làm.
Rồi về sau sẽ tính tiếp: cái gì sẽ nằm trên server? Liệu rằng cả report, query form ... đều nằm trên server cả thì có được chăng?

Và rồi cuối cùng ta sẽ .... vứt Access qua một bên mà dùng ngôn ngữ khác để làm !!!
Cái gì sẽ còn lại sau rốt? - Data.
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Như vậy cũng chưa gọi là server-cleint.
Bởi vì data là Access. Nó vẫn là share. Hãy thử làm data bằng SQL để hình dung thêm chút nữa.
Rồi sau đó sẽ bước thêm bước nữa để làm server-cleint.

Như vậy, nếu tách Access thành 2 phần thì tự nhiên ta sẽ nghĩ là phải lấy data từ đâu đó mà mang về làm.
Rồi về sau sẽ tính tiếp: cái gì sẽ nằm trên server? Liệu rằng cả report, query form ... đều nằm trên server cả thì có được chăng?

Và rồi cuối cùng ta sẽ .... vứt Access qua một bên mà dùng ngôn ngữ khác để làm !!!
Cái gì sẽ còn lại sau rốt? - Data.

Tổng hợp các bài viết của anh ---> 1/ Vẫn duy trì và update các ứng dụng hiện tại để đáp ứng nhu cầu công việc đang dùng ---> 2/ Đồng thời song song phát triển ứng dụng theo mô hình S-C đúng nghĩa như anh nói. SQL - Access (--> VB, Delphi..). Khi nào xong em mời anh :cheers1: Thanks anh!
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Về các chương trình quản lý cơ sở dữ liệu thông thường được chia làm 1 mảng: dữ liệu và giao diện quản lý, thao tác đến dữ liệu (nói nôm na như vậy, từ chuyên môn tiếng Anh không biết):hysterical:
Dữ liệu: Có nhiều công cụ để lưu trữ dữ liệu(SQL, SQLserver, access,...)
Giao diện : Có nhiều công cụ để tạo giao diện can thiệp vào dữ liệu (Visual basic, access, Delphi, C...."
Như trên ta thấy access có cả phần tạo dữ liệu, vừa có thể thao tác xử lý dữ liệu nên sài luôn cho tiện. Tuy nhiên theo khuyến cáo access chỉ phù hợp cho dữ liệu vừa và nhỏ...Anh em thấy tiện cái nào thì sài cái đấy thôi
 
Ðề: Tạo ứng dụng Client - Server đơn giản trong Access

Hic làm client - server access với cách này cho doanh nghiệp vừa và nhỏ quá OK rồi. Không cần phải ngước nhìn lên mấy nữa.
Tìm hoài giờ mới thấy, không ngờ nó đơn giản quá thể.

Vấn đề của mình là khi click vào nút Hoá đơn mới để tạo Hoá đơn mới thì MAQL trong bảng HDmain hoặc TCmain sẻ tăng lên 1.
(Ghi chú: theo module viết sẵn nếu click nút Hoá đơn mới thì "nếu MAQL là null thì = 1, ngược lại thì = số hiện tại +1")
(ghi chú: MAQL là mã có khoá tại HDmain và link 1-n với MAQL của HDsub).

Nếu anh Kinh doanh click vào nút tạo hoá đơn mới để xuất bán hàng và Anh thủ kho cũng click như thế để xuất NVL và nhập dở dang thành phẩm,... thì nó có bị trùng và lỗi không?

Và xử lý các thuộc tính để phân quyền xoá, sửa, thêm mới,... có dễ như thế không?

Rất mong chỉ giúp!
 
Sửa lần cuối:

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top