ledangvan > 04-05-18, 08:49 PM
ongke0711 > 04-05-18, 09:05 PM
ledangvan > 04-05-18, 10:46 PM
mrsiro > 04-05-18, 11:14 PM
ongke0711 > 05-05-18, 12:27 AM
(04-05-18, 10:46 PM)ledangvan Đã viết: Rất cảm ơn onke0711, anh có thêm đôi chút để thành một chương trình dùng để nâng cấp dữ liệu
http://www.mediafire.com/file/5t4e4gv3v3...NG+CAP.rar
Anh có thêm : Dữ liệu cần nâng cấp; Dữ liệu mẫu để mục đích chọn nguồn dữ liệu bất kể ở đâu chứ không phải dữ liệu cố định trong code
Public Function CreateRelation(primaryTableName As String, _
primaryFieldName As String, _
foreignTableName As String, _
foreignFieldName As String) As Boolean
On Error GoTo ErrHandler
Dim db As DAO.Database
Dim newRelation As DAO.Relation
Dim relatingField As DAO.Field
Dim relationUniqueName As String
relationUniqueName = primaryTableName + "_" + primaryFieldName + _
"__" + foreignTableName + "_" + foreignFieldName
Dim strDBDes As String
strDBDes = Forms![Form1]![TenDL]
Set db = DBEngine.Workspaces(0).OpenDatabase(strDBDes, True)
'Arguments for CreateRelation(): any unique name,
'primary table, related table, attributes.
Set newRelation = db.CreateRelation(relationUniqueName, _
primaryTableName, foreignTableName)
'The field from the primary table.
Set relatingField = newRelation.CreateField(primaryFieldName)
'Matching field from the related table.
relatingField.ForeignName = foreignFieldName
'Add the field to the relation's Fields collection.
newRelation.Fields.Append relatingField
'Add the relation to the database.
db.Relations.Append newRelation
msgBoxUni ChrW(272) & "ã t" & ChrW(7841) & "o Relationship thành công."
Set db = Nothing
CreateRelation = True
Exit Function
ErrHandler:
Debug.Print Err.Description + " (" + relationUniqueName + ")"
CreateRelation = False
End Function
Private Sub cmdTaoQuanHe_Click()
CreateRelation "B", "X", "C", "X"
End Sub
ledangvan > 05-05-18, 11:29 AM
(05-05-18, 12:27 AM)ongke0711 Đã viết:(04-05-18, 10:46 PM)ledangvan Đã viết: Rất cảm ơn onke0711, anh có thêm đôi chút để thành một chương trình dùng để nâng cấp dữ liệu
http://www.mediafire.com/file/5t4e4gv3v3...NG+CAP.rar
Anh có thêm : Dữ liệu cần nâng cấp; Dữ liệu mẫu để mục đích chọn nguồn dữ liệu bất kể ở đâu chứ không phải dữ liệu cố định trong code
Đoạn code dưới đây dùng để tạo Relationship cho table. Code sưu tầm từ trang CodeProject.
- Để tạo được Relationship, phải thiết lập Primary Key, Foreign Key trước cho các table.
- Code này test thẳng trên table B, C thông qua Field [X] (hard code). Thực tế áp dụng sẽ phải thiết kế trên Form để chọn Primary Table, Foreign Table, PK Field, FK Field.
Link file demo: http://www.mediafire.com/file/x25la236ke...%20CAP.rar
Mã PHP:Public Function CreateRelation(primaryTableName As String, _
primaryFieldName As String, _
foreignTableName As String, _
foreignFieldName As String) As Boolean
On Error GoTo ErrHandler
Dim db As DAO.Database
Dim newRelation As DAO.Relation
Dim relatingField As DAO.Field
Dim relationUniqueName As String
relationUniqueName = primaryTableName + "_" + primaryFieldName + _
"__" + foreignTableName + "_" + foreignFieldName
Dim strDBDes As String
strDBDes = Forms![Form1]![TenDL]
Set db = DBEngine.Workspaces(0).OpenDatabase(strDBDes, True)
'Arguments for CreateRelation(): any unique name,
'primary table, related table, attributes.
Set newRelation = db.CreateRelation(relationUniqueName, _
primaryTableName, foreignTableName)
'The field from the primary table.
Set relatingField = newRelation.CreateField(primaryFieldName)
'Matching field from the related table.
relatingField.ForeignName = foreignFieldName
'Add the field to the relation's Fields collection.
newRelation.Fields.Append relatingField
'Add the relation to the database.
db.Relations.Append newRelation
msgBoxUni ChrW(272) & "ã t" & ChrW(7841) & "o Relationship thành công."
Set db = Nothing
CreateRelation = True
Exit Function
ErrHandler:
Debug.Print Err.Description + " (" + relationUniqueName + ")"
CreateRelation = False
End Function
- Code cho nút tạp Relationship:
Mã PHP:Private Sub cmdTaoQuanHe_Click()
CreateRelation "B", "X", "C", "X"
End Sub
ongke0711 > 05-05-18, 11:49 AM
For Each rel In dbBackup.Relations
[/font]
Set newRel = db.CreateRelation(rel.Name, rel.Table, rel.ForeignTable, _
rel.Attributes)
For Each fld In rel.Fields
newRel.Fields.Append newRel.CreateField(fld.Name)
newRel.Fields(fld.Name).ForeignName = _
rel.Fields(fld.Name).ForeignName
Next fld
db.Relations.Append newRel
[font=Tahoma] Next rel
ledangvan > 19-08-18, 10:01 PM
tranthanhan1962 > 20-08-18, 01:38 AM
ledangvan > 20-08-18, 09:39 AM
(20-08-18, 01:38 AM)tranthanhan1962 Đã viết: Trường hợp nâng cấp của bạn là tăng cường field cho table. Thú thực mình toàn chơi tay chứ không xử lý bằng code tự động. Thứ nhất việc nâng cấp thông thường do khách hàng yêu cầu theo nhu cầu riêng của từng đơn vị chứ không phải tất cả khách hàng đều yêu cầu giống nhau. Giá trị các field của các record của field mới có khi không do qui luật nào cả. Vi dụ lúc đầu viết phần mềm thì table danh sách khách hàng [DANHSACHKHACHHANG] không có mã số thuế [MASOTHUE], sau khi sử dụng yêu cầu thêm mã số thuế. Vây thì chuyển danh sách khách hàng ra excel xong cho đơn vị tự điền. Ở table [DANHSACHKHACHHANG]trong chương trình bạn thêm field [MASOTHUE], sau khi có bảng excel danh sách khách hàng mới do đơn vị cung cấp import vào thành table [DANHSACHKHACHHANG1] tạo quan hệ rồi chay query update, xong xóa table [DANHSACHKHACHHANG1]. Để xử lý dùng teamview rất nhanh, tạo chi lệnh này lệnh nọ cũng chỉ xử dụng một lần. Sau đó thì chỉnh sửa query, form, report...của frontend là xong.