コードの冗長化を無くしたい etc..
- 題名: コードの冗長化を無くしたい etc..
- 著者: まーくん
- 日時: 2014/01/11 7:06:20
- ID: 32052
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: コードの冗長化を無くしたい etc..
- 著者: WebSurfer
- 日時: 2014/01/11 14:57:04
- ID: 32055
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: 【報告】この投稿はマルチポストです
- 著者: (報告)
- 日時: 2014/01/11 20:38:30
- ID: 32056
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: 【注意】いたずらのマルチポストの可能性が高いです
- 著者: 管理人
- 日時: 2014/01/12 4:36:01
- ID: 32057
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
<問題点>
・コードの冗長化を無くしたい
自分なりに、クラスの先頭で
コード[ASP]: 全て選択
1
Dim Cn As New OleDbConnection
としたのですが、内部でエラーになってしまいます。
そもそも、DB操作の知識が浅いせいも有りますが、「こうした方がいい」というアドバイスをいただけたら嬉しいです。
コードは以下。
DBへの追加、更新、削除などを行っています。
プリペアドステートメントも使う予定です。(今回は使う方法を探る前のコードなので使っていません。)
尚、まだこのコードは作成途中なので色々おかしい所はあります。
今回は冗長化を無くすためのアドバイスを頂きたいです。
何回もCnをNewしないようにするにはどうしたらいいでしょうか。
adapterは毎回違うものを使ったほうがいいのでしょうか?
Imports System.Data.OleDb
Public Class 定休日設定
Dim Table As New DataTable
Dim dr As OleDb.OleDbDataReader
Private Sub データ入力_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.定休日表TableAdapter.Fill(Me.Sotuken1DataSet.定休日表)
Dim Cn As New OleDbConnection
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Cn.ConnectionString = ("****")
Cn.Open()
SQLCm.CommandText = "SELECT * FROM 定休日表"
Adapter.Fill(Table) '実行
dr = SQLCm.ExecuteReader
If dr.HasRows Then
Do While dr.Read
list_holiday.Items.Add(dr("定休日コード").ToString & " " & dr("年").ToString & "年" & dr("月").ToString & "月" _
& dr("日").ToString & "日 " & WeekdayName(dr("曜日")))
Loop
Else
MsgBox("データなし")
End If
'▼後処理
Adapter.Dispose()
Cn.Dispose()
Cn.Close()
lbl_fullday.Text = MonthCalendar1.SelectionStart.ToShortDateString()
lbl_year.Text = Mid(lbl_fullday.Text, 1, 4)
lbl_month.Text = Mid(Mid(lbl_fullday.Text, 6, 7), 1, 2)
lbl_day.Text = Mid(lbl_fullday.Text, 9, 10)
lbl_fulldayE.Text = MonthCalendar1.SelectionEnd.ToShortDateString()
lbl_yearE.Text = Mid(lbl_fulldayE.Text, 1, 4)
lbl_monthE.Text = Mid(Mid(lbl_fulldayE.Text, 6, 7), 1, 2)
lbl_dayE.Text = Mid(lbl_fulldayE.Text, 9, 10)
Label1.Text = WeekdayName(Weekday(DateSerial(lbl_year.Text, lbl_month.Text, lbl_day.Text)))
End Sub
Private Sub btn_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_add.Click
Dim Cn As New OleDbConnection
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Adapter2 As New OleDbDataAdapter(SQLCm)
Dim range As Integer = lbl_dayE.Text - lbl_day.Text '複数日選択判定用変数
Me.定休日表TableAdapter.Fill(Me.Sotuken1DataSet.定休日表)
Cn.ConnectionString = ("****")
'パターン表に追加処理
Cn.Open()
Dim cnt As Integer = list_holiday.Items.Count + 1
Dim weekDayN As Integer = Weekday(DateSerial(lbl_year.Text, lbl_month.Text, lbl_day.Text))
Do While range > -1
SQLCm.CommandText = "INSERT INTO 定休日表 ([定休日コード],[年],[月],[日],[曜日]) VALUES (" & cnt & "," & lbl_year.Text & "," & lbl_month.Text & "," & lbl_day.Text & "," & weekDayN & ")"
Adapter.Fill(Table)
cnt = cnt + 1
lbl_day.Text = lbl_day.Text + 1
range = range - 1
weekDayN = weekDayN + 1
If weekDayN > 7 Then
weekDayN = 1
End If
Loop
'後処理
Adapter.Dispose()
Cn.Dispose()
Cn.Close()
'パターン表再表示
list_holiday.Items.Clear()
Cn.ConnectionString = ("****")
Cn.Open()
SQLCm.CommandText = "SELECT * FROM 定休日表"
Adapter2.Fill(Table)
dr = SQLCm.ExecuteReader
If dr.HasRows Then
Do While dr.Read
list_holiday.Items.Add(dr("定休日コード").ToString & " " & dr("年").ToString & "年" & dr("月").ToString & "月" _
& dr("日").ToString & "日 " & WeekdayName(dr("曜日")))
Loop
End If
'後処理
Adapter2.Dispose()
Cn.Dispose()
Cn.Close()
End Sub
Private Sub btn_delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_delete.Click
Dim Cn As New OleDbConnection
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Adapter2 As New OleDbDataAdapter(SQLCm)
Dim Adapter3 As New OleDbDataAdapter(SQLCm)
Me.定休日表TableAdapter.Fill(Me.Sotuken1DataSet.定休日表)
'選択した行の削除
Cn.ConnectionString = ("****")
Cn.Open()
SQLCm.CommandText = "DELETE FROM 定休日表 WHERE 定休日コード = " & list_holiday.SelectedIndex.ToString + 1
Dim range As Integer = list_holiday.SelectedIndices.Count
Do While range > 0
SQLCm.CommandText = "INSERT INTO 定休日表 ([定休日コード],[年],[月],[日],[曜日]) VALUES (" & cnt & "," & lbl_year.Text & "," & lbl_month.Text & "," & lbl_day.Text & "," & weekDayN & ")"
Adapter.Fill(Table)
cnt = cnt + 1
lbl_day.Text = lbl_day.Text + 1
range = range - 1
weekDayN = weekDayN + 1
If weekDayN > 7 Then
weekDayN = 1
End If
Loop
Adapter.Fill(Table)
Adapter.Dispose()
Cn.Dispose()
Cn.Close()
'選択した行が一番下以外の場合繰り上げ処理を行う
Dim i As Integer
i = list_holiday.SelectedIndex.ToString + 1
Cn.ConnectionString = ("****")
Cn.Open()
SQLCm.CommandText = "update 定休日表 set 定休日コード = 定休日コード -1 where 定休日コード > " & i
Adapter2.Fill(Table)
Adapter2.Dispose()
Cn.Dispose()
Cn.Close()
'パターン表再表示
list_holiday.Items.Clear()
Cn.ConnectionString = ("****")
Cn.Open()
SQLCm.CommandText = "SELECT * FROM 定休日表"
Adapter3.Fill(Table)
dr = SQLCm.ExecuteReader
If dr.HasRows Then
Do While dr.Read
list_holiday.Items.Add(dr("定休日コード").ToString & " " & dr("年").ToString & "年" & dr("月").ToString & "月" _
& dr("日").ToString & "日 " & WeekdayName(dr("曜日")))
Loop
End If
'後処理
Adapter3.Dispose()
Cn.Dispose()
Cn.Close()
End Sub
Private Sub weekend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_weekend.Click
'土日を判定し、休み登録
Dim today As Date = DateTime.Today
Dim cnt As Integer = list_holiday.Items.Count + 1
Dim firstOfMonth As Date = DateSerial(lbl_year.Text, lbl_month.Text, 1) '月初
Dim endOfMonth As Date = DateSerial(lbl_year.Text, lbl_month.Text + 1, 0) '月末
'MsgBox(WeekdayName(endOfMonth))
If Weekday(firstOfMonth) = 7 Then '土曜日
For i As Integer = firstOfMonth.Day To endOfMonth.Day
Next
ElseIf Weekday(firstOfMonth) = 1 Then '日曜日
Else 'その他
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
Private Sub 定休日表BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Validate()
Me.定休日表BindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Sotuken1DataSet)
End Sub
Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles MonthCalendar1.DateChanged
lbl_fullday.Text = MonthCalendar1.SelectionStart.ToShortDateString()
lbl_year.Text = Mid(lbl_fullday.Text, 1, 4)
lbl_month.Text = Mid(Mid(lbl_fullday.Text, 6, 7), 1, 2)
lbl_day.Text = Mid(lbl_fullday.Text, 9, 10)
lbl_fulldayE.Text = MonthCalendar1.SelectionEnd.ToShortDateString()
lbl_yearE.Text = Mid(lbl_fulldayE.Text, 1, 4)
lbl_monthE.Text = Mid(Mid(lbl_fulldayE.Text, 6, 7), 1, 2)
lbl_dayE.Text = Mid(lbl_fulldayE.Text, 9, 10)
Label1.Text = WeekdayName(Weekday(DateSerial(lbl_year.Text, lbl_month.Text, lbl_day.Text)))
End Sub
End Class