toancvp > 05-10-16, 07:18 PM
ongke0711 > 05-10-16, 09:30 PM
toancvp > 05-10-16, 10:28 PM
toancvp > 05-10-16, 11:23 PM
maidinhdan > 06-10-16, 10:47 AM
(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 ạ.
ledangvan > 06-10-16, 11:32 AM
(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 ạ,
toancvp > 06-10-16, 08:49 PM
ongke0711 > 06-10-16, 10:53 PM
toancvp > 07-10-16, 01:23 AM
ongke0711 > 09-10-16, 06:20 PM
Public Function DoMouseWheel(frm As Form, lngCount 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 Browne, February 2007.
'Usage: In the MouseWheel event procedure of the form:
' Call DoMouseWheel(Me, Count)
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
'***************************************************************************************
' 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 Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal 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
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal 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 hwndActiveControl, WM_VSCROLL, IIf(Count < 0, SB_LINEUP, SB_LINEDOWN), 0&
Next
End If
End Sub