এটি একটি খুব পুরানো বিষয় তবে এটি এই দেরীতে আমার দৃষ্টিতে ঝাঁপিয়ে পড়েছে এবং আমি কেবলমাত্র লেখার বৈশিষ্ট্যগুলির জন্য কেস করার চেষ্টা করার সাথে কিছু মন্তব্য চাই ...
আমার কাছে ActiveReport
ক্লাসগুলির একটি সেট রয়েছে যা একটি ওয়েবসাইটের অংশ যা ইনস্ট্যান্ট হয় এবং বেশ কয়েকটি ব্যবহারকারী নির্বাচনের পরে পোস্টব্যাকে চালিত হয়।
ভিবি কোডটি এরকম কিছু দেখাচ্ছে:
Public Class SomeReport
Private greader As New GenericReporting.CommonReader("AStoredProcedure",
{New SqlParameter("budget_id", 0)})
Public WriteOnly Property BudgetID As Integer
Set(value As Integer)
greader.Parameters("budget_id").Value = value
End Set
End Property
Public Sub New(Optional budget_id As Integer = 0)
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
BudgetID = budget_id
End Sub
End Class
এই প্রতিবেদনগুলি জেনেরিক সাহস ব্যবহার করে, CommonReader
একটি সঞ্চিত প্রক্রিয়া গ্রহণ করে এবং ডিফল্ট SqlParameter
গুলিগুলির একটি অ্যারে নেয় , যার প্রত্যেকটিরই সম্পর্কিত লিখনঅনালি সম্পত্তি থাকে যা রিপোর্টের নকশার উপর নির্ভর করে ইনস্ট্যান্ট করার ক্ষেত্রে প্যারামিটার হিসাবে পাস হতে পারে বা ইনস্ট্যান্টেশনের আগে ব্যবহারকারী দ্বারা সেট করা হত রিপোর্ট Run
পদ্ধতি কল ।
'''''''''''''''''''''''
' Parameter taken from a user selected row of a GridView
'
Dim SomeBudgetID As Integer = gvBudgets.SelectedDataKey.Values(budget_id)
'''''''''''''''''''''''
' On Instantiation
'
Dim R as ActiveReport = New SomeReport(SomeBudgetID)
R.Run()
'''''''''''''''''''''''
' Or On Instantiation using "With" syntax
'
Dim R as ActiveReport = New SomeReport() With {.BudgetID = SomeBudgetID}
R.Run()
'''''''''''''''''''''''
' Or After
'
Dim R as ActiveReport = New SomeReport()
R.BudgetID = SomeBudgetID
R.Run()
সুতরাং, আমি এটি দেখতে পাচ্ছি, এক্ষেত্রে কেবল লেখার সম্পত্তি রয়েছে
SqlParameter
জেনারিক ধরণের হিসাবে শক্তিশালী প্রকারের চেকিংয়ের মঞ্জুরি দেয়
- প্রতিবেদন তৈরির ক্ষেত্রে আরও নমনীয়তা, সমস্ত প্যারামিটারগুলি উপলভ্য হওয়ার সাথে সাথে পরে যুক্ত করা থাকলে প্রতিবেদনটি তাত্ক্ষণিকভাবে ইনস্ট্যান্ট করা যেতে পারে।
- বৈশিষ্ট্যগুলি ইনস্ট্যান্টেশনে "উইথ" সিনট্যাক্স সমর্থন করে
- প্যারামিটারগুলি ব্যবহারকারী হিসাবে জানা এবং রিপোর্ট দ্বারা পরিবর্তিত না হওয়ায় একটি "গেটর" কি সত্যিই প্রয়োজনীয়?
- যেহেতু
SqlParameter
গুলি একটি শ্রেণি এবং আদিম মান নয়, WritOnly বৈশিষ্ট্যগুলি পরামিতিগুলি সেট করার জন্য একটি সহজ ইন্টারফেসের অনুমতি দেয়
সুতরাং যে আমার চিন্তা।
আমি কি পরিবর্তে এটি একটি পদ্ধতিতে রূপান্তর করতে পারি? নিশ্চিত তবে ইন্টারফেস মনে হচ্ছে ... কম সুন্দর
R2.BudgetID = SomeBudgetID
বনাম
R2.SetBudgetID(SomeBudgetID)