powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужен совет по работе с DataSet.
5 сообщений из 5, страница 1 из 1
Нужен совет по работе с DataSet.
    #32615065
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть DataSet, в нем таблица вида

Производитель Товарная группа Скидка
--------------------------------------------------------------
ADIDAS Кроссовки 30

На форме DataGrid, который заполняется из данной таблицы.На форме три кнопки Edit,Delete и New.Соответственно для редактирования существующей,удаления существующей и добавления новой.

По кнопке New открывается подчиненная форма с двумя комбобоксами и текстовым полем для скидки, на ней кнопка ОК

Собственно вопрос в добавлении новой, т.к. надо чтобы пары производитель- товарная группа не повторялись.Написал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

        Dim drDiscount As DataRow

        Try
            
            If txtDiscount.Text <> "" And txtDiscount.Text >  0  And txtDiscount.Text <  100  Then

                If CompanyForm.editSw Then
                    'Записываем в таблицу измененное значение скидки.
                    CompanyForm.selRow("Discount") = txtDiscount.Text
                    Me.Close()
                Else

                    'Проверяем в цикле наличие в таблице такой-же пары производителя и товарной группы,если есть то выдаем предупреждение и прекращаем подпрограмму.
                    Dim i As Integer

                    For i =  0  To CompanyForm.dsCompany.Tables("CompanyDiscountTbl").Rows.Count -  1 
                        'Проверяем, не является ли строка удаленной.
                        If Not CompanyForm.dsCompany.Tables("CompanyDiscountTbl").Rows(i).RowState = DataRowState.Deleted Then
                            'Проверяем наличие пар производитель - товарная группа.
                            If (CompanyForm.dsCompany.Tables("CompanyDiscountTbl").Rows(i).Item("Producerid") = cbProducer.Text And CompanyForm.dsCompany.Tables("CompanyDiscountTbl").Rows(i).Item("TovarGroupId") = cbTovgr.Text) Then
                                MessageBox.Show("Такая скидка существует.")
                                Me.Close()
                                Return
                            End If
                        End If
                    Next i

                    'Создаем новую строку для таблицы CompanyDiscountTbl
                    drDiscount = CompanyForm.dsCompany.Tables("CompanyDiscountTbl").NewRow
                    'Заполняем созданную строку данными из комбобоксов и текстбокса.
                    drDiscount.Item("ProducerID") = cbProducer.Text
                    drDiscount.Item("TovarGroupId") = cbTovgr.Text
                    drDiscount.Item("Discount") = txtDiscount.Text

                    'Добавляем полученную строку в таблицу.
                    CompanyForm.dsCompany.Tables("CompanyDiscountTbl").Rows.Add(drDiscount)
                    'Очищаем текстовое поле для новой скидки.

                    txtDiscount.Text =  0 

            End If

            Else
                    MessageBox.Show("Введите скидку.")
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Все работает, но может быть можно как то более красиво? Например объявить столбцы Producerid и TovarGroupId первичным ключом?Как собственно и есть на самом SQL сервере.
...
Рейтинг: 0 / 0
Нужен совет по работе с DataSet.
    #32615110
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например объявить столбцы Producerid и TovarGroupId первичным ключом
Совершенно верно!!!!
...
Рейтинг: 0 / 0
Нужен совет по работе с DataSet.
    #32615224
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:) Спасибо, понятно что верно, а как?
...
Рейтинг: 0 / 0
Нужен совет по работе с DataSet.
    #32615643
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Dim dt as DataTable = dsCompany.Tables("CompanyDiscountTbl")
With dt
      .PrimaryKey = New DataColumn() {.Columns("Producerid"), .Columns(" TovarGroupId")}
End With

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Нужен совет по работе с DataSet.
    #32615846
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужен совет по работе с DataSet.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]