View Full Version : سوال: چطور میشه تعداد ردیفهای انتخاب شده را بدست آورد؟
mmbguide
سه شنبه 28 بهمن 1404, 12:16 عصر
سلام
در یک از فرم Sub-Form استفاده کردم که اطلاعات رو بصورت Datasheet نمایش میده و کاربر میتونه از طریق Navigation Buttons چندین ردیف رو در حالت انتخاب قرار بده. دستور Form.SelTop میشه شماره اولین ردیف رو بدست آورد ولی Form.SelHeight که باید تعداد ردیفهای انتخاب شده را برگرداند مقدار 0 را برمیگرداند. ویژگی DefaultView مربوط به Sub-Form روی Datasheet تنظیم شده. ممنون میشم اگر راهنمایی کنید که چطور میشه بین ردیفهای انتخاب شده در DataSheet یک حلقه جهت انجام عملیات اجرا کرد؟ تشکر
eb_1345
سه شنبه 28 بهمن 1404, 16:48 عصر
سلام
در یک از فرم Sub-Form استفاده کردم که اطلاعات رو بصورت Datasheet نمایش میده و کاربر میتونه از طریق Navigation Buttons چندین ردیف رو در حالت انتخاب قرار بده. دستور Form.SelTop میشه شماره اولین ردیف رو بدست آورد ولی Form.SelHeight که باید تعداد ردیفهای انتخاب شده را برگرداند مقدار 0 را برمیگرداند. ویژگی DefaultView مربوط به Sub-Form روی Datasheet تنظیم شده. ممنون میشم اگر راهنمایی کنید که چطور میشه بین ردیفهای انتخاب شده در DataSheet یک حلقه جهت انجام عملیات اجرا کرد؟ تشکر
با سلام
کدهای زیر رو در رویداد Form_MouseUp سابفرم درج بفرما و سپس با موس ردیف های مورد نظر رو انتخاب کن تا تعداد ردیف های انتخاب شده در تکست باکس txtSelected فرم اصلی قرار بگیرد
If Me.NewRecord = True Then
Me.Parent.txtSelected.Value = 0
Else
Me.Parent.txtSelected.Value = Me.SelHeight
End If
mazoolagh
چهارشنبه 29 بهمن 1404, 10:12 صبح
سلام و روز خوش
البته این انتخاب رکوردها فقط میتونه پیوسته باشه
و اگر بخواین ناپیوسته انتخاب کنین اکسس پشتیبانی نمیکنه (Ctrl + Click) و باید یک راهکاری واسش پیاده کنین (اضافه کردن یک checkbox)
مورد بعدی این که به محض خروج از sub-form ، اطلاعات رکوردهای انتخاب شده از دست میره،
برای همین باید در main-form متغیری برای نگهداری اونها داشته باشین
که در رویداد exit از کنترل sub-form اونها رو آپدیت کنین - دقت داشته باشین که این رویداد exit در main-form هندل میشه.
mazoolagh
چهارشنبه 29 بهمن 1404, 10:14 صبح
Option Compare Database
Option Explicit
Private Selection_Height As Integer
Private Selection_Top As Integer
Private Sub Btn_GO_Click()
Dim s As String
Dim i As Integer
With Me.Products_Subform.Form.RecordsetClone
.MoveFirst
.Move (Selection_Top - 1)
For i = 1 To Selection_Height
s = s + !ProductName + vbCrLf
.MoveNext
Next
End With
If s = "" Then
MsgBox "Nothing Selected", vbExclamation, ""
Else
MsgBox s, , "Selected Items"
End If
End Sub
Private Sub Products_Subform_Exit(Cancel As Integer)
With Me.Products_Subform.Form
Selection_Height = .SelHeight
Selection_Top = .SelTop
End With
End Sub
mazoolagh
چهارشنبه 29 بهمن 1404, 10:23 صبح
برنامه نمونه
156711
156712
mmbguide
جمعه 01 اسفند 1404, 07:47 صبح
ممنون جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh) . نکتهی جالبی بود.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.