Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Đánh số TT trong Query hoặc Form
#11
Theo MTNQ thì ý của chủ thớt là trên Single Form và câu trả lời đầu tiên của bác Ân là chính xác rùi 
(Không biết bạn wintq  còn đây không nhỉ, sao không thấy hồi âm gì vậy  016 )

Câu hỏi của bạn Minh Tiên  là trên Continuous Forms (hay Datasheet)  thì lại khác,  không dùng  =[Form].[CurrentRecord] được, có một số cách đánh số thứ tự cho trường hợp này. MTNQ xin giới thiệu cách dùng thuộc tính AbsolutePosition của Recordset (Link tham khảo AbsolutePosition  )

-Chép hàm sau vào một Module bất kỳ:
Mã:
Public Function fSTT(frm As Form) As Variant
On Error GoTo Err_fSTT
   With frm.RecordsetClone
       .Bookmark = frm.Bookmark
       fSTT = .AbsolutePosition + 1
   End With
   
Exit_fSTT:
   Exit Function
   
Err_fSTT:
   If Err.Number <> 3021 And Err.Number <> 2196 Then
       Debug.Print "fSTT() error " & Err.Number & " - " & Err.Description
   End If
   fSTT = Null
   Resume Exit_fSTT
End Function

 -Text box STT gán Controle Source: =fSTT([Form])

Demo 
(Lười tạo table nên mượn đỡ Data của một bạn nào đó trên diễn đàn, các bạn thông cảm nha  015 )

Lưu ý: 
-Với DAO thì Record đầu tiên có AbsolutePosition = 0 còn ADO thì =1. Nếu sử dụng ADO thì thay dòng  fSTT = .AbsolutePosition + 1 bằng  fSTT = .AbsolutePosition
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn maidinhdan , tranthanhan1962 , Minh Tiên
#12
Đọc lại chủ đề thấy còn một vế nữa: đánh STT trong Query ?

Làm thử thấy có vẻ nhanh hơn dùng hàm fSTT()  014

Demo STT Tren Form2.rar
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn ongke0711 , Noname , tranthanhan1962 , maidinhdan , Minh Tiên
#13
Thanks tranthanhan1962 và Mattroinguquen nhiều !
Cách tạo stt bằng query và tạo trực tiếp dùng code như 2 bác giới thiệu Tiên đã làm rồi.
1. Cách tạo bằng code Fill trực tiếp stt trên Form (Hoặc Edit số trong table rồi Boundcontrol vào STT) chỉ dùng cho hiển thị ít số liệu, chứ vài chục ngàn record --> đợi xỉu (Tiên đã thử hiển thị 10.000 Record rồi).
2. Cách tạo số tt trong query thì rất nhanh, nhưng mình đang nghiên cứu ADODB, muốn có query phải tạo table, load dữ liệu từ File data về, ... rất cồng kềnh; Còn tạo SQL rồi load dữ liệu về thì có một số Stt phải tạo qua 2 cấp (2 query) mới hiển thị được --> SQL ko thực hiện được.
Các Pro còn có cách tạo, hiển thị số tt (bằng Unbound) nào khác, nhanh hơn cách 1 ko ? Chia sẻ với !
Thanks !
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
#14
(28-07-15, 11:36 AM)Minh Tiên Đã viết: Thanks tranthanhan1962 và Mattroinguquen nhiều !
Cách tạo stt bằng query và tạo trực tiếp dùng code như 2 bác giới thiệu Tiên đã làm rồi.
1. Cách tạo bằng code Fill trực tiếp stt trên Form (Hoặc Edit số trong table rồi Boundcontrol vào STT) chỉ dùng cho hiển thị ít số liệu, chứ vài chục ngàn record --> đợi xỉu (Tiên đã thử hiển thị 10.000 Record rồi).
...

Bạn thử hàm fSTT  chưa nhỉ, thấy cũng OK lém mà , đâu đến nỗi... xỉu  014
Mình lấy Data trong chủ đề về ADO, thêm vào 100 000 mẩu tin, dùng hàm fSTT như trên, load toàn bộ lên form chưa đầy 1 giây

