سلام
محسن جان دیگه یک ساعت تعجب که یخورده بعید ولی بهرحال سعی میکنم نکته مفیدی بزارم
نکته ویژوالی :
دستورات انتسابی زیر رو ببینید، با این دستورات محتویات فیلدهای یک Ado به Ado دوم در یک فرم خاص منتقل میشه
frmIRANCustomers.adoIRANCustomerList.Recordset!MNa me = frmIRANCustomers.adoIRANCustomerBackup.Recordset!M Name
frmIRANCustomers.adoIRANCustomerList.Recordset!Fam lily = frmIRANCustomers.adoIRANCustomerBackup.Recordset!F amlily
frmIRANCustomers.adoIRANCustomerList.Recordset!Com ment = frmIRANCustomers.adoIRANCustomerBackup.Recordset!C omment
frmIRANCustomers.adoIRANCustomerList.Recordset!Pho ne = frmIRANCustomers.adoIRANCustomerBackup.Recordset!P hone
frmIRANCustomers.adoIRANCustomerList.Recordset!Ema il = frmIRANCustomers.adoIRANCustomerBackup.Recordset!E mail
frmIRANCustomers.adoIRANCustomerList.Recordset!Add ress = frmIRANCustomers.adoIRANCustomerBackup.Recordset!A ddress
frmIRANCustomers.adoIRANCustomerList.Recordset!Cod e = frmIRANCustomers.adoIRANCustomerBackup.Recordset!C ode
frmIRANCustomers.adoIRANCustomerList.Recordset!Mob ile = frmIRANCustomers.adoIRANCustomerBackup.Recordset!M obile
frmIRANCustomers.adoIRANCustomerList.Recordset!Per sonal = frmIRANCustomers.adoIRANCustomerBackup.Recordset!P ersonal
frmIRANCustomers.adoIRANCustomerList.Recordset!Wei ght = frmIRANCustomers.adoIRANCustomerBackup.Recordset!W eight
frmIRANCustomers.adoIRANCustomerList.Recordset!Old = frmIRANCustomers.adoIRANCustomerBackup.Recordset!O ld
frmIRANCustomers.adoIRANCustomerList.Recordset!Bir thday = frmIRANCustomers.adoIRANCustomerBackup.Recordset!B irthday
frmIRANCustomers.adoIRANCustomerList.Recordset!Fat her = frmIRANCustomers.adoIRANCustomerBackup.Recordset!F ather
frmIRANCustomers.adoIRANCustomerList.Recordset!Mel liCode = frmIRANCustomers.adoIRANCustomerBackup.Recordset!M elliCode
frmIRANCustomers.adoIRANCustomerList.Recordset!Sal ary = frmIRANCustomers.adoIRANCustomerBackup.Recordset!S alary
frmIRANCustomers.adoIRANCustomerList.Recordset!Web site = frmIRANCustomers.adoIRANCustomerBackup.Recordset!W ebsite
خب دستورات طولانی و نسبتا ناخوانایی شده و میشه یه مقدار با With مختصرش کرد به شکل زیر
With frmIRANCustomers.adoIRANCustomerList.Recordset
!MName = frmIRANCustomers.adoIRANCustomerBackup.Recordset!M Name
!Famlily = frmIRANCustomers.adoIRANCustomerBackup.Recordset!F amlily
!Comment = frmIRANCustomers.adoIRANCustomerBackup.Recordset!C omment
!Phone = frmIRANCustomers.adoIRANCustomerBackup.Recordset!P hone
!Email = frmIRANCustomers.adoIRANCustomerBackup.Recordset!E mail
!Address = frmIRANCustomers.adoIRANCustomerBackup.Recordset!A ddress
!Code = frmIRANCustomers.adoIRANCustomerBackup.Recordset!C ode
!Mobile = frmIRANCustomers.adoIRANCustomerBackup.Recordset!M obile
!Personal = frmIRANCustomers.adoIRANCustomerBackup.Recordset!P ersonal
!Weight = frmIRANCustomers.adoIRANCustomerBackup.Recordset!W eight
!Old = frmIRANCustomers.adoIRANCustomerBackup.Recordset!O ld
!Birthday = frmIRANCustomers.adoIRANCustomerBackup.Recordset!B irthday
!Father = frmIRANCustomers.adoIRANCustomerBackup.Recordset!F ather
!MelliCode = frmIRANCustomers.adoIRANCustomerBackup.Recordset!M elliCode
!Salary = frmIRANCustomers.adoIRANCustomerBackup.Recordset!S alary
!Website = frmIRANCustomers.adoIRANCustomerBackup.Recordset!W ebsite
End With
الان بهتر شد ولی هنوزم اون عبارت بزرگ و تکراری وجود داره، ولی خب ویژوال بیسیک 6 رو دست کم نگیرید
Dim rs As Recordset
Set rs = frmIRANCustomers.adoIRANCustomerBackup.Recordset
With frmIRANCustomers.adoIRANCustomerList.Recordset
!MName = rs!MName
!Famlily = rs!Famlily
!Comment = rs!Comment
!Phone = rs!Phone
!Email = rs!Email
!Address = rs!Address
!Code = rs!Code
!Mobile = rs!Mobile
!Personal = rs!Personal
!Weight = rs!Weight
!Old = rs!Old
!Birthday = rs!Birthday
!Father = rs!Father
!MelliCode = rs!MelliCode
!Salary = rs!Salary
!Website = rs!Website
End With
حتما قبول دارید که تا اینجا خیلی بهتر و خواناتر شده و خیلی جاها به همین شکل باید استفاده بشه، ولی به نظرتون بازم میشه مختصر ترش کرد ؟
Dim r1 As Recordset, r2 As Recordset
Set r1 = frmIRANCustomers.adoIRANCustomerList.Recordset: Set r2 = frmIRANCustomers.adoIRANCustomerBackup.Recordset
For i = 0 To r1.Fields.Count - 1
r2.Fields(i) = r1.Fields(i)
Next
در اینجا با یک حلقه همه انتساب ها رو انجام دادیم و دیگه هر چی تعداد فیلدها زیاد بشه کد برنامه همین ثابته و مثل بالایی ها اضافه نمیشه
اما آیا به نظر شما باز هم میشه مختصر کرد ؟!! نظرتون راجع به این چیه
Set frmIRANCustomers.adoIRANCustomerBackup.Recordset = frmIRANCustomers.adoIRANCustomerList.Recordset
این روش رو با روش اول مقایسه کنید !، خیلی کارها رو میشه تو وی بی با این روش ها مختصر کرد و مطمئنا خوانایی برنامه خیلی افزایش پیدا میکنه، این روش آخر برای کلیه آرایه ها قابل انجامه، نمونه زیر رو تست کنید
Dim a1(10), a2(), i%
For i = 0 To 10
a1(i) = i
Next
a2 = a1
نفر بعدی لطفا مطلبی بزار که تو کاربردهای روزمره مفید باشه