Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Sử dụng chuột giữa trong subform là report.
#1
Thực tế là em có 2 vấn đề muốn được các anh hướng dẫn. Chẳng là em đang làm cái form dùng cho mục đích tra cứu dữ liệu, vì vậy em thiết kế 1 unbound form và subform nguồn là report. Lý do sử dụng report là vì, nếu dùng nguồn cho subform là query thì ko sử dụng đc kiểu group by của report.
Mà kết quả truy vấn report thì rất rộng, subform luôn trong tình trạng cần cuộn lên cuộn xuống, nhưng khi dùng chuột giữa em thấy ko có tác dụng gì cả, phải dùng chuột trái kéo lên xuống mới cuộn report đc ạ, em cũng đã làm thử theo search google nhưng cũng chưa ra vấn đề để dùng đc chuột giữa.
Vấn đề thứ 2 của em là, vẫn cái subform nguồn là report đó, làm sao để ngay khi lọc xong thì nó sẽ nhảy xuống record cuối cùng trong report đó.

Các bác cho em hướng dẫn với ạ,
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#2
Làm sao mà bạn bỏ được cái Report vô Form để làm Sub form???
Còn nếu chỉ dùng cái Row source của Report thì thực tế nó cũng chỉ là Query.
Vô Query Design -> click chọn Total thì sẽ có Group by thôi.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Ak, em nói lộn, là cái chức năng group, sort and total của report ấy ạ; cái group by của query thì nó chỉ nhóm lại, chứ ko đưa đc cái khóa chính lên làm header như cái này. Em chỉ đơn thuần là vẽ cái khung subform, rồi cho source object là report đó, chứ ko phải là kéo report vào form đâu bác ạ.
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#4
Ak thật ra thì ban đầu em nghĩ cho report vào ko phải là do chức năng Group, Sort and Total đâu ạ. Là do nếu để source object là query thì ko tài nào áp được hàm co giãn chiều cao của anh maidinhdan cho report, nên em mới nảy ra ý tưởng thử để sub form chính là cái report đó thì có lẽ sẽ giải quyết đc vấn đề, sau này thì phát hiện ra dùng cái Group, Sort and Total áp vào rất hợp ý tưởng nên em tiếp tục tiến hành bác ạ.
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn maidinhdan
#5
(05-10-16, 11:23 PM)toancvp Đã viết: Ak thật ra thì ban đầu em nghĩ cho report vào ko phải là do chức năng Group, Sort and Total đâu ạ. Là do nếu để source object là query thì ko tài nào áp được hàm co giãn chiều cao của anh maidinhdan cho report, nên em mới nảy ra ý tưởng thử để sub form chính là cái report đó thì có lẽ sẽ giải quyết đc vấn đề, sau này thì phát hiện ra dùng cái Group, Sort and Total áp vào rất hợp ý tưởng nên em tiếp tục tiến hành bác ạ.

Ở trên đây cao thủ như mây, mình chỉ bạn cách đặt câu hỏi để có trả lời nhanh nèmà code áp dụng hay nửa.

1. Bạn vẽ kết quả bạn muốn lên file Word hoặc Post hình Demo kết quả vẽ ở đâu cũng được
2. Kèm file bạn ( Xóa hết cái không liên quan, chỉ chừa lại cái cần hỏi.
3. Đặt vấn đề muốn có
4. Nếu có ví dụ càng hay.

Thân!
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn toancvp , Noname
#6
(05-10-16, 07:18 PM)toancvp Đã viết: Thực tế là em có 2 vấn đề muốn được các anh hướng dẫn. Chẳng là em đang làm cái form dùng cho mục đích tra cứu dữ liệu, vì vậy em thiết kế 1 unbound form và subform nguồn là report. Lý do sử dụng report là vì, nếu dùng nguồn cho subform là query thì ko sử dụng đc kiểu group by của report.
Mà kết quả truy vấn report thì rất rộng, subform luôn trong tình trạng cần cuộn lên cuộn xuống, nhưng khi dùng chuột giữa em thấy ko có tác dụng gì cả, phải dùng chuột trái kéo lên xuống mới cuộn report đc ạ, em cũng đã làm thử theo search google nhưng cũng chưa ra vấn đề để dùng đc chuột giữa.
Vấn đề thứ 2 của em là, vẫn cái subform nguồn là report đó, làm sao để ngay khi lọc xong thì nó sẽ nhảy xuống record cuối cùng trong report đó.

Các bác cho em hướng dẫn với ạ,

Bạn xem demo ở bài viết này http://thuthuataccess.com/forum/thread-5157.html , chắc là đúng ý tưởng của bạn
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan , toancvp , Noname
#7
Anh ledangvan ơi, em cho luôn cái report thành subform rồi, vì mục đích của em là sử dụng lọc dữ liệu thôi ạ, vấn đề của em là cái khác cơ.

Anh maidinhdan ơi, vâng ạ big green. Ak nhưng tiện thể, em đã thử chuyển sang .mdb rồi mà ko đc, chắc tại vì OFF2013 của em nó chuyển Memo thành Long Text, nên khi save as sang .mdb thì nó ko cho, nó báo là một số gì đó ko thể lưu ở phiên bản cũ hơn của Access, mà em kiểm tra code và form hết rồi, toàn cái bình thường thôi, riêng cái Long Text là lần đầu dùng. Nên em xin phép gửi file ảnh lên để các anh xem hộ.

http://www.upsieutoc.com/image/cyk0r
http://www.upsieutoc.com/image/cy4gQ
http://www.upsieutoc.com/image/cyZGD
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#8
Bạn lưu thành Access 2007 đc ko, gửi lên tôi xem thử.
Có demo sử dụng hàm API của win để xử lý thao tác cuộn chuột trong textbox này.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#9
@ongke0711
bác ơi nó ko có cái đó, chỉ có 1 loại là 2000-2003 vs .accdb thôi, em gửi lên, bác xem có mở đc ko nhé, em hy vọng là đc để các bác giúp em.

https://drive.google.com/open?id=0B4WYRA...lAyc2lRMkU
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#10
File bạn khi mở lên nó báo lỗi không thể mở Report trong Form và nó bị disabled luôn, không vào chế độ Design view được. Tôi xài Access 2007.
Theo tôi nghĩ bạn nên thiết kế bằng sub form chính thống. Dùng 1 subF cho Mã HS chung và link với SubF của Mã HS chi tiết. Cái không hay ở form là bạn không thể co dãn chiều cao tùy nội dung từng record như Report đc. Nhưng bạn cũng có thể dùng hàm để lăn chuột ngay bên trong từng textbox để xem hết nội dung của nó.
Từ Access 2007 trở lên thì nó đã vô hiệu hóa nút lăn chuột trên form khi ở dạng Single hoặc Continueous (ngoại trừ dạng Datasheet view). Lý do: Record sẽ tự lưu ngoài ý muốn khi bạn lăn chuột di chuyển giữa các records.

Allen Browne có hàm DoMouseWheel để kích hoạt lại tính năng lăn chuột từng record. Bạn copy nó vào Module.

 
Mã PHP:
Public Function DoMouseWheel(frm As FormlngCount As Long) As Integer
On Error 
GoTo Err_Handler
   
'Purpose:   Make the MouseWheel scroll in Form View in Access 2007 and later.
   ' 
          This code lets Access 2007 behave like older versions.
   'Return:    1 if moved forward a record, -1 if moved back a record, 0 if not moved.
   '
Author   Allen BrowneFebruary 2007.
   
'Usage:     In the MouseWheel event procedure of the form:
   ' 
              Call DoMouseWheel(MeCount)
   Dim strMsg As String
   
'Run this only in Access 2007 and later, and only in Form view.
   If (Val(SysCmd(acSysCmdAccessVer)) >= 12#) And (frm.CurrentView = 1) And (lngCount <> 0&) Then
       '
Save any edits before moving record.
       RunCommand acCmdSaveRecord
       
'Move back a record if Count is negative, otherwise forward.
       RunCommand IIf(lngCount < 0&, acCmdRecordsGoToPrevious, acCmdRecordsGoToNext)
       DoMouseWheel = Sgn(lngCount)
   End If

Exit_Handler:
   Exit Function

Err_Handler:
   Select Case Err.Number
   Case 2046&                 '
Can't move before first, after last, etc.
       Beep
   Case 3314&, 2101&, 2115&   '
Can't save the current record.
       strMsg = "Cannot scroll to another record, as this one can'
t be saved."
       MsgBox strMsg, vbInformation, "
Cannot scroll"
   Case Else
       strMsg = "
Error " & Err.Number & "" & Err.Description
       MsgBox strMsg, vbInformation, "
Cannot scroll"
   End Select
   Resume Exit_Handler
End Function 

- Ở form, vào sự kiện On Mouse Wheel, gọi hàm DoMouseWheel.

-------------------------------------
* Hàm này để lăn chuột bên trong textbox.
- Copy vào module.

Mã PHP:
'***************************************************************************************
Module    mod_ScrollingTextBox
' Author    : CARDA Consultants Inc.
Website   http://www.cardaconsultants.com
' Copyright : Please note that U.O.S. all the content herein considered to be
            intellectual property (copyrighted material).
'             It may not be copied, reused or modified in any way without prior
            authorization from its author(s).
'***************************************************************************************

Option Compare Database
Option Explicit

Private Const sModName = "mod_ScrollingTextBox"

'
Scrolling Constants
Public Const WM_VSCROLL = &H115
Public Const WM_HSCROLL = &H114
Public Const SB_LINEUP 0
Public Const SB_LINEDOWN 1
Public Const SB_PAGEUP 2
Public Const SB_PAGEDOWN 3

Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
   hwnd 
As LongByVal wMsg As LongByVal wParam As IntegerByVal lParam As Any_
   As Long

Function fhWnd(ctl As control) As Long
   On Error Resume Next
   ctl
.SetFocus
   If Err Then
       fhWnd 
0
   Else
       fhWnd 
apiGetFocus
   End 
If
   On Error GoTo 0
End 
Function 

- Ở Form, sự kiện On Mouse Wheel:
Mã PHP:
Private Sub Form_MouseWheel(ByVal Page As BooleanByVal Count As Long)
   Dim LinesToScroll   As Integer
   Dim hwndActiveControl 
As Long
   Dim i               
As Long

   If ActiveControl
.Properties.Item("controltype") = acTextBox Then
       hwndActiveControl 
fhWnd(Screen.ActiveControl)
       For i 1 To Abs(Count)
           SendMessage hwndActiveControlWM_VSCROLLIIf(Count 0SB_LINEUPSB_LINEDOWN), 0&
       Next
   End 
If
End Sub 

Bạn xem rồi áp dụng vô form tìm kiếm của bạn xem sao nhé.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên , maidinhdan , toancvp


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Làm sao để ấn định Null cho trường Date khi sử dụng Class Module Minh Tiên 8 614 18-11-16, 09:29 AM
Bài mới nhất: MinhnHang
  [Help] Giúp đỡ về cách xóa nội dung trong một field nam8384 2 117 17-10-16, 08:43 PM
Bài mới nhất: toancvp
  Lọc theo điều kiện trong listbox Ranju 3 178 06-10-16, 05:26 PM
Bài mới nhất: Ranju
  Định dạng trong listbox feeling 3 159 06-10-16, 02:44 PM
Bài mới nhất: jeck09nt
  [Help] Áp dụng query lọc dữ liệu nhập vào form amazonvn82 8 1,327 05-10-16, 03:11 PM
Bài mới nhất: amazonvn82

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ơ