Đổi năm dương lịch sang âm lịch

Thảo luận trong 'Cơ sở dữ liệu' bắt đầu bởi h3l, 22 Tháng bảy 2011.

  1. h3l

    h3l Thành viên mới

    Tôi viết thủ tục thực hiện đổi năm từ dương lịch sang âm lịch nhưng không thực hiện được, mong các anh chị trong diễn đàn xem giúp tôi hướng khắc phục:
    Public Sub namAL(AL As String)
    'Khai bao bien
    Dim chi, can
    'Tinh can
    can = (Year(Now()) + 6) Mod 10
    If can = 0 Then can = "Giap "
    If can = 1 Then can = "At "
    If can = 2 Then can = "Binh "
    If can = 3 Then can = "Dinh "
    If can = 4 Then can = "Mau "
    If can = 5 Then can = "Ky "
    If can = 6 Then can = "Canh "
    If can = 7 Then can = "Tan "
    If can = 8 Then can = "Nham "
    If can = 9 Then can = "Quy "
    'Tinh chi
    chi = (Year(Now()) + 8) Mod 12
    If chi = 0 Then can = "Ti"
    If chi = 1 Then can = "Suu"
    If chi = 2 Then can = "Dan"
    If chi = 3 Then can = "Mao"
    If chi = 4 Then can = "Thin"
    If chi = 5 Then can = "Ty"
    If chi = 6 Then can = "Ngo"
    If chi = 7 Then can = "Mui"
    If chi = 8 Then can = "Than"
    If chi = 9 Then can = "Dau"
    If chi = 10 Then can = "Tuat"
    If chi = 11 Then can = "Hoi"
    'Tinh nam am lich
    AL = can & chi
    End Sub
     
    Lần chỉnh sửa cuối: 22 Tháng bảy 2011
  2. sealand

    sealand Thành viên gạo cội

    Bạn sửa 1 chút:

    Mã:
    Sub namAL()
    'Khai bao bien
    Dim chi, can, AL As String
    'Tinh can
    can = (Year(Now()) + 6) Mod 10
    If can = 0 Then can = "Giap "
    If can = 1 Then can = "At "
    If can = 2 Then can = "Binh "
    If can = 3 Then can = "Dinh "
    If can = 4 Then can = "Mau "
    If can = 5 Then can = "Ky "
    If can = 6 Then can = "Canh "
    If can = 7 Then can = "Tan "
    If can = 8 Then can = "Nham "
    If can = 9 Then can = "Quy "
    'Tinh chi
    chi = (Year(Now()) + 8) Mod 12
    If chi = 0 Then chi = "Ti"
    If chi = 1 Then chi = "Suu"
    If chi = 2 Then chi = "Dan"
    If chi = 3 Then chi = "Mao"
    If chi = 4 Then chi = "Thin"
    If chi = 5 Then chi = "Ty"
    If chi = 6 Then chi = "Ngo"
    If chi = 7 Then chi = "Mui"
    If chi = 8 Then chi = "Than"
    If chi = 9 Then chi = "Dau"
    If chi = 10 Then chi = "Tuat"
    If chi = 11 Then chi = "Hoi"
    'Tinh nam am lich
    AL = can & chi
    MsgBox AL
    End Sub
     
  3. sealand

    sealand Thành viên gạo cội

    Theo mình viết như sau gọn hơn

    Mã:
    Sub namAL()
    Dim chi(), can(), AL As String
    can = Array("Giap ", "At ", "Binh ", "Dinh ", "Mau ", "Ky ", "Canh ", "Tan ", "Nham ", "Quy ")
    chi = Array("Ti", "Suu", "Dan", "Mao", "Thin", "Ty", "Ngo", "Mui", "Than", "Dau", "Tuat", "Hoi")
    AL = can((Year(Now()) + 6) Mod 10) & chi((Year(Now()) + 8) Mod 12)
    MsgBox AL
    End Sub
    Hoặc có thể dùng hàm Choose thay mảng, chứ bạn dùng hàng chục cái if mệt quá.
     
    Lần chỉnh sửa cuối: 22 Tháng bảy 2011
  4. h3l

    h3l Thành viên mới

    Cám ơn bạn rất nhiều. Tôi mới tìm hiểu về Access và cũng không rành về lập trình nên mong bạn giúp đỡ nhiều. Tiện đây nhờ bạn cũng giúp tôi giải đáp một số thắc mắc luôn nhé.
    - Tôi muốn sử dụng thủ tục trên để thực hiện đổi các năm sinh dương lịch nhập vào ra năm sinh âm lịch và hiện ra trên form và report. Tôi cần làm như thế nào?
    2/Trong form của tôi có 1 form chính và 1 form con. Nếu tôi muốn thao tác đến form con thì làm như thế nào? (Giả sử khi nhấn nút xóa thì sẽ xóa các bảng ghi trong form con. Tôi đã thực hiện xóa nhưng chỉ xóa được dữ liệu trong form chính. Khi mở CSDL ra thì dữ liệu trong form con vẫn còn)
     
  5. sealand

    sealand Thành viên gạo cội

    1/Để hiện trên form hay report bạn có thể làm như sau:
    +Đổi thủ tục thành hàm:
    Mã:
    Function namAL(Yr as integer)
    Dim chi(), can()
    can = Array("Giap ", "At ", "Binh ", "Dinh ", "Mau ", "Ky ", "Canh ", "Tan ", "Nham ", "Quy ")
    chi = Array("Ti", "Suu", "Dan", "Mao", "Thin", "Ty", "Ngo", "Mui", "Than", "Dau", "Tuat", "Hoi")
    namAL = can((Yr + 6) Mod 10) & chi(Yr + 8) Mod 12)
    End Sub
    +Dùng Textbox để hiển thị dạng Unbound và nhâp vào ControlSource =namAL(Nam_nao)

    2/Để xoá dữ liệu có 2 dạng:
    +Nếu Unbound thì gán contr. =0 hay Null. Ngược lại xoá dữ liệu nguồn rồi Requery lại dữ liệu
     
  6. htv3

    htv3 Thành viên mới

    Cơ sở dữ liệu

    Trong đề tài: Đổi năm DL sang năm AL, các anh chị dùng Code mình nghĩ là rất hay mặc dù chưa biết về Code, còn mình dùng công thức hàm excel để chuyển đổi qua lại giữa năm DL và năm AL. Mời các bạn cùng và góp ý theo File đính kèm nhé!
     

    Các file đính kèm:

  7. vutienhp

    vutienhp Thành viên hoạt động

    Theo bài viết của bạn thì chỉ cần nhập năm sinh bất kỳ là ta có thể biết được năm đó thuộc CAN -CHI gì.
    Vậy bây giờ tôi muốn biết năm đó thuộc mệnh( mạng: kim-mộc-thuỷ-hoả-thổ) gì thì làm thế nào?
    Xin bạn htv3 cùng những ai am hiểu và quan tâm đến vấn đề này chỉ giúp.
    Xin trân trọng cảm ơn!!!
     
  8. Tiamo Honey

    Tiamo Honey Thành viên mới

    Bắt excel tính toán, dò tìm làm chi? Bạn có thế GOOGLE.COM mà search, sẽ cho bạn đầy đủ thông tin. Hehe
    (Hình như mệnh bạn là Đại Khê Thủy? hihi )
     
  9. vutienhp

    vutienhp Thành viên hoạt động

    Điều bạn nói thì quá đơn giản, nhưng mình muốn biết quy luật của ngũ hành: Kim- mộc-thuỷ -hoả-thổ chúng vận động như thế nào theo năm tháng.
    Rất mong nhận được hồi âm của mọi người!!!
     
  10. tuananh74

    tuananh74 Thành viên mới

    Quy luật là "Thủy - Hỏa - Thổ -Mộc -Kim" theo tuổi Địa chi luân hồi chiến. Ví dụ : năm 1974 là Dần (Thủy) thì 1986 Dần tiếp là Hỏa, tiếp 1998 Dần Thổ - 2010 - Dần Mộc ....vvv. Các con vật khác cũng có quy luật tương tự.

    Xin góp chút ý kiến nhỏ !
     

Chia sẻ trang này