Как я могу получить год и месяц из столбца datagridview
у меня есть два комбо-бокса, после загрузки данных в datagridview я хочу отфильтровать даты по годам и месяцам, но когда я нажимаю кнопку Загрузить, она возвращает те же данные из первой загрузки
Что я уже пробовал:
я пробовал этот код, но он не работает
Public Sub load() Try DataGridView1.Rows.Clear() Dim count = 0 cboYear1.Refresh() If Button1.Text <> "Cancel" Then CheckBox2.Visible = True CheckBox2.CheckState = CheckState.Checked Dim conn, conn2 As New MySqlConnection Dim command, command2 As New MySqlCommand Dim adapter As New MySqlDataAdapter Dim dtable As New DataTable Dim reader, reader2 As MySqlDataReader Dim index As Integer Dim totalBalance As Double conn.ConnectionString = "server='" & frmParent.jlt2servername & "';user id='" & frmParent.jlt2username & "';password= '" & frmParent.jlt2password & "';database='" & frmParent.jlt2database & "';pooling=false" conn2.ConnectionString = "server='" & frmParent.jlt2servername & "';user id='" & frmParent.jlt2username & "';password= '" & frmParent.jlt2password & "';database='" & frmParent.jlt2database & "';pooling=false" bcode = ComboBox2.Text conn.Open() command.Connection = conn command.CommandText = "select c_code from clist where c_name = '" & ComboBox1.Text.Trim & "'" reader = command.ExecuteReader While reader.Read ccode = reader.Item("c_code") End While conn.Close() If ComboBox2.Text <> "ALL" Then conn.Open() command.Connection = conn command.CommandText = "select entry_date,dr_no,net_total from dr where c_code = '" & ccode & "' and b_code = '" & bcode & "'and entry_date LIKE '" & yr & "' order by entry_date" adapter.SelectCommand = command adapter.Fill(dset, "dr") dtable = dset.Tables("dr") index = dtable.Rows.Count Dim pay, credit(index), balance, rm As Double Dim drNo(index) As String Dim strDRdate(index) As String Dim drDate(index) As Date For i = 0 To index - 1 drNo(i) = dset.Tables("dr").Rows(i).Item(1).ToString.Trim credit(i) = CDbl(dset.Tables("dr").Rows(i).Item(2)) drDate(i) = dset.Tables("dr").Rows(i).Item(0) strDRdate(i) = drDate(i).ToString("MM/dd/yyyy") Next conn.Close() 'For i = 0 To index - 1 ' drDate(i) = dset.Tables("dr").Rows(i).Item(0) ' strDRdate(i) = drDate(i).ToString("MM/dd/yyyy") ' If (drDate(i).ToString("yyyy") = cboYear1.Text) Then ' strDRdate(i) = drDate(i).ToString("MM/dd/'" & cboYear1.Text & "'") ' End If ' conn.Open() ' command.Connection = conn ' command.CommandText = "select * from dr where entry_date ='" & strDRdate(i) & "'" ' reader = command.ExecuteReader ' conn.Close() 'Next For i = 0 To index - 1 pay = 0 conn.Open() command.Connection = conn command.CommandText = "select sum(payment) as 'pay' from invp where dr_no = " & drNo(i) & " and b_code = '" & bcode & "'" reader = command.ExecuteReader While reader.Read If reader.Item("pay").ToString = vbNullString Then pay = 0 Else pay = pay + reader.Item("pay") End If End While conn.Close() conn.Open() command.Connection = conn command.CommandText = "select ifnull(sum(total_amt),0) as rm from rm where ref_type = 'DR' and drsi_no = " & drNo(i) & " and b_code = '" & bcode & "'" reader = command.ExecuteReader While reader.Read rm = reader("rm") End While conn.Close() balance = credit(i) - pay balance = balance - rm 'If balance < 0 Then ' balance = 0 'End If totalBalance = totalBalance + balance If CheckBox1.Checked = True Then DataGridView1.Rows.Add(True, strDRdate(i), drNo(i), FormatNumber(credit(i), 2), FormatNumber(pay, 2), FormatNumber(rm, 2), FormatNumber(balance, 2), bcode) ElseIf CheckBox1.Checked = False Then If balance <> 0 Then DataGridView1.Rows.Add(True, strDRdate(i), drNo(i), FormatNumber(credit(i), 2), FormatNumber(pay, 2), FormatNumber(rm, 2), FormatNumber(balance, 2), bcode) End If End If Next ComboBox1.Enabled = False Button1.Text = "Cancel" TextBox1.Text = FormatNumber(totalBalance, 2) Else conn.Open() command.Connection = conn command.CommandText = "select * from cust_branch where cust_id = '" & ccode & "'" reader = command.ExecuteReader While reader.Read bcode = reader("b_code") conn2.Open() command2.Connection = conn2 command2.CommandText = "select entry_date, dr_no,net_total from dr where c_code = '" & ccode & "'and b_code = '" & bcode & "'and entry_date LIKE '" & yr & "'order by entry_date" adapter.SelectCommand = command2 adapter.Fill(dset, "dr") dtable = dset.Tables("dr") index = dtable.Rows.Count Dim pay, credit(index), balance, rm As Double Dim drNo(index), strDRdate(index) As String Dim drDate(index) As Date For i = 0 To index - 1 drDate(i) = dset.Tables("dr").Rows(i).Item(0) drNo(i) = dset.Tables("dr").Rows(i).Item(1).ToString.Trim credit(i) = CDbl(dset.Tables("dr").Rows(i).Item(2)) strDRdate(i) = drDate(i).ToString("MM/dd/yyyy") Next conn2.Close() For i = 0 To index - 1 pay = 0 conn2.Open() command2.Connection = conn2 command2.CommandText = "select sum(payment) as 'pay' from invp where dr_no = " & drNo(i) & " and b_code = '" & bcode & "'" reader2 = command2.ExecuteReader While reader2.Read If reader2.Item("pay").ToString = vbNullString Then pay = 0 Else pay = pay + reader2.Item("pay") End If End While conn2.Close() conn2.Open() command2.Connection = conn2 command2.CommandText = "select ifnull(sum(total_amt),0) as rm from rm where ref_type = 'DR' and drsi_no = " & drNo(i) & " and b_code = '" & bcode & "'" reader2 = command2.ExecuteReader While reader2.Read rm = reader2("rm") End While conn2.Close() balance = credit(i) - pay balance = balance - rm 'If balance < 0 Then ' balance = 0 'End If totalBalance = totalBalance + balance If CheckBox1.Checked = True Then DataGridView1.Rows.Add(True, strDRdate(i), drNo(i), FormatNumber(credit(i), 2), FormatNumber(pay, 2), FormatNumber(rm, 2), FormatNumber(balance, 2), bcode) ElseIf CheckBox1.Checked = False Then If balance <> 0 Then DataGridView1.Rows.Add(True, strDRdate(i), drNo(i), FormatNumber(credit(i), 2), FormatNumber(pay, 2), FormatNumber(rm, 2), FormatNumber(balance, 2), bcode) End If End If Next ComboBox1.Enabled = False Button1.Text = "Cancel" TextBox1.Text = FormatNumber(totalBalance, 2) End While conn.Close() End If Else ComboBox1.Enabled = True Button1.Text = "&Generate" Button1.Enabled = False CheckBox2.Visible = False End If Catch ex As Exception MsgBox(ex.ToString) End Try End Sub
спасибо за ответы :)
Graeme_Grant
Здесь слишком много кода. Где находится код, который пытается извлечь данные? Это приложение WinForm?
Richard MacCutchan
Не используйте конкатенацию строк для создания команд SQL. Используйте правильные параметризованные запросы. И утверждать сначала ваши параметры; не предполагайте, что данные, передаваемые пользователем, всегда верны.
Member 12374765
привет это код который меня смущает
Если ComboBox2.Текст < и GT; "все" тогда
Коннектикут.Открыть()
команда.Соединение = conn
команда.Свойства commandtext = "выбрать entry_date,dr_no,net_total от доктора, где c_code = '" &амп; кодекс &ампер; "' и b_code = '" &амп; bcode &ампер; "'и entry_date как '" &усилителя; г &амп; "' заказ entry_date"
адаптер.SelectCommand = команда
адаптер.Заполнить(служебной программы dset, "доктор")
dtable = dset.Столы("доктор")
индекс = dtable.Строк.Рассчитывать
Dim pay, кредит (индекс), баланс, rm As Double
Dim drNo (индекс) в виде строки
Dim strDRdate (index) как строка
Dim drDate (индекс) как дата
Для i = 0 к индексу-1
drNo (i) = dset.Таблицы ("dr").Строки (i).Пункт 1.Метод toString.Отделка
кредит (i) = CDbl (dset.Таблицы ("dr").Строки (i).Пункт (2))
drDate (i) = dset.Таблицы ("dr").Строки (i).Пункт (0)
strDRdate(i) = drDate (i).ToString ("ММ/ДД/гггг")
Следующий
Коннектикут.Закрывать()