Bạn xem thử nha (mình làm mdb để tiện cho các bạn dùng AC 2003)

Demo STT (ADO).rar
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn maidinhdan , Minh Tiên
#15
Dựa vào bài của MatTroiNguQuen mình có làm thử một cái đánh lại số thứ tự, mình định làm như sau :
Có một bảng do người sử dụng nhập vào : Ngày CT, Số CT ....; 
Sau khi đánh xong mục Số CT do một số lý do nào đó người dùng muốn đánh lại nó theo thứ tự 

Mình có thêm một cột STT : Lấy theo kiểu của MatTroiNguQuen ; mình có một nút Tích chuyển -> Mục đích là muốn copy toàn bộ cột STT thay thế cho cột Số CT
Tuy nhiên khi Tích chuyển thì máy nó chỉ hiểu giá trị STT tại con trỏ và chuyển hết thành 1 số
 Mình muốn ai biết chỉnh hộ cái sai trong bài : http://www.mediafire.com/download/z0u242...+So+TT.rar
Xin chân thành cảm ơ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
#16
Bác tham khảo 3 thủ tục sau:

 Thủ tục 1:
Mã:
Sub Test1()
    'Application.Echo False
   If Me.Recordset.RecordCount = 0 Then Exit Sub
   DoCmd.GoToRecord , , acFirst
   Do
       Me.SoCT = Me.STT
       DoCmd.GoToRecord , , acNext
   Loop Until IsNull(Me.HDID)
   'Application.Echo True
End Sub

Thủ tục 2:
Mã:
Sub Test2()
   With Me.Recordset.Clone
      If Not .EOF Then .MoveFirst
      Do While Not .EOF And Not .BOF
       CurrentDb.Execute "UPDATE Hoadon SET SoCT = 'C " & .AbsolutePosition + 1 & "' " & _
         "WHERE HDID = " & .HDID
       .MoveNext
      Loop
  End With
 
  Me.Requery
End Sub

Thủ tục 3 :
Mã:
Sub Test3()
   With Me.Recordset.Clone
      If Not .EOF Then .MoveFirst
      Do While Not .EOF And Not .BOF
       .Edit
       .SoCT = "C " & .AbsolutePosition + 1
       .Update
       .MoveNext
      Loop
  End With
  Me.Requery
End Sub

 -Cả 3 phương án trên  dùng cách nào cũng được
-Với Test1: Có thể dùng Application.Echo False nhằm tắt chế độ cập nhật từng mẫu tin lên màn hình, -> mã chạy nhanh hơn
P/S: Bác nên bỏ sắp xếp theo cột SoCT, vì cột này có  kiểu dữ liệu là Text nên nó sẽ sắp theo abc: c1, c11, c2... Khi load lại form sẽ không trùng khớp với cột STT
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn ledangvan , Noname , Minh Tiên
#17
Ví dụ trên File của bác :


http://www.mediafire.com/download/8te0aq...+So+TT.rar

Chỉ là đưa ra phương án thui, chưa có bẫy lỗi... Bác tùy biến nhé   015
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn ledangvan , Noname , Minh Tiên


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Hướng Dẫn hướng dẫn làm query theo cbobox tieuho828 0 12 Hôm qua, 10:12 PM
Bài mới nhất: tieuho828
  Lọc query có điều kiện để tạo report honglv157 3 164 01-12-16, 05:15 PM
Bài mới nhất: maidinhdan
  [Help] ẩn nút ""Close Windown" khi mở query tronghieu9792 4 87 30-11-16, 09:36 PM
Bài mới nhất: tronghieu9792
Question [Help] Cần giúp đỡ tạo query lấy giá trị của dòng liền trước để tính giá trị trung bình luonguct 4 89 23-11-16, 12:33 AM
Bài mới nhất: luonguct
  Hướng Dẫn hướng dẫn làm query tieuho828 6 151 21-11-16, 12:36 AM
Bài mới nhất: toancvp

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ơ