• Lấy record từ tbl1 làm thành field trong tbl2.
  • Lấy record từ tbl1 làm thành field trong tbl2.

    MinhnHang > 13-12-16, 09:19 AM

    Gửi Anh/Chị.

    Anh chị vui lòng hướng dẫn em cách làm: Lấy các record trong tbl1 để làm field cho tbl2.

    Ví dụ:

    - Trong tbl1 em có các field sau: STT và TenCot; tương ứng với nó em có các record sau: 1 | LuongCoBan ; 2 | PhuCapChucDanh ; 3 | PhuCapKhac

    - Trong tbl2: Em lấy các record trong tbl1 kia để làm field cho nó; tức là tbl2 có các field: LuongCoBan | PhuCapChucDanh | PhuCapKhac

    Em cảm ơn Anh/Chị!
  • RE: Lấy record từ tbl1 làm thành field trong tbl2.

    ongke0711 > 13-12-16, 10:43 AM

    Trường hợp này của bạn không có gì khó nhưng tôi chưa thấy việc tổ chức cơ sở dữ liệu như vậy (Thường thì có chuyển đổi cột thành dòng). Bạn nên xem và tổ chức lại Table huống chi các field LuongCoban, PhuCap là nhưng field cơ bản để nhập liệu. Vậy dữ liệu LuongCB bạn lưu như thế nào?
  • RE: Lấy record từ tbl1 làm thành field trong tbl2.

    MinhnHang > 13-12-16, 11:31 AM

    (13-12-16, 10:43 AM)ongke0711 Đã viết: Trường hợp này của bạn không có gì khó nhưng tôi chưa thấy việc tổ chức cơ sở dữ liệu như vậy (Thường thì có chuyển đổi cột thành dòng). Bạn nên xem và tổ chức lại Table huống chi các field LuongCoban, PhuCap là nhưng field cơ bản để nhập liệu. Vậy dữ liệu LuongCB bạn lưu như thế nào?

    Ý em là như thế này:

    Với Cty "mẹ" em đang làm thì có các loại sau: LuongCB | ComCa | ChuyenCan | XangXe | ChucVu | KyNang | Khac |
    (Lương cơ bản, Cơm ca, Chuyên cần, Xăng xe, Chức vụ, Kỹ năng, khác)

    Nhưng khi xuống công ty "con" lại có thêm: | ThamNien | DienThoai |
    (Thâm niên, Điện thoại)

    Hoặc cty con khác lại bớt "XangXe" đi.

    ...

    Do đó, trong ứng dụng "Hợp đồng lao động" em tạo ra 1 frmSetUpHDLD, tức là ở các Cty "con" có thể tự ý biến hóa các loại Phụ cấp chứ không nhất thiết "mỗi lần thay đổi phải alo lên em".

    HAY LÀ: Em thêm field rồi biến nó thành record ???

    Chà là theo cách cũ thì: Khi thêm field mới em lại phải "vẽ" lại frmHĐLĐ; và em muốn nó là reocord để khi có "tăng/giảm" thì em không cần vẽ lại frmHDLD (mục lương và các loại phụ cấp em để kiểu subform).
  • RE: Lấy record từ tbl1 làm thành field trong tbl2.

    ongke0711 > 13-12-16, 12:24 PM

    Các mục Lương, Phụ cấp v.v.. sẽ ảnh hưởng trong công thức tính lương nên bạn cân nhắc mọi khía cạnh, tổ chức CSDL cho kỹ để thuận tiện cho việc tính lương v.v... Bạn tổ chức các khoản phụ cấp thành dòng cũng được sau đó bạn dùng Crosstab query để chuyển row thành cột cũng được rồi.
    Nếu bạn muốn chuyển dòng thành cột thì dùng đoạn code sau:

    Mã PHP:
    'Them Fields vao Table hien tai'
       Dim db As DAO.Databasers As DAO.Recordset
       
       Dim strFields 
    As String
       
       Set rs 
    CurrentDb.OpenRecordset("tbl1"dbOpenSnapshot)
       rs.MoveFirst
       strFields 
    ""
       Do Until rs.EOF
           strFields 
    strFields rs!tenField " TEXT,"
           rs.MoveNext
       Loop
       strFields 
    Left(strFieldsLen(strFields) - 1)
       'Duong dan file .mdb cua ban'
       Set db OpenDatabase("C:\CSDL.mdb")
       db.Execute "ALTER TABLE tbl2 ADD COLUMN " strFields ";"
       
       db
    .Close
       rs
    .Close
       Set rs 
    Nothing 
  • RE: Lấy record từ tbl1 làm thành field trong tbl2.

    MinhnHang > 13-12-16, 02:08 PM

    (13-12-16, 12:24 PM)ongke0711 Đã viết: Các mục Lương, Phụ cấp v.v.. sẽ ảnh hưởng trong công thức tính lương nên bạn cân nhắc mọi khía cạnh, tổ chức CSDL cho kỹ để thuận tiện cho việc tính lương v.v... Bạn tổ chức các khoản phụ cấp thành dòng cũng được sau đó bạn dùng Crosstab query để chuyển row thành cột cũng được rồi.
    Nếu bạn muốn chuyển dòng thành cột thì dùng đoạn code sau:

    Mã PHP:
    'Them Fields vao Table hien tai'
       Dim db As DAO.Databasers As DAO.Recordset
       
       Dim strFields 
    As String
       
       Set rs 
    CurrentDb.OpenRecordset("tbl1"dbOpenSnapshot)
       rs.MoveFirst
       strFields 
    ""
       Do Until rs.EOF
           strFields 
    strFields rs!tenField " TEXT,"
           rs.MoveNext
       Loop
       strFields 
    Left(strFieldsLen(strFields) - 1)
       'Duong dan file .mdb cua ban'
       Set db OpenDatabase("C:\CSDL.mdb")
       db.Execute "ALTER TABLE tbl2 ADD COLUMN " strFields ";"
       
       db
    .Close
       rs
    .Close
       Set rs 
    Nothing 

    Gửi Anh.

    Có thể thêm định dạng dữ liệu vào đoạn code trên được ko ạ?

    Ví như: Mặc định nó là Number kiểu Standard và Decimal Places là 0.
  • RE: Lấy record từ tbl1 làm thành field trong tbl2.

    ongke0711 > 13-12-16, 03:05 PM

    Bạn thay thế TEXT trong chuỗi strFields thành DOUBLE.
    Bạn ngâm cứu câu lệnh đổi Properties của Field như bên dưới:

    Mã PHP:
    Dim db As DAO.Database
       Dim tbl 
    As DAO.TableDef
       Dim fld 
    As DAO.Field
       Dim prop 
    As DAO.Property
     
     
    'DoCmd.RunSQL "ALTER TABLE Table1New ALTER COLUMN LuongCoBan Single"  --> câu lênh này dùng để đổi Data Type của Field'
     
       Set db 
    CurrentDb()
       Set tbl db.TableDefs("Table1New")
       Set fld tbl.Fields("LuongCoBan")

       Set prop fld.CreateProperty("Format"dbText"Standard")
       fld.Properties.Append prop
       
       Set prop 
    fld.CreateProperty("DecimalPlaces"dbByte2)
       fld.Properties.Append prop