Связать таблицы в DataSet30.09.2009, 18:28. Показов 4676. Ответов 10
Метки нет (Все метки)
имеем базу пусть с двумя таблицами.
первая имеет две колонки: номер (ключ) и текст вторая - несколько колонок, одна из которых (не ключ) должна иметь значение одного из ключей первой таблицы. как это указать?
0
|
|
| 30.09.2009, 18:28 | |
|
Ответы с готовыми решениями:
10
Передача данных из таблицы одной dataSet в таблицу другой dataSet Как связать CrystalReports и DataSet Как можно связать DataSet с компонентами checkedListBox и treeView |
| 30.09.2009, 23:53 [ТС] | |
|
единственное что в голову пришло - ловить событие RowChanging, лезть в первую таблицу и посмотреть имеет ли она значение, на которое меняется данная клетка, и если нет - или "дефолт" присвоить или каким-то образом не допустить изменений. наверняка есть способы получше.
где бы почитать красиво по теме?
0
|
|
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
|
| 01.10.2009, 03:09 | |
|
0
|
|
| 01.10.2009, 12:24 [ТС] | ||
|
я не знаю, можно ли в каком-нибудь визарде указать, что такая-то колонка таблицы должна иметь значение, содержащиеся в такой-то колонке другой таблицы. например, одна таблица: номер (ключ); название 1 проект один 340 проект второй 76 проект третий вторая таблица: начало (ключ) ; конец; номер проекта (должен содержаться в колонке один первой таблицы!) 22/03/2005 30/02/2006 340 ДД/ММ/ГГГГ ДД/ММ/ГГГГ 340 ДД/ММ/ГГГГ ДД/ММ/ГГГГ 222 //ошибка! ДД/ММ/ГГГГ ДД/ММ/ГГГГ 76 теперь "нормальный" вопрос: какими средствами можно наилучшим образом обеспечить, чтобы значения колонки три второй таблицы были только из колонки один первой? если у вас есть вариант, то сразу: что произойдет, если в первой таблице произойдет корректура?
0
|
||
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
|
| 02.10.2009, 02:57 | |
|
Для размышлений о правильности движения:
1. Ключ суррогатный? 2. Для чего вам отображать и изменять ключ у строки? Создать связь между таблицами в DataSet - DataRelation. Если DataSet типизированый, то в дизайнере перетащить поле с ключом первой таблицы на поле во второй таблице на номер проекта. Должно появиться окно создания связи между таблицами. В окне выбрать "Foreign Key Constraint Only", в "Update Rule" поставить "Cascade".
1
|
|
| 02.10.2009, 11:55 [ТС] | ||
|
может я лучше попробую описать задачу, а вы мне посоветуете как лучше организовать базу для этой задачи? организация ведет несколько проектов. старые закрываются, новые появляются. нужно вести учет расходов. расходы списываются на проекты или на собственные нужды. я себе думал, сделаю так: две таблицы, одна из которых будет содержать список проектов с колонками: уникальный номер (ключ. приходит "сверху", т.е. не суррогатный), дата начала, дата закрытия, название, еще что-то возможно. ведется "администратором". все остальные сотрудники ведут каждый свою собственную таблицу (так предписано), и все свои затраты туда заносят. колонки: дата-время начала затраты (ключ), дата-время конца затраты (затратой может быть просто отрезок времени, посему нужны начало и конец. если одноразовое действие, они или равны или конец пустой), описание затраты, номер проекта, на который списываются затраты, еще что-то. этот номер проекта во второй таблице не может быть чем угодно, а он должен быть каким-то номером проекта из первой колонки первой таблицы. кроме того, если администратору придется по какой-то причине поменять номер проекта, а на него уже кто-то что-то списал, то эти номера должны измениться везде. конечно, для пользователя нужно будет создать удобный gui, и не давать ему "запороть" базу данных, но хотелось бы также иметь возможность смотреть и редактировать базу в DataGridView, и при этом не допустить ввести во вторую таблицу номер "несуществующего" проекта, например. также как "оно" не дает ввести в поле дата-время что-то в другом формате. я не нашел способа указать такое свойство в каком-нибудь визарде. если нужно это специально программировать - я готов. но не хочется программировать что-то, а потом окажется, что то же самое еще лучше можно было "мышкой наклацать".
0
|
||
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
|
| 02.10.2009, 19:24 | |
|
Какую БД Вы решили использовать?
0
|
|
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
||||
| 03.10.2009, 19:06 | ||||
|
0
|
||||
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
||
| 03.10.2009, 20:34 | ||
|
0
|
||
| 03.10.2009, 22:29 [ТС] | |||||
|
у администратора свои задачи: ввести новый проект, "закрыть" проект (чтобы на него уже нельзя было списывать затраты). возможно - изменить номер проекта (я против. пусть корректируют название, а номер лучше не трогать). пользователей - два типа - "сотрудники" и "начальники". сотрудник, например, отработал день - отбил в базу: с такого-то времени по такое-то работал на проект 222, с такого-то по такое-то - на 333. начальник хочет посмотреть, как у него обстоят дела с затратами на его проект. не перерасходовал ли он уже выделенные средства. мне почему-то кажется, что идея с одной таблицей затруднит реализацию всех этих задач. (?) Добавлено через 4 минуты
0
|
|||||
| 03.10.2009, 22:29 | |
|
Помогаю со студенческими работами здесь
11
Как получить данные из таблицы в DataSet? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|