-
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.Database, rs 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(strFields, Len(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.Database, rs 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(strFields, Len(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", dbByte, 2)
fld.Properties.Append prop