Nhấp đôi trên một record, tạo một recort mới với dữ liệu lấy từ record nhấp đôi (4 người xem)

  • Thread starter Thread starter comtri
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

comtri

Thành viên mới
Tham gia
21/7/11
Bài viết
32
Được thích
0
Tôi có 1 form, trong đó có hai form: form1 (contactID, họ tên, địa chỉ) và form2 (paymentID, contactID, paymentamount). Tôi muốn khi nhấp đôi một record trên form1, thì ở form2 một record mới được tạo ra với dữ liệu ở field contactID lấy từ field contactID được nhấp đôi ở form1. Xin anh em GPE chỉ giúp. Cám ơn rất nhiều.
 
Đưa file ví dụ lên mọi người dễ hình dung hơn.
 
Tôi có 1 form, trong đó có hai form: form1 (contactID, họ tên, địa chỉ) và form2 (paymentID, contactID, paymentamount). Tôi muốn khi nhấp đôi một record trên form1, thì ở form2 một record mới được tạo ra với dữ liệu ở field contactID lấy từ field contactID được nhấp đôi ở form1. Xin anh em GPE chỉ giúp. Cám ơn rất nhiều.
Tạo mối quan hệ (cha - con) cho nó là được.

Bạn xem file đính kèm nhé.
 

File đính kèm

Tạo mối quan hệ (cha - con) cho nó là được.

Bạn xem file đính kèm nhé.

Cám ơn bạn nhiều. Cách bạn làm rất hay. Nhưng rất tiếc là tôi không thể nhập thêm record thứ hai ở frmPayment_Sub với báo lỗi duplicate value.

Tôi tìm được đoạn mã này:
Private Sub Form_DblClick(Cancel As Integer)Dim sWHERE As String


'Comment out or delete the line that does not apply --
''If the ID is a number, built the WHERE clause like this:
sWHERE = "[ContactID] = " & Me.ContactID
''If the ID is a text value, you need to surround the ID in single quotes
'sWHERE = "[ContactID] = '" & Me.ContactID & "'"


'Open the form
DoCmd.OpenForm "Payment", acNormal, , sWHERE, , , acFormAdd


End Sub
Nhưng không thể thực hiện được. Nhờ bạn có thể giúp giùm. Cám ơn bạn.
 
Xin bạn xem file đính kèm

Cám ơn bạn nhiều. Cách bạn làm rất hay. Nhưng rất tiếc là tôi không thể nhập thêm record thứ hai ở frmPayment_Sub với báo lỗi duplicate value.

Tôi tìm được đoạn mã này:
Private Sub Form_DblClick(Cancel As Integer)Dim sWHERE As String


'Comment out or delete the line that does not apply --
''If the ID is a number, built the WHERE clause like this:
sWHERE = "[ContactID] = " & Me.ContactID
''If the ID is a text value, you need to surround the ID in single quotes
'sWHERE = "[ContactID] = '" & Me.ContactID & "'"


'Open the form
DoCmd.OpenForm "Payment", acNormal, , sWHERE, , , acFormAdd


End Sub
Nhưng không thể thực hiện được (file đính kèm). Nhờ bạn có thể giúp giùm. Cám ơn bạn.
 

File đính kèm

Cám ơn bạn nhiều. Cách bạn làm rất hay. Nhưng rất tiếc là tôi không thể nhập thêm record thứ hai ở frmPayment_Sub với báo lỗi duplicate value.

Tôi tìm được đoạn mã này:
Private Sub Form_DblClick(Cancel As Integer)Dim sWHERE As String


'Comment out or delete the line that does not apply --
''If the ID is a number, built the WHERE clause like this:
sWHERE = "[ContactID] = " & Me.ContactID
''If the ID is a text value, you need to surround the ID in single quotes
'sWHERE = "[ContactID] = '" & Me.ContactID & "'"


'Open the form
DoCmd.OpenForm "Payment", acNormal, , sWHERE, , , acFormAdd


End Sub
Nhưng không thể thực hiện được. Nhờ bạn có thể giúp giùm. Cám ơn bạn.

Bạn thay đổi thuộc tính của trường ContactID theo hình bên dưới là được.

0.jpg
 
Cám ơn bạn rất nhiều. Nhưng tôi không thể tìm kiếm trên form frmBuyer_Sub được vì danh sách tên người rất dài. Bạn có cách nào để tìm nhanh đến một người?
 
Cám ơn bạn rất nhiều. Nhưng tôi không thể tìm kiếm trên form frmBuyer_Sub được vì danh sách tên người rất dài. Bạn có cách nào để tìm nhanh đến một người?
Thì bạn muốn tên nào thì tìm tên đó, bằng cách tạo 2 textbox, 1 textbox (txtHoten1) để dùng gõ tên cần tìm, 1 textbox (txtHoten) để làm điều kiện tìm là được.
Cách làm như sau:

Record Source cho form frmBuyer_Sub như sau:

SELECT tblBuyer.ContactID, tblBuyer.HoTen, tblBuyer.DiaChi
FROM tblBuyer
WHERE (((tblBuyer.HoTen) Like [forms]![frmMain]![txtHoten]));

Code trong form frmMain

Mã:
Option Compare Database
Private Sub Form_Load()
txtHoten = "*"
frmBuyer.Requery
End Sub


Private Sub txtHoten1_Change()
txtHoten = "*" & txtHoten1.Text & "*"
frmBuyer.Requery

End Sub

Bạn xem thêm file nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn bạn rất nhiều vì đã kiên nhẫn giúp mình. Bạn thật là một người nhiệt tình và quảng đại đã giúp đỡ rất tận tình. Mình chỉ mày mò tự học Access, chủ yếu là qua các ví dụ cụ thể nên có lẽ có những câu hỏi làm mất nhiều thời gian của các bạn. Mong các bạn thông cảm.
 
Trong for record source của form frmBuyer_Sub, mình muốn kết hợp thêm một field nữa như sau (vì dữ liệu của mình họ và tên riêng rẻ):

SELECT tblBuyer.ContactID, tblBuyer.HoTen, tblBuyer.DiaChi
FROM tblBuyer
WHERE (((tblBuyer.HoTen & ' ' & tblBuyer.TenGoi) Like [forms]![frmMain]![txtHoten]));

Nhưng kết quả không được như bạn làm. Bạn có thể giúp thêm mình được không? Mến chào bạn.
 
Trong for record source của form frmBuyer_Sub, mình muốn kết hợp thêm một field nữa như sau (vì dữ liệu của mình họ và tên riêng rẻ):

SELECT tblBuyer.ContactID, tblBuyer.HoTen, tblBuyer.DiaChi
FROM tblBuyer
WHERE (((tblBuyer.HoTen & ' ' & tblBuyer.TenGoi) Like [forms]![frmMain]![txtHoten]));

Nhưng kết quả không được như bạn làm. Bạn có thể giúp thêm mình được không? Mến chào bạn.
Bạn thử như sau coi được không nhé.
SELECT tblBuyer.ContactID, [HoTen] & " " & [TenGoi] AS Ten, tblBuyer.DiaChi
FROM tblBuyer
WHERE ((([HoTen] & " " & [TenGoi]) Like [forms]![frmMain]![txtHoten]));
 
Tuyệt vời!!! Không biết làm cách nào để đáp lại sự giúp đỡ của bạn.

Chỉ có một điều nhỏ nữa thôi là trong file đính kèm của bạn. Khi đánh chữ vào ô txtHoten1 (ví dụ: "nguyen van") thì thanh chọn ở subfrom frmBuyer_Sub ở vị trí record đầu tiên (nguyen van 1) ứng với các chữ đánh vào, cùng với danh sách những người có tên (là "nguyen van"), và ở subform frmPayment_Sub hiển thị ContactID tương ứng. Tuy nhiên khi đánh tiếp (ví dụ: "nguyen van 20", hoặc là bất cứ tên nào khác record đầu tiên đã có thanh chọn, ở đây là "nguyen van 1"), thì lúc này ở subform frmPayment_Sub lại không hiển thị ContactID tương ứng với subfrom frmBuyer_Sub, nhưng cứ là của record đầu tiên đã có thanh chọn). Ngoài ra, nếu chọn một giá trị mặc định cho field PaymentAmount, thì ở frmPayment_Sub, thì giá trị này hiển thị nhưng không được nhận, bắt buộc phải đánh vào, rồi mới cho thêm record mới.

Chúc bạn một ngày tốt lành! Mến chào bạn.
 
Lần chỉnh sửa cuối:
Tuyệt vời!!! Không biết làm cách nào để đáp lại sự giúp đỡ của bạn.

1) Chỉ có một điều nhỏ nữa thôi là trong file đính kèm của bạn. Khi đánh chữ vào ô txtHoten1 (ví dụ: "nguyen van") thì thanh chọn ở subfrom frmBuyer_Sub ở vị trí record đầu tiên (nguyen van 1) ứng với các chữ đánh vào, cùng với danh sách những người có tên (là "nguyen van"), và ở subform frmPayment_Sub hiển thị ContactID tương ứng. Tuy nhiên khi đánh tiếp (ví dụ: "nguyen van 20", hoặc là bất cứ tên nào khác record đầu tiên đã có thanh chọn, ở đây là "nguyen van 1"), thì lúc này ở subform frmPayment_Sub lại không hiển thị ContactID tương ứng với subfrom frmBuyer_Sub, nhưng cứ là của record đầu tiên đã có thanh chọn).
2) Ngoài ra, nếu chọn một giá trị mặc định cho field PaymentAmount, thì ở frmPayment_Sub, thì giá trị này hiển thị nhưng không được nhận, bắt buộc phải đánh vào, rồi mới cho thêm record mới.

Chúc bạn một ngày tốt lành! Mến chào bạn.

Câu 1: Bạn thên dòng code sau vào là được.

Mã:
Option Compare Database
Private Sub Form_Load()
txtHoten = "*"
frmBuyer.Requery
[COLOR=#0000ff]frmPayment_Sub.Requery[/COLOR]
End Sub

Private Sub txtHoten1_Change()
txtHoten = "*" & txtHoten1.Text & "*"
frmBuyer.Requery
[COLOR=#0000ff]frmPayment_Sub.Requery[/COLOR]
End Sub

Câu 2: bạn phải tác động đến nó mới ghi vào bảng chứ, còn nếu tự động thì làm sao được, chẳng lẽ khi mình tìm được cái nào thì nó đều ghi dữ liệu vào cái đó.
 
Lần chỉnh sửa cuối:
Hay quá! Cám ơn bạn rất nhiều. Mình còn "khờ" về Access lắm, và còn nhiều điều phải học hỏi từ bạn và các bạn khác ở GPE.

T.B. Chúc diễn đàn đổi host thuận lợi và ngày càng phát triển.
 
Web KT

Bài viết mới nhất

Back
Top Bottom