Đánh giá chủ đề:
  • 5 Votes - 3.8 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Đánh số thứ tự có điều kiện
#11
Một vấn đề trong Access

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!
Chữ ký của pherotao Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#12
Để update bạn tạo gọi 1 query Update
Mã:
UPDATE table1 SET MSGD = [color=#FF0000]"Số mã số "[/color]
WHERE ....

Có vẻ về mặc thiết kế table của bạn vẫn chưa ổn nên làm rắc rối thêm thôi! Mình vẫn chưa nhìn ra chỗ nào. Nhưng có vẻ bạn thêm 1 table T_Giadinh nữa.
T_Giadinh(MSgiadinh, msgd cha, hoten cha, masogdme, hotenme,...)

mã số giáo dân tạm sẽ là mã số gia đình này.
Khi kết hôn ta sẽ khai báo thêm vào bảng này nữa để có gia đình mới.

Chú ý các query Append, update sẽ hỗ trợ bạn nhiều đấy!
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#13
(15-09-10, 01:43 AM)Noname Đã viết: Mình demo thử yêu cầu của bạn nhé.
Giả sử bạn có 1 table DS(ID,code, numchar,group)

Đoạn code sau có lẽ đáp ứng được nhu cầu của bạn:
Giải thuật của mình như sau:

Mã:
Private Sub Command1_Click()
Dim rs As Recordset
Dim i As Integer ' Bien de duyet
Dim j As Integer ' bien luu group
Dim X1 As Integer ' so phan tu group m-1
Dim X2 As Integer ' so phan tu group m
Dim n As Integer ' so record .

Set rs = CurrentDb.OpenRecordset("DS", dbOpenDynaset)
rs.MoveLast
n = rs.RecordCount        'vi du n=37
If (n Mod 10) > 5 Then
    X1 = Round((((n Mod 10) + 10) / 2) + 0.5, 0)
    X2 = Fix(((n Mod 10) + 10) / 2)
Else ' truong hop so du <5
   X1 = n Mod 10
   X2 = 0
End If
rs.MoveFirst
i = 1
j = 1

Do Until rs.EOF
  'Cap nhat Numchar
rs.Edit
rs("numchar") = i
rs("group") = j
rs.Update
If ((i < (n - X1 - X2)) And ((i Mod 10) = 0)) Or ((i = (n - X1 - X2)) And (X1 > 5)) Or (i = n - X2) Then
       j = j + 1
End If

  i = i + 1
rs.MoveNext
Loop
rs.Close

End Sub

Mời xem file đính kèm

Nếu có thêm fields số thứ tự nhóm (STTNhom) đánh số thứ tự cho mỗi nhóm (từ 1 đến hết nhóm; chuyển sang nhóm khác lại đánh số thứ tự từ 1 đến hết nhóm) thì làm thế nào nhỉ
Chữ ký của Nguyendinhthanh My site: Tài liệu
ღღღღღTài sản của Nguyendinhthanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#14
(10-01-11, 09:59 PM)Nguyendinhthanh Đã viết: Nếu có thêm fields số thứ tự nhóm (STTNhom) đánh số thứ tự cho mỗi nhóm (từ 1 đến hết nhóm; chuyển sang nhóm khác lại đánh số thứ tự từ 1 đến hết nhóm) thì làm thế nào nhỉ

Đó là việc của report.
Hình như trong box report mình có nói đấy! Sang đó mà kiếm
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#15
(10-01-11, 10:08 PM)Noname Đã viết:
(10-01-11, 09:59 PM)Nguyendinhthanh Đã viết: Nếu có thêm fields số thứ tự nhóm (STTNhom) đánh số thứ tự cho mỗi nhóm (từ 1 đến hết nhóm; chuyển sang nhóm khác lại đánh số thứ tự từ 1 đến hết nhóm) thì làm thế nào nhỉ

Đó là việc của report.
Hình như trong box report mình có nói đấy! Sang đó mà kiếm

Group trong report cũng giải quyết được nhưng muốn đánh số thứ tự nhóm vào trường mà.
Đôi khi, cần số thứ tự cùng nhóm trong table chứ không cần trong report.
Chữ ký của Nguyendinhthanh My site: Tài liệu
ღღღღღTài sản của Nguyendinhthanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#16
Vậy thì bạn vào box thư viện thủ thuật, tham khảo mấy cái đánh số hóa đơn hay phiếu thu á, cũng gần gần như vậy. Mình nhớ có 1 thủ thuật cho phép reset lại khi đánh số
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Viết code có điều kiện " lệnh Chạy tiếp khi đóng tbl cho sẵn" Trần Linh 3 140 21-10-16, 11:11 AM
Bài mới nhất: Minh Tiên
  [Thủ Thuật] Tạo Form đánh giá 1 - 5 sao cho từng Record ongke0711 0 119 03-05-16, 06:51 PM
Bài mới nhất: ongke0711
  [Thủ Thuật] Lọc điều kiện theo nhiều dòng trong 1 Listbox hoặc nhiều Listbox ongke0711 7 620 12-02-16, 09:50 PM
Bài mới nhất: caytregiavn77
  [Help] phép tính có điều kiện thanhquyt 2 258 22-01-16, 11:00 PM
Bài mới nhất: thanhquyt
  [Thủ Thuật] In kết quả record sau khi tìm kiếm có điều kiện với hình ảnh khi có đường dẫn tvn_hut 5 539 18-01-16, 04:24 PM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