Chào mừng, Khách
Bạn cần phải đăng ký trước khi bạn có thể đăng trên trang web của chúng tôi.

Tên người dùng
  

Mật khẩu
  





Diễn đàn Tìm kiếm

(Tìm kiếm nâng cao)

Diễn đàn Thống kê
» Thành viên: 3,380
» Thành viên mới nhất: ture-kishا
» Các chủ đề diễn đàn: 8,689
» Các bài viết diễn: 38,164

Thống kê đầy đủ

Thành viên online
Hiện đang có 45 người dùng trực tuyến.
» 0 Thành viên | 42 Khách
AhrefsBot, Bing, Cốc Cốc

Chủ đề Mới nhất
Cách tăng tốc độ Copy Pas...
Chuyên mục: Tương tác Chương trình ngoài
Đăng bởi lần cuối: ongke0711
11 Giờ trước
» Bài trả lời: 6
» Lượt xem: 201
[Góc thơ] THAO THỨC
Chuyên mục: Góc Thơ
Đăng bởi lần cuối: Nguyễn Thành Sáng
Hôm qua, 09:17 PM
» Bài trả lời: 895
» Lượt xem: 97,240
Tạo MeNu Form bằng Naviga...
Chuyên mục: Thư viện thủ thuật
Đăng bởi lần cuối: Xuân Thanh
Hôm qua, 05:34 PM
» Bài trả lời: 5
» Lượt xem: 199
Thay đổi logo trong table
Chuyên mục: Forms
Đăng bởi lần cuối: Bao Khang
19-04-19, 03:58 PM
» Bài trả lời: 2
» Lượt xem: 114
Gộp 2 query có cũng MaKH
Chuyên mục: Query
Đăng bởi lần cuối: vuthaiha90
18-04-19, 02:41 PM
» Bài trả lời: 2
» Lượt xem: 145
Liên kết textbox với List
Chuyên mục: Forms
Đăng bởi lần cuối: vietnc
17-04-19, 11:29 AM
» Bài trả lời: 10
» Lượt xem: 513
Tạo MeNu Form(Bài 2) : Th...
Chuyên mục: Thư viện thủ thuật
Đăng bởi lần cuối: Xuân Thanh
17-04-19, 10:29 AM
» Bài trả lời: 0
» Lượt xem: 77
Trộn văn bản Word từ dữ l...
Chuyên mục: Tương tác Chương trình ngoài
Đăng bởi lần cuối: Xuân Thanh
17-04-19, 10:02 AM
» Bài trả lời: 15
» Lượt xem: 473
lấy dữ liệu từ query sang...
Chuyên mục: Table
Đăng bởi lần cuối: ongke0711
15-04-19, 08:35 PM
» Bài trả lời: 9
» Lượt xem: 803
Mong giúp đỡ về form logi...
Chuyên mục: Forms
Đăng bởi lần cuối: ongke0711
15-04-19, 07:10 PM
» Bài trả lời: 8
» Lượt xem: 347

 
  Tùy Biến Các Cột thay đổi trong Report
Viết bởi: Noname - 27-08-10, 10:04 AM - Chuyên mục: Report - Bài trả lời (3)

Bài này được Copy của tác giả paulsteigel bên Giải Pháp Excel. Thấy hay nên Copy về đây cho mọi người tham khảo.
Đó là 1 report có format tương đối giống nhau, nhưng có các cột thay đổi tùy ý. Xin copy lại nguyên gốc tác giả. Và thắc mắc có thể vào link gốc để hỏi trực tiếp tác giả!
link gốc

