Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 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-сайт: ailcat.narod.ru
 Профиль | | #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 - спасибо, прочитаю )

вот выйду из отпуска, там еще вопросы появятся..

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам