Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Lấy nhanh thông tin tra cứu về Form !
#1
Xin mạn phép "Các ACE Pro", tmtien261 xin chia sẻ cùng một số "ACE mới nghiên cứu Acc" một cách lấy nhanh thông tin tra cứu về Form bằng việc sử dụng Tempvars. Cách này rất "đang giỡn" với các ACE Pro, nhưng với các ACE mới tiếp cận Acc thì rất hữu ích.
Nội dung chính:
Bước 1: Tạo các From, table
1. frmXuathang gồm textbox: txtMahang, txtTenhang.
2. frmDanhsachhanghoa gồm: ma, ten, soluongdon, dongia có nguồn từ table tblDanhsachhanghoa (ma,ten,soluongton,dongia)
Bước 2:
1. Trên FormXuathang:
- Tại On Double_Click của txtMahang gõ lệnh:
Mã:
Docmd.OpenForm "frmDanhsachhanghoa"
- Tại On Active của form gõ đoạn code sau:
Mã:
If Me.txtMahang.Enabled = True Then
        If Not IsNull(TempVars!BienMahang) Then
            Me.txtMahang.Value = TempVars!BienMahang
            Me.txtTenhang.Value = TempVars!BienTenhang
            TempVars.Remove "BienMahang"
            TempVars.Remove "BienTenhang"
        End If
    End If
2. Trên frmDanhsachhanghoa:
- Tại On Double_Click của textbox Ma gõ đoạn code:
Mã:
If CurrentProject.AllForms("frmXuathang").IsLoaded = False Then
        Exit Sub 'Hoặc thực hiện thông báo jj đó ...
    Else
        TempVars.Add "BienMahang", Me.ma.Value
        TempVars.Add "BienTenhang", Me.ten.Value
        DoCmd.Close acForm, "frmDanhsachhanghoa"
    End If
3. Thực thi:
Mở frmXuathang, nhấp đúp chuột trái vào txtMahang sẽ mở Form danh sách hàng hóa. Trên frmDanhsachhanghoa, nhấp dúp chuột trái vào textbox ma (Mã hàng) sẽ lấy thông tin Mã hàng, Tên hàng về frmXuathang.
Demo
Thân chào !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#2
1/ Đơn giản như "đan rổ", không cần cầu kỳ như vậy. Đã một lần hướng dẫn trên diễn đàn rồi, hôm nay nhắc lại thôi
2/ Chỉ cần hai câu lệnh truyền tham số từ form sang form là OK

2.1/ Tại form frmHangXuat
Mã:
Private Sub txtMaHang_Click()
    DoCmd.OpenForm "frmHangHoa", acNormal
End Sub

2.2/ Tại form frmHangHoa
Mã:
Private Sub MaHang_Click()
    Forms!frmHangXuat!txtMaHang = Forms!frmHangHoa!MaHang
    Forms!frmHangXuat!txtTenHang = Forms!frmHangHoa!TenHang
    DoCmd.Close
End Sub

Thân mến
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên , haquocquan
#3
Cảm ơn XT !
Vì trong ứng dụng của mình có nhiều Form yêu cầu lấy thông tin trong Danh sách hàng hóa nên mình sẽ kết hợp việc dùng Tempvars với cách của Xuân Thanh để lấy thông tin. Cụ thể:
1. Tại txtMahang_DblClick trên form1, viết đoạn code:
Mã:
TempVars.Add "BienTimMahang", "Form1"
DoCmd.OpenForm "frmDanhsachhanghoa", acNormal, , , , acWindowNormal
2. Tại txtMahang_DblClick trên form2, viết đoạn code:
Mã:
TempVars.Add "BienTimMahang", "Form2"
DoCmd.OpenForm "frmDanhsachhanghoa", acNormal, , , , acWindowNormal

3. Tại Mahang_DblClick trên form frmDanhsachhanghoa, viết đoạn code:
Mã:
Private Sub Mahang_DblClick(Cancel As Integer)
    If IsNull(TempVars!BienTimMahang) Then
        Exit Sub
    Else
        Dim frmName As Form
        Select Case TempVars!BienTimMahang
            Case "Form1"
                Set frmName = Forms!Form1
            Case "Form2"
                Set frmName = Forms!Form2
        End Select
        With frmName.Form
            !txtMahang = Forms!frmDanhsachhanghoa!Mahang
            !txtTenhang = Forms!frmDanhsachhanghoa!Tenhang
        End With
        DoCmd.Close acForm, "frmDanhsachhanghoa"
        TempVars.Remove "BienTimMahang"
    End If