Trích dẫn:Lâu lắm rồi không làm việc với Access, hôm nay có việc phải quay lại làm mấy việc với công cụ báo cáo Report của Access, tiện thể tôi xin chia sẻ một kỹ năng nho nhỏ với các bạn đã và đang, có thể sẽ sử dụng nhiều Access trong công việc.
Đã bao giờ các bạn nghĩ đến việc sử dụng một báo cáo cho nhiều mục đích, hiển thị nhiều báo cáo có bố cục tương đối giống nhau không?
Nếu bạn phải trình bày bảng dữ liệu có quá nhiều cột, bạn muốn báo cáo tự động chia số cột cho đều theo khổ giấy A4, phần còn thừa sẽ chuyển sang báo cáo mới và căn chỉnh độ rộng cột cho phù hợp?
...vv
Thường thì mọi người sẽ xác định giải pháp là: thôi thì tạo ra hàng loạt mẫu báo cáo để có thể dự phòng được trường hợp số cột là nhiều nhất, các báo cáo này giống nhau căn bản và chỉ khác nhau mỗi cái tên.
Với yêu cầu này, tôi xin giới thiệu một cách sử dụng tính năng thừa kế lớp của đối tượng Report (chắc các cao thủ thì đều đã làm rồi, mạo muội xin giới thiệu lại và hy vọng sẽ giúp ích được các bạn).
Đầu bài là:
Tôi có bảng danh sách có 15 cột dữ liệu và cần in ra trên 2 hoặc nhiều hơn báo cáo trên khổ A4 trong đó 4 cột đầu thì giữ nguyên trong khi các cột khác thay đổi và tự điều chỉnh kích thước để phù hợp với khổ giấy. (Chẳng hạn mỗi báo cáo sẽ hiển thị 6 cột thì sẽ có 2 báo cáo là đủ 6 cột còn báo cáo thứ 3 chỉ có 3 cột. Vì thế với báo cáo thứ 3, ta sẽ cần hiệu chỉnh kích thước cột để tràn ra toàn khổ giấy).
Vậy tôi cần làm gì?
1.Thiết kế mẫu báo cáo có số cột lớn nhất có thể thể hiện trên khổ giấy A4 (đảm bảo kích thước vừa đẹp).
2.Viết Code để sử dụng tính năng thừa kế lớp của các đối tượng báo cáo.
3.Viết code để gọi và hiển thị báo cáo.
Với mẫu báo cáo, chúng ta cần có các thủ tục giúp vẽ đường lưới ngang dọc, ở đây tôi dùng lệnh draw trong Access và các bạn có thể quan sát cách gọi thủ tục DrawGrid tại phần format section của báo cáo.
If PrintCount = 1 Then DrawGrid Me, RptCol + 4
Sử dụng biến PrintCount để bỏ qua việc vẽ lại, tham số RptCol + 4 thể hiện yêu cầu sẽ chỉ bắt đầu vẽ kể từ cột thứ tư.
Các bạn cần chú ý cách đặt tên các textbox và label để tiện tham chiếu ("txt" & i và "lbl" & i) trong đó txt và lbl là tiền tố đầu của textbox và nhãn.
Tiếp theo tôi xử lý phần điều chỉnh độ rộng cột bằng cách tính toán số cột tối đa và tính ra độ rộng phù hợp của báo cáo trong sự kiện Report_open.
Có khá nhiều code nhưng nói chung phần này giúp giải quyết việc xác định kích thước các cột và đặt tên nhãn cũng như xử lý về chuỗi cung cấp dữ liệu cho báo cáo.
Các bạn có thể xem qua ví dụ tôi gửi kèm để tiện tham khảo.
Nếu có điều kiện tôi sẽ viết dài dòng hơn để mọi người đều có thể chia sẻ.
Các bạn mở frmReport và nhấn nút, chúng ta sẽ thấy kết quả là có 3 báo cáo được mở cùng lúc trong khi tôi chỉ sử dụng 1 báo cáo mẫu duy nhất.
Thành thật xin lỗi các bạn về việc hơi ẩu khi lạm dụng comment bằng tiếng Anh. - Nếu có điều kiện tôi sẽ viết lại bằng tiếng Việt
Chúc các bạn một buổi tối vui vẻ!
Demo

In mục này

  Sort List theo Alphabe
Viết bởi: Noname - 27-08-10, 09:56 AM - Chuyên mục: Thư viện thủ thuật - Bài trả lời (3)

Mới lang thang tìm thấy 1 đoạn code cho phép Sort 1 Listbox theo Alphabe. Mời mọi người tham khảo, có gì thắc mắc cứ comment hỏi nhé!

Mã:
Function SortListBox(objListBox As ListBox)
    Dim intFirst As Integer
    Dim intLast As Integer
    Dim intNumItems As Integer
    Dim i As Integer
    Dim j As Integer
    Dim strTemp As String
    Dim MyArray() As Variant

    'Re-Dim the array
    ReDim MyArray(objListBox.ListCount - 1)

    'Get upper and lower boundary
    intFirst = LBound(MyArray)
    intLast = UBound(MyArray)

    'Set array values
    For i = LBound(MyArray) To UBound(MyArray)
    MyArray(i) = objListBox.ItemData(i)
    Next i

    'Loop through array values to determine sort
    For i = intFirst To intLast - 1
    For j = i + 1 To intLast
    If MyArray(i) > MyArray(j) Then
    strTemp = MyArray(j)
    MyArray(j) = MyArray(i)
    MyArray(i) = strTemp
    End If
    Next j
    Next i

    'Remove all items
    For i = intLast - 1 To intFirst Step -1
    objListBox.RemoveItem i
    Next i

    'Add all items in order
    For i = intFirst To intLast - 1
    objListBox.AddItem MyArray(i), i
    Next

    End Function
Bạn tạo 1 module mới rồi copy đoạn code trên vào.
tạo 1 form, tạo 1 listbox và 1 nút nhất. Để tên mặc định hết cho nhanh nha.
Row source type của lis bạn chọn Value list
Row Source bạn điền: "Rượu;Socola;Bánh;Bao Bì;Bột Ngọt;Cà Chua;Chanh;Đường;Gạo;Hành;Kem Đánh Răng;Khoai Tây;Mì Gói;Mức;Muối;Ớt;Sữa;Tiêu;Hộp quẹt"

