Страница: 1 |
Страница: 1 |
Вопрос: Две таблицы в БД-одна в ДатаСете?
Добавлено: 19.07.06 19:55
Автор вопроса: Nordic | ICQ: 295030521
сразу оговорюсь - я новичок в VB.NET
Следующий расклад:
БД-MsSQL, в ней две основные таблицы (Г и В) и несколько вспомогательных, большая часть которых связана с Г и В.
В Г и В одно и то же (по логике БД) ключевое поле, значения уникальны между обоими таблицами. Идея создать две разные таблицы возникла из-за наличия в них нескольких, уникальных для каждой, полей (из 14 примерно 3-4 уникальных).
Сейчас занимаюсь созданием дружелюбного интерфейса. С отображением данных поступил следующим образом:
1) создал запрос на объединение двух таблиц через UNION;
2) в DataSet загружаю результаты динамического запроса уже из 1)
3) ну и в датагрид..
Естественно, уникальные для Г и В поля отображать не получается, да и при просмотре данных - не критично (для меня)
Но добрался до редактирования/добавления/удаления.. DataBinding'ом связываю несколько полей из датасета (пункт 2) с текст боксами и комбо боксами новой формы..
вопросы:
1. Какой способ применить для того, чтобы уникальные для Г и В отображались в контролах новой формы редактирования? ведь в датасете этих данных нет..
2. результат UNION не обновляем, следовательно встанет проблема сохранения изменений, причем в разные таблицы.
Буду очень признателен за советы.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Nordic
ICQ: 295030521
Вопросов: 1
Ответов: 4
Профиль | | #1
Добавлено: 21.07.06 06:57
никто не знает, или всем лень?
Номер ответа: 2
Автор ответа:
Nordic
ICQ: 295030521
Вопросов: 1
Ответов: 4
Профиль | | #2
Добавлено: 26.07.06 13:15
на второй вопрос ответ, в-принципе, нашел. просто организую сохранение измененных данных куда надо циклом. Это так, умозрительно.
но по-поводу организации DataSet из двух таблиц в DB очень хотел бы услышать совет знающих.
Номер ответа: 3
Автор ответа:
ailcat
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #3
Добавлено: 21.08.06 02:20
По памяти Access - создай другой рекордсет, содержащий только обновляемую строку, но все поля (SELECT * FROM Г,В WHERE ID=...). И свяжи с ней свои поля редактирования. а при изменении положения курсора в основной таблице рефрешь рекордсет (хотя правильнее будет добавить кнопку-переключатель Edit и по ее свойству checked обновлять рекордсет, делать видимыми поля редактирования, дисаблить основную таблицу и т.п.)
Номер ответа: 4
Автор ответа:
Nordic
ICQ: 295030521
Вопросов: 1
Ответов: 4
Профиль | | #4
Добавлено: 22.08.06 10:15
спасибо, интересный вариант!
я тут правда уже кое-какое безобразие сам наворотил.
Номер ответа: 5
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 23.08.06 04:05
Можно заюзать ADO .NET vNext, там реально применять наследование, и это все очень красиво отражается в БД
А вообще, я б не разбивал таблицу на две - я бы в одной таблице вбил все поля, но для одних записей заполнял одни, а другие оставлял NULL, для других записей - первые поля заполнял NULL'ами, вторые - значениями, в гриде (или где ты там это все отображаешь) эти специфичные для записи столбцы не отображать, а при выборе записи - уже знаешь как разрулить, какие поля показывать, какие - нет (хинт - проверяшеь из на NULL ).
Если поля по логике сами по себе могут принимать NULL, то добавить еще один флаг, показывающий, какой тип имеет запись.
Номер ответа: 6
Автор ответа:
Nordic
ICQ: 295030521
Вопросов: 1
Ответов: 4
Профиль | | #6
Добавлено: 30.08.06 12:46
насчет одной таблицы думал, но не понравилось
про ADO.NET vNext - спасибо, прочитаю )
вот выйду из отпуска, там еще вопросы появятся..