Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужен совет по работе с DataSet. / 5 сообщений из 5, страница 1 из 1
21.07.2004, 15:30
    #32615065
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по работе с DataSet.
Есть 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
21.07.2004, 15:43
    #32615110
vooo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по работе с DataSet.
Например объявить столбцы Producerid и TovarGroupId первичным ключом
Совершенно верно!!!!
...
Рейтинг: 0 / 0
21.07.2004, 16:17
    #32615224
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по работе с DataSet.
:) Спасибо, понятно что верно, а как?
...
Рейтинг: 0 / 0
21.07.2004, 18:39
    #32615643
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по работе с DataSet.
Код: 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
21.07.2004, 22:04
    #32615846
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по работе с DataSet.
Спасибо
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужен совет по работе с DataSet. / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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