Nhập vào 1 màn hình nhưng có thể lưu trên 2 bảng

  • Thread starter hoangtuanitpc
  • Ngày gửi
H

hoangtuanitpc

Guest
22/7/08
14
0
0
TN
Chào các bạn.
Mình có 1 vấn đề như sau: Mình muốn nhập vào 1 Form nhưng nó phải được lưu vào 2 bảng( trong đó có 1 bảng link table) thì phải làm sao đây?
vd: nhập 1 công việc của 1 nhân viên. mặc định nó sẽ lưu vào cơ sở dữ liệu của nhân viên đó nhưng nó vẫn lưu vào cơ sở dữ liệu được Link từ máy chủ.
 
Khóa học Quản trị dòng tiền
T

tung1999

Sơ cấp
9/2/09
41
0
0
can gio
Chào bạn, mình có thể ý kiến với bạn thế nầy: Bạn không nói rõ là 2 bảng đó có các fiel giống nhau hay là khác nhau, tuy nhiên mình sẽ ý kiến cả 2 trường hợp:
- Trường hợp 1: 2 bảng có các fiel khác nhau: trong trường hợp nầy chắc chắn phải có 1 fiel giống nhau để thiết lập mối quan hệ 2 bảng. Bạn nên tạo 1 query từ 2 bảng trên, sau đó dùng query nầy làm dữ liệu nguồn cho form. Khi form nhập dữ liệu thì sẽ lưu vào cả 2 bảng.
- Trường hợp 2: 2 bảng có các fiel giống nhau thì bạn chỉ chọn 1 bảng làm dữ liệu nguồn cho form, sau đó tạo Append query để lưu dữ liệu vào bảng kia.
Vậy là xong, không biết có phù hợp với ý bạn không?
Chào bạn!
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,030
125
63
52
Hà nội
vnuni.net
Cách làm:

Function SaveData() As Boolean
On Error Goto Proc_Error

'// Assume function false
SaveData = False
If Not SaveMaster() Then Goto Proc_Done
If Not SaveDetail() Then DeleteMaster(): Goto Proc_Done

'// All's well done
SaveData = True

Proc_Done
...
Proc_Error:
....
Goto Proc_Done
End Function

Function SaveMaster() As Boolean
On Error Goto Proc_Error
'// Assume function false
SaveMaster = False
'// Save Master here
...
'// All's well done
SaveMaster = True

Proc_Done
...
Proc_Error:
....
Goto Proc_Done
End Function

Function SaveDetail() As Boolean
On Error Goto Proc_Error
'// Assume function false
SaveDetail = False
'// Save Detail here
...
'// All's well done
SaveDetail = True

Proc_Done
...
Proc_Error:
....
Goto Proc_Done
End Function
Còn làm như thế nào thì tuỳ từng bài toán cụ thể
 
Đ

ĐỖ SƠN HẢI

Guest
10/10/06
130
0
0
47
Phan Thiết
Anh hai2hai

Đoạn lệnh lập trình của anh bọn em khó lắm, em cũng thường làm vấn đế này như sau .

VD : bạn lập từ form phiếu thu, chi đương nhiên là dữ liệu chạy vào table thu hoặc chi thậm chí table thu chi luôn .

Phần còn lại là làm thế nào lưu vào một file dữ liệu khác mà có link với máy chủ để xếp xem.

Đây là đoạn code chép dữ liệu

Private Sub Command0_Click()
Dim DB1 As Database, RS1 As Recordset, MB1 As Variant, DB2 As Database
Dim ST1 As String, ST2 As String, N As Integer
Set DB1 = OpenDatabase("F:\HOANGMY\BACKUP\NHATKYCHUNGTU.MDB")

Dim c03 As Recordset, c04 As Recordset
Set c03 = DB1.OpenRecordset("THUCHI", dbOpenTable)
Set DB2 = CurrentDb
Set c04 = DB2.OpenRecordset("tonghop", dbOpenTable)
c04.Index = "PRIMARYKEY"
If c03.RecordCount > 0 Then
c03.MoveFirst
Do Until c03.EOF
'On Error Resume Next
c04.Seek "=", c03!MAPHIEU
If c04.NoMatch Then
c04.AddNew
c04!ngay = c03!ngay
c04!makhach = c03!makhach
c04!diengiai = c03!diengiai
c04!tenkhach = c03!tenkhach
.............................
'On Error Resume Next
c04.Update: c04.Bookmark = c04.LastModified
End If
c04.Edit
c04.Update: c03.MoveNext
Loop
End If
c03.Close
c04.Close
DB1.Close
DB2.Close

End Sub


Bài toán sẽ như sau :cach 1 cap nhat tu may chu

Mình có một ổ đỉa mạng dùng chung kế toán là ổ đĩa F và cố định file làm việc của kế toán viên .
Từ máy tính của xếp bấm nút cập nhật thì đoạn lệnh trên xẻ chép những phần dữ liệu mới nối tiếp vào file xếp .
Tuy nhiên những thay đổi từ việc sửa dữ liệu không liên quan đến khoá chính thì bạn phải lập trình thêm để kiểm soát công việc của nhân viên .
Cach 2 : cap nhat tu may con cung tuong tu

Chuc ban thanh cong


Gủi anh hai2hai
Hôm nay em bắt đầu kiểm toán listing voi GT cho vinacapital rồi em quay lại diễn đàn sau mong anh hai2hai giúp em nhé
 
H

hoangtuanitpc

Guest
22/7/08
14
0
0
TN
cam on cac ban rat nhieu
Nhung neu update ma trung ma thi no them vao luon thi sao
co cach nao xu ly truong hop nay ko?
 
Đ

ĐỖ SƠN HẢI

Guest
10/10/06
130
0
0
47
Phan Thiết
Nhớ gỏ dấu nha bạn

Nếu bạn muốn cập nhật kể cả những dòng kế toán viên sửa đúng không vậy thì xoá và cấp nhật mới tuy nhiên như vậy còn gì là quản lý.

Mình gửi bạn đoạn code xoá cái table củ nhé :

Private Sub xoa_Click()

Dim C021 As Recordset
Set C021 = CurrentDb.OpenRecordset("tonghop", dbOpenTable)
Do Until C021.EOF
If C021.RecordCount > 0 Then
C021.Delete
End If
C021.MoveNext
Loop
C021.Close

END sub
 
H

hoangtuanitpc

Guest
22/7/08
14
0
0
TN
Cám ơn bạn Đỗ Sơn Hải rất nhiều.
Nhưng hình như bạn nghĩ nhầm rồi.
Mình cần lưu trên 2 file. mà mình cũng không phải làm trên kế toán. Mình làm trên 1 phần mềm do mình tự viết dùng đễ báo cáo công việc hàng tuần của nhân viên. MÌnh muốn mỗi nhân viên khi làm trên 1 File báo cáo giống như trên máy chủ nhưng trong File của nhân viên có thêm 1 bảng cá nhân, và khi thêm 1 công việc thì nó thêm vào 2 bảng là thêm trên bảng cá nhân và 1 bảng gốc trên máy chủ đễ tiện cho việc báo cáo
 
H

hoangtuanitpc

Guest
22/7/08
14
0
0
TN
Mình đã có 1 đoạn code sưu tầm trên mạng cho vấn đề này và thêm rất được cho 2 file nhưng gặp lỗi trùng khóa của Access. làm sao có thể bỏ lỗi trùng khóa chính mà nó vẫn thêm vào những cái mới nhất
Private Sub Up_Click()
Dim sSQL As String
sSQL = "INSERT INTO DSHH ( MaHang, TenHang, DVT ) IN 'C:\Documents and Settings\tuan\My Documents\ThuUpdate\ThuUpdate\Dich.mdb' SELECT DSHH.MaHang, DSHH.TenHang, DSHH.DVT FROM DSHH ;"
SendKeys "{Enter}"
DoCmd.RunSQL sSQL

MsgBox "Da Update xong", , "Thong Bao"

End Sub

nó báo lỗi như sau : "Microsoft office access can't append all the record in the append query"
 
Sửa lần cuối:
T

tung1999

Sơ cấp
9/2/09
41
0
0
can gio
Mình đã có 1 đoạn code sưu tầm trên mạng cho vấn đề này và thêm rất được cho 2 file nhưng gặp lỗi trùng khóa của Access. làm sao có thể bỏ lỗi trùng khóa chính mà nó vẫn thêm vào những cái mới nhất
Private Sub Up_Click()
Dim sSQL As String
sSQL = "INSERT INTO DSHH ( MaHang, TenHang, DVT ) IN 'C:\Documents and Settings\tuan\My Documents\ThuUpdate\ThuUpdate\Dich.mdb' SELECT DSHH.MaHang, DSHH.TenHang, DSHH.DVT FROM DSHH ;"
SendKeys "{Enter}"
DoCmd.RunSQL sSQL

MsgBox "Da Update xong", , "Thong Bao"

End Sub

nó báo lỗi như sau : "Microsoft office access can't append all the record in the append query"

Theo mình thấy chỉ cần bạn làm bình thường và tạo thêm append query để lưu dữ liệu vào 1 table khác, table nầy có thể cùng database hoặc ở thư mục khác vẫn được, không cần phải code chi cho mệt.
Bạn làm thử xem, mình đã làm như vậy rất nhiều rồi.
Chào bạn!
 
M

Momambatchuoc

Sơ cấp
22/5/10
9
0
1
Phuong Quan Trieu, TPTN
Theo mình thấy chỉ cần bạn làm bình thường và tạo thêm append query để lưu dữ liệu vào 1 table khác, table nầy có thể cùng database hoặc ở thư mục khác vẫn được, không cần phải code chi cho mệt.
Bạn làm thử xem, mình đã làm như vậy rất nhiều rồi.
Chào bạn!

Nhưng nếu update thì sẽ xảy ra lỗi trùng dữ liệu, bạn có cách nào khắc phục ko? (VD: Hôm nay update 1 lần, ngày mai lại up lần nữa sẽ cho 2 bản record trùng nhau.)
 
H

haquocquan

Trung cấp
19/4/08
68
0
6
Bắc Giang
Mình cần lưu trên 2 file,..... Mình làm trên 1 phần mềm do mình tự viết dùng đễ báo cáo công việc hàng tuần của nhân viên. MÌnh muốn mỗi nhân viên khi làm trên 1 File báo cáo giống như trên máy chủ nhưng trong File của nhân viên có thêm 1 bảng cá nhân, và khi thêm 1 công việc thì nó thêm vào 2 bảng là thêm trên bảng cá nhân và 1 bảng gốc trên máy chủ đễ tiện cho việc báo cáo
Bạn xem thử DEMO xem có đúng ý bạn không.
xả nén ra ổ C, chạy file C:\DB1\DB1.mdb
Xem kết quả tại C:\DB1\DB1.mdb và C:\DB2\Db2.mdb (tblNhaplieu)
Nếu đúng ý, vận dụng vào phần mềm của bạn
 

Đính kèm

  • DB.rar
    29.1 KB · Lượt xem: 113

Xem nhiều