End Sub
4. Xin hỏi các Pro mình muốn lấy giá trị của biến BienTimMahang để làm tên cho Form (Ví dụ như: Form1) sau đó dùng tên này làm tên Form luôn (Ko dùng kiểu Select hay If để set Form) ko biết có cách nào làm được không ?
Mình "mò" mãi ko được. Nhờ các ACE Pro chỉ giúp, cảm ơn nhiều !

Nhân dịp năm 2013 sắp hết, năm 2014 chuẩn bị đến, tmtien261 chúc các ACE hãy rũ bỏ những buồn phiền của năm cũ, chuẩn bị đón nhận nhiều may mắn, thật nhiều hạnh phúc trong năm mới ! Happy New Year !
Thân chào !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn haquocquan
#4
(31-12-13, 05:39 PM)tmtien261 Đã viết: .......
4. Xin hỏi các Pro mình muốn lấy giá trị của biến BienTimMahang để làm tên cho Form (Ví dụ như: Form1) sau đó dùng tên này làm tên Form luôn (Ko dùng kiểu Select hay If để set Form) ko biết có cách nào làm được không ?
Mình "mò" mãi ko được. Nhờ các ACE Pro chỉ giúp, cảm ơn nhiều !

Nhân dịp năm 2013 sắp hết, năm 2014 chuẩn bị đến, tmtien261 chúc các ACE hãy rũ bỏ những buồn phiền của năm cũ, chuẩn bị đón nhận nhiều may mắn, thật nhiều hạnh phúc trong năm mới ! Happy New Year !
Thân chào !

Cũng được thôi nhưng hơi phức tạp một tý
1/ Tạo một modul mới rồi chép đoạn code sau vào

Mã PHP:
Option Compare Database
Option Explicit
Public frmABC As String

Function FormIsLoaded(frmName As String) As Boolean
    Dim i 
As Integer
    FormIsLoaded 
False
    
For 0 To Forms.Count 1
        
If Forms(i).Name frmName Then
            FormIsLoaded 
True
            
Exit Function
        
End If
    
Next
End 
Function 

2/ Tại form cần lấy dữ liệu (ví dụ frmHangNhap)

Mã PHP:
Option Compare Database
Option Explicit

Private Sub txtMaHang_Click()
    
DoCmd.OpenForm "frmHangHoa"acNormal
    frmABC 
"frmHangNhap"
End Sub 

3/ Tại form frmHangHoa

Mã PHP:
Option Compare Database
Option Explicit

Private Sub MaHang_Click()
    If 
FormIsLoaded(frmABC) = True Then
         With Forms
(frmABC)
            .
Form!txtMaHang Forms!frmHangHoa!MaHang
            
.Form!txtTenHang Forms!frmHangHoa!TenHang
        End With
    End 
If
    
DoCmd.Close
End Sub 

Thế là OK thôi
Thân mến

P/S : Bạn có thể tạo một hàm lấy dữ liệu rồi từ form cần lấy dữ liệu(ví dụ trên là form frmHangNhap) gọi hàm này để thực thi. Bạn nghiên cứu tiếp nhé

Muốn dùng TemVar như bạn thì Public một form như tôi đã làm là được. Nhưng khuyên bạn đừng phức tạp hóa vấn đề. càng đơn giản bao nhiêu càng tốt bấy nhiêu miễn sao chương trình chạy ổn định là được. Nhiều khi chương trình bị lỗi, mình cũng chẳng biết lỗi ở dâu mà sửa
Thân mến
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] Thiết kế form nhập và lưu trữ dữ liệu theo yêu cầu brianhuynh 16 624 20-10-16, 10:54 PM
Bài mới nhất: brianhuynh
  [Hỏi] Cách loại bỏ icon Filter trên Datasheet Form có nguồn là Query. toancvp 2 99 19-10-16, 08:53 PM
Bài mới nhất: toancvp
  [Help] Nhờ tạo form lưu hóa đơn nhập, hóa đơn xuất, hàng nhập hàng xuất không cần tính tồn laxx_xxal 1 131 22-09-16, 02:35 PM
Bài mới nhất: Nguyen Hoang Diep
  [Hỏi] Cách đưa chức năng compact & repair vào form toancvp 6 490 24-08-16, 12:19 AM
Bài mới nhất: paulsteigel
  Vô hiệu hóa nút Close của Form (cửa sổ) ChiMai 3 249 07-08-16, 04:34 PM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