hoặc gì tùy bạn

Trong event click nút nhấn, bạn gọi:

Mã:
Private Sub Command1_Click()
    Call SortListBox(List0)
    End Sub


Mời xem demo:
SortList

In mục này

  Tùy biến kích thước Form
Viết bởi: Noname - 27-08-10, 09:53 AM - Chuyên mục: Forms - Bài trả lời (8)




Bạn hoaipnb vừa sưu tầm 1 đoạn code rất thú vị có thể tăng/ giảm kích thước form theo 1 hằng số cho trước trong table.
Tuy nhiên, vì thiếu thông tin nên bạn ấy chưa biết sử dụng thế nào.
Nhân đó mình đã chế biến lại thành 1 form có 2 nút cho phép tăng/giảm kích thước.

Đầu tiên, ta qua cửa sổ VBA thêm 1 module mới. Copy đoạn code sau vào:

Mã:
Private Sub FormReSize(giatri As Single)

    Me.InsideHeight = Me.InsideHeight / giatri
    Me.InsideWidth = Me.InsideWidth / giatri
    Dim ctrl As Control
    For Each ctrl In Me.Controls
    ctrl.Height = ctrl.Height / giatri
    ctrl.Width = ctrl.Width / giatri
    ctrl.Left = ctrl.Left / giatri
    ctrl.Top = ctrl.Top / giatri
    Next
    Me.Repaint

    End Sub

Sau đó, trong form, ta tạo hai nút tăng/ giảm kích thước, để cho nhanh mình để tên mặc định . Và gọi thủ tục trên :

Mã:
Private Sub Command0_Click()
    FormReSize 1.1
    End Sub

    Private Sub Command1_Click()
    FormReSize 0.9
    End Sub

Bạn có thể thay thế chỗ mình tô đỏ cho phù hợp với sở thích của mình. Mời Xem chương trình demo:
Download

In mục này

  Trình tự các sự kiện khi mở-đóng 1 form/report
Viết bởi: Noname - 27-08-10, 09:49 AM - Chuyên mục: Forms - Bài trả lời (2)

Khi ta mở/ đóng form thì có 1 chuỗi các sự kiện diễn ra, Nếu biết điều đó ta có thể chặn các sự kiện để cài mã vào cho thích hợp.
Theo đó, khi bạn mở form/report thì trình tự các sự kiện như sau:
Open → Load → Resize → Activate → Current

Khi đóng form, trình tự các sự kiện như sau:

Unload → Deactivate → Close

------------------
Từ điều này cho thấy, nếu ta muốn chỉnh kích thước các đối tượng thì phải gọi trước sự kiện resize. Tức là Load hoặc open, nếu ta gọi sau (active) thì không có tác dụng.
Tương tự, ta muốn gọi 1 form, điền vào 1 tham số và nhảy setforcut 1 form khác, lấy giá trị từ form này thì phải gọi nó ở sự kiện Current. Vì chưa Active thì nó chưa được điền giá trị vào đó.
....
Tương tự, khi đóng form/report. Ta cũng có thể bẫy chặn các sự kiện nhằm lưu hệ thống . Cụ thể khi form không còn hiện nữa (unload), ta vẫn có thể lưu dữ liệu vì nó chưa hoàn toàn close...

In mục này

  Làm sao để mở data Access ở chế độ Exclusively
Viết bởi: Noname - 27-08-10, 09:43 AM - Chuyên mục: Thư viện thủ thuật - Bài trả lời (1)




Hỏi: Trong Access 2003/XP/2000/97, tôi đã cố gắng sửa đổi một số các đối tượng trong cơ sở dữ liệu Access của tôi.Và thường nhận 1 báo lỗi "database exclusively". Vậy làm thế nào để mở Database ở chế độ Exclusively.
Đáp: Bởi vì trong Advanced Option của chương trình, bạn đang để chế độ Share cho nhiều người dùng. Vì vậy,để chỉnh sửa Form/report/table , đôi khi bạn bị buộc phải mở Database ở chế độ Exclusively.

Để làm việc này, bạn phải đảm bảo file Access của bạn hiện không có ai đang mở.
Mở Ms Access. Vào menu File--> Open
Chọn file dữ liệu mà bạn muốn mở ở chế độ Exclusively. Bấm vào mũi tên bên phải của nút Open. Một danh sách các tùy chọn sẽ xuất hiện (Open, Open Read-Only, Open Exclusive, Open Exclusive Read Only). Bạn chọn vào Open Exclusive.


Chúc Thành Công

In mục này

Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line| Phần mềm quản lý bán hàng, công nợ- tồn kho- nhà phân phối