3 つのフォームがあり、それぞれに独自のグリッドがあります。次のコードは、現在 form1 に記述されていますが、3 つのフォームすべてで使用されています。動作しますが、異なるデータベースを使用し、異なる列を含む 3 つのフォームで動作する必要があるため、非常に面倒で時間がかかります。以下のコードを 3 つの個別の関数に分割し、その特定のフォームに必要なデータのみを含む各フォームの背面に配置する方が適切であると考えられますか?
Public Class Form1
Public sFilter as string
Public sQuery as string
Public Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Public Sub buildFilter(ByVal form as string)
select case form
Case "form1"
sFilter = "control_no > 0 and control_no < 10000"
Case "form2"
sFilter = "quantity > 0 and quantity < 7849"
Case "form3"
sFilter = "store_id > 10000"
end select
End Sub
Public Sub buildQuery(form)
Select case form
Case "form1"
sQuery = "Select * FROM dataBase1 WHERE " & sFilter
Case "form2"
sQuery = "Select quantity, first_name, last_name FROM database2 WHERE " & sFilter
Case "form3"
sQuery = "Select * FROM dataBase3 WHERE " & sFilter
End Select
End Sub
End Class
上記のコードを取得して各フォームの背面に配置し、そのフォームでのみ機能させるのが最善であると言われました。それは最善のアプローチではないように感じますが、現在のセットアップの方法も良くないと感じています。良いアプローチは何でしょうか?