• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Một vấn đề trong Access

Nơi trao đổi về VBA (Visual Basic for Application), lập trình cho ứng dụng Microsoft Office, AutoCAD...

Moderator: tungblt

Pherotao
Thành viên chính thức
Thành viên chính thức
Posts: 18
Joined: Tue 29/12/2009 1:57 pm
Contact:

Một vấn đề trong Access

Postby Pherotao » Sat 16/01/2010 5:35 pm

Tôi có một chương trình Access về qlí Giáo dân có CSDL như sau:
- Table1: T_Giáo Dân (MaGD, Hoten, Gioitinh, Ngay Sinh, HtenCha, HtenMe, MaSoGD).
- Table2: T_Hôn Nhân (MaSoGD, MaGDNam, HtenChaNam, HtenMeNam, MaGDNu, HtenChaNu, HtenMeNu, NgayKetHon).
+ Form1: F_GD (nguồn Table1).
+ Form2: F_HonNhan (nguồn Table2).
Trong đó, Table2 với các trường MaGDNam, MaGDNu lấy nguồn từ MaGD của Table1.
Ban đầu, vì theo chương trình thiết kế, ta phải nhập dữ liệu Form1 trước (vì như vậy thì Form2 mới có nguồn mà làm việc được). Lúc này, các Giáo dân (già trẻ lớn bé) đều chưa kết hôn, nên MaSoGD của Table1 bị trống. Và như vậy, nếu muốn kiểm tra xem trong Table1 có bao nhiêu gia đình thì thật là khổ sở. Vì mỗi gia đình có thể có 2-3 người hoặc nhiều hơn.
Cho nên, xin các bác chỉ giáo giùm là làm sao để có 1 MaSoGD tạm thời (số này trùng nhau khi là thành viên trong cùng gia đình, và ngược lại).
VD: Lê văn C --> con ông Lê văn A , con bà Nguyễn thị B
Lê văn D --> con ông Lê văn A , con bà Nguyễn thị B
Lê thị E --> con ông Lê văn A , con bà Nguyễn thị B
+ MaSoGD tạm của họ là: 001

Trần văn Ba --> con ông Trần văn Một, con bà Hồ thị Hai
Trần văn Bốn --> con ông Trần văn Một, con bà Hồ thị Hai
Trần văn Năm --> con ông Trần văn Một, con bà Hồ thị Hai
Trần thị Sáu --> con ông Trần văn Một, con bà Hồ thị Hai
+ MaSoGD tạm của họ là : 002
v.v...

Khi Giáo dân trong Table1 kết hôn (ta thao tác trên Form2). Theo VD trên, ta có:
+ anh Lê Văn C (con ông bà ...) kết hôn cùng chị Trần Thị Sáu (con ông bà ...).
Lúc này MaSoGD chính thức của họ là MaSo001 được ghi nhận tự động vào Table2. Và làm cách nào để ghi ngược vào MaSoGD của Table1 là MaSo001 cho cả 2 người, vì họ đã có Mã số kết hôn. Và các con của họ (trước đó mang tạm số gì gì đó) cũng tự động mang MaSoGD001 của cha mẹ chúng. Xin nhắc lại là mỗi gia đình đều có 1 sổ gia đình khi kết hôn (giống sổ hộ khẩu). Khi 1 thành viên trong gia đình kết hôn, thành viên đó được cấp sổ mới, mang 1 mã số mới (giống cắt hộ khẩu cho con vậy đó). Cũng nói thêm là, MaSoGD của Table2 không được trùng (vì làm khóa chính rồi) và MaSoGD của Table1 - Table2 là hoàn toàn tự động cập nhật.
Tôi đã suy nghĩ cả tháng nay rồi, nhức đầu quá. Xin các bác xem qua và tìm cách hướng dẫn, chỉ giáo, tôi thật lòng mang ơn nhiều lắm!



hoangnnm
Posts: 4
Joined: Wed 13/01/2010 2:30 pm

Re: Một vấn đề trong Access

Postby hoangnnm » Tue 19/01/2010 2:38 pm

Trường MaGd trong table1 có được trùng không ?
Bạn nói khi kết hôn sẽ apply masogd mới vào table2 cho 2 người , vậy có nghĩa là sẽ có 2 bản ghi mới có cùng 1 masogd, nhưng bạn lại nói không thể trùng vì đã đặt khóa chính ?

Pherotao
Thành viên chính thức
Thành viên chính thức
Posts: 18
Joined: Tue 29/12/2009 1:57 pm
Contact:

Re: Một vấn đề trong Access

Postby Pherotao » Wed 20/01/2010 10:22 am

hoangnnm wrote:Trường MaGd trong table1 có được trùng không ?
Bạn nói khi kết hôn sẽ apply masogd mới vào table2 cho 2 người , vậy có nghĩa là sẽ có 2 bản ghi mới có cùng 1 masogd, nhưng bạn lại nói không thể trùng vì đã đặt khóa chính ?



MaGD (Mã Giáo Dân) của Table1 và Table2 không được trùng nhau. Như đã nói, Table1 và Table2 đều có thêm trường MaSoGD (Mã Sổ Gia Đình);
Nhưng MaSoGD - Table1 thì trùng nhau nếu là thành viên của 1 gia đình (anh,chị, em... đều là con của cha mẹ, vì cha mẹ kết hôn rồi thì có một mã sổ Gia đình riêng; nên các con mang mã số Gia đình của cha mẹ).
Còn MaSoGD - Table2 thì không được trùng nhau, vì mỗi mẩu tin là một gia đình (nam + nữ mang một cùng Mã số Gia Đình).

hoangnnm
Posts: 4
Joined: Wed 13/01/2010 2:30 pm

Re: Một vấn đề trong Access

Postby hoangnnm » Wed 20/01/2010 10:38 pm

+ anh Lê Văn C (con ông bà ...) kết hôn cùng chị Trần Thị Sáu (con ông bà ...).
Lúc này MaSoGD chính thức của họ là MaSo001 được ghi nhận tự động vào Table2. Và làm cách nào để ghi ngược vào MaSoGD của Table1 là MaSo001 cho cả 2 người, vì họ đã có Mã số kết hôn. Và các con của họ (trước đó mang tạm số gì gì đó) cũng tự động mang MaSoGD001 của cha mẹ chúng. Xin nhắc lại là mỗi gia đình đều có 1 sổ gia đình khi kết hôn (giống sổ hộ khẩu). Khi 1 thành viên trong gia đình kết hôn, thành viên đó được cấp sổ mới, mang 1 mã số mới (giống cắt hộ khẩu cho con vậy đó). Cũng nói thêm là, MaSoGD của Table2 không được trùng (vì làm khóa chính rồi) và MaSoGD của Table1 - Table2 là hoàn toàn tự động cập nhật.

Xin lỗi mình không đọc kỹ .
- Bạn muốn xem trong table1 có bao nhiêu gia đình chỉ cần dùng câu lệnh select distin ( select distinct masoGd from table1 ) , và xem reccount là được .
Khi bạn apply 1 mã gia đình mới vào table2 , thì ngay sau phần đó bạn chỉ cần viết thêm 1 đoạn để sửa giá trị ở table1 ( update table1 set masoGD = 'MaSoGD001' where maGd = maGdNam or maGd = maGdNu ) . Còn phần các con của họ có sẵn ở table1 thì rac roi hơn 1chut .

Pherotao
Thành viên chính thức
Thành viên chính thức
Posts: 18
Joined: Tue 29/12/2009 1:57 pm
Contact:

Re: Một vấn đề trong Access

Postby Pherotao » Fri 22/01/2010 9:01 pm

Xin các cao thủ trên diễn đàn ra tay chỉ giao cho! Thật tình em rất cần sự giúp đỡ!

User avatar
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Posts: 1296
Joined: Fri 18/07/2008 12:08 pm
Location: Kiên Giang
Has thanked: 8 times
Been thanked: 117 times
Contact:

Re: Một vấn đề trong Access

Postby gtdcomputer » Fri 22/01/2010 9:21 pm

Có phải ý của bạn là bạn đã nhập xong dữ liệu rồi mà chưa nhập vào Gia đình của họ và muốn nó tự động phải không.
Cái này chắc tại cái Database làm nhức đầu nè.
1. Các giáo dân của bạn không có quan hệ với nhau như là ai làm cha - con hay mẹ - con (chỉ có tên cha và mẹ là chưa đủ, vì tên trùng tên được mà), chính vì thế việc cắt hộ khẩu là chuyện không thể thực hiện (Vì biết ai đâu mà cắt). Để khăc phục có thể thay vào tên của Cha và mẹ là MaGDCha và MaGDMe.
2. Nếu đã nói là cắt hộ khẩu thì các giáo dân của bạn đều có gia đình hết (Có ai vô gia cư đâu phải không) và tất nhiên bắt đầu từ lúc sử dụng chuơng trình các giáo dân phải có người lập gia đình rồi chứ. Hong lẻ ai cũng không có gia đình đợi làm xong ct rồi mới lập sao.

Nếu bạn đã làm được như tôi nói thì có thể làm như sao:
1. Lúc mà đã biết được MaGDCha và MaGDMe thì việc tìm kiếm gia đình dễ dàng hơn.
2. Lúc cập nhật vào dữ liệu của Table2 bạn lưu lại tên MS001 đó vào đâu đó và ghi lại cho các GD trong Table1 như sao.
- GD Chồng và GD Vợ (Lúc này thì nói là họ bị cắt hộ khẩu mới đúng)
- Con của chồng và vợ:
  1. DoCmd.RunSQL "Update Table1 Set MasoGD='"& Mã số lưu ở trên &"' Where MsGDCha='"& Mã số chồng &"' Or MsGDMe='"& Mã số vợ &"'"
  2.  
Con người không quan tâm đến sự thật. Họ tin cái họ muốn, và về sau, cái đó sẽ trở thành sự thật

haquocquan
Thành viên chính thức
Thành viên chính thức
Posts: 12
Joined: Thu 26/11/2009 10:53 pm

Re: Một vấn đề trong Access

Postby haquocquan » Wed 24/03/2010 10:09 pm

Bạn không thể giải quyết được vấn đề nếu không có MasoGD trong table1.
Các cách khác đều không hiệu quả và mất thời gian hơn nhiều so với việc nhập MasoGD trong table1


Return to “Visual Basic for Application (VBA)”

Who is online

Users browsing this forum: No registered users and 3 guests