Страница: 1 |
Страница: 1 |
Вопрос: Последний вопрос по DataRelation! Помогите!
Добавлено: 19.05.05 18:10
Автор вопроса: Florin
Завязано две таблицы COMPANY и PRODUCT в DataGrid1 и DataGrid2 соответственно. В DataGrid1 хочу вывести данные отсортированные по определенному зночению поля. Все работей нормально, если не пытаться отсортировать COMPANY.
Вот сам код:
Dim rel, rel1 As DataRelation
rel = New DataRelation("ASD", DS.Tables("COMPANY").Columns("ID_C"), DS.Tables("PRODUCT").Columns("ID_P"))
DS.Relations.Add(rel)
'Тут пытаюсь сделать свою сортировку
OD.SelectCommand.CommandText = "SELECT ID_C, Название, Менеджер, Директор, Бухгалтер, Регион, VENDOR, Статус FROM COMPANY WHERE (VENDOR = 'V')"
OD.Fill(DS)
OD_Dop.Fill(DS)
DataGrid1.SetDataBinding(DS, "COMPANY")
DataGrid2.SetDataBinding(DS, "COMPANY.ASD")
Вижу такую ошибку:
An unhandled exception of type 'System.Data.ConstraintException' occurred in system.data.dll
Additional information: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 20.05.05 09:52
Поясните пожалуйста назначение полей ID_P и ID_C...
Номер ответа: 2
Автор ответа:
Florin
Вопросов: 4
Ответов: 7
Профиль | | #2
Добавлено: 20.05.05 10:36
Это ключивые поля в таблице COMPANY и PRODUCT я через них связываю эти таблицы.
Номер ответа: 3
Автор ответа:
Alex10
ICQ: 243869817
Вопросов: 9
Ответов: 8
Профиль | | #3
Добавлено: 20.05.05 13:34
а ты не хочешь использовать DataView, с ним удобнее
Если да то скажи, тогда я тебе напишу код
Номер ответа: 4
Автор ответа:
Florin
Вопросов: 4
Ответов: 7
Профиль | | #4
Добавлено: 23.05.05 11:10
Сбасибо Alex10 я былбы очень признателен. Ато я так и не смог решить проблему тем способом!
Номер ответа: 5
Автор ответа:
Alex10
ICQ: 243869817
Вопросов: 9
Ответов: 8
Профиль | | #5
Добавлено: 23.05.05 12:17
ну вот я взял из своего примера
значт есть 2 тбл, страны и города
Private Sub Frm_CountryView_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dvR As New DataView()
cn.ConnectionString = strCon
cn.Open()
'выбераем записи из таблицы страны
da = New OleDbDataAdapter("SELECT * FROM tb_Countries", cn)
'выбераем записи из таблицы города
daCity = New OleDbDataAdapter("SELECT * FROM tb_Cities", cn)
'заполняем DataSet
da.Fill(ds, "tb_Countries"
daCity.Fill(ds, "tb_Cities"
'добовляем связь
Rel = New DataRelation("MyRel", ds.Tables("tb_Countries".Columns("CoutrID" _
, ds.Tables("tb_Cities".Columns("CoutrID")
ds.Relations.Add(Rel)
 im dvManager As New DataViewManager(ds)
cn.Close()
dvR = dvManager.CreateDataView(ds.Tables("tb_Countries")
dvR.Table.PrimaryKey = New DataColumn() {dvR.Table.Columns("CoutrID"}
dvR.Table.Columns("CoutrID".AutoIncrement = True
GridCountry.DataSource = dvR
End Sub
Номер ответа: 6
Автор ответа:
Florin
Вопросов: 4
Ответов: 7
Профиль | | #6
Добавлено: 23.05.05 13:53
Alex, а где используется сама связь rel, как вывести связанные данные второй таблицы во второй грид?
Номер ответа: 7
Автор ответа:
Alex10
ICQ: 243869817
Вопросов: 9
Ответов: 8
Профиль | | #7
Добавлено: 23.05.05 14:18
чтобы вывести данные во 2 грид надо:
1 приданной конструкции он появится как подчиненный грид, записи с плюсиками
2 чтобы все было во втором гриде я делал так надо создать еще один DataView, также присвоить его к гриду, а затем при клике фильтруем DataView.rowfilter
А Rel создаешь так
Dim Rel As DataRelation
А еще попробуй так:
в подчиненном гриде напиши
grid.datamember=Rel
Номер ответа: 8
Автор ответа:
Alex10
ICQ: 243869817
Вопросов: 9
Ответов: 8
Профиль | | #8
Добавлено: 23.05.05 17:32
ну че попробовал??
если че пиши!!!
Номер ответа: 9
Автор ответа:
Florin
Вопросов: 4
Ответов: 7
Профиль | | #9
Добавлено: 24.05.05 10:31
Чет ничего таким способом не запахало. Я там понял, что проблемма в том что нужно сортировать обе таблицы а не одну. Добавил в обе поле с нужным признаком и сортирую обе табл. по этому признаку. Вроде работает , жаль что так криво и горбато