Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц? / 20 сообщений из 20, страница 1 из 1
08.12.2004, 19:50
    #32819560
remotd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Вопрос такой - имеется несколько таблиц (300 - одно изделие - одна таблица -структура у всех одинакова- SqlServer2000). Пользователь в зависимости от выбора должен грузить одну из таблиц. Как в этом случае поступить? Создавать 300 sqlDataAdapter-ов? Или можно с одним Адаптером параметрически (или через временную таблицу - присвоив ей какое-нибудь имя - на нее завязать Адаптер, и после изменений перенести в таблицу данного изделия, а "временную" очистить? Спасибо.
...
Рейтинг: 0 / 0
08.12.2004, 20:01
    #32819574
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Адаптер, думаю, можно оставить один. А вот SelectCommand менять у него динамически в зависимости от выбора пользователя стоит.
Я бы сделал одну хранимую процедуру, в которую передавал бы соотв. параметры. В процедуре динамический запрос (либо 300 однотипных селектов, разбитых по условию).
...
Рейтинг: 0 / 0
08.12.2004, 20:23
    #32819596
remotd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Сделал в Адаптере (Мастером) - selectCommand
select a1,a2.... FROM @namefile , где @namefile - параметр(имя таблицы) - который передает юзер пишет ошибку, требует указать конкретную таблицу
...
Рейтинг: 0 / 0
08.12.2004, 22:55
    #32819675
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Правильно пишет. См. BOL (Books Online) на предмет синтаксиса SELECT в MS SQL.
...
Рейтинг: 0 / 0
08.12.2004, 23:11
    #32819681
Один1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
1 BigheadmanАдаптер, думаю, можно оставить один. А вот SelectCommand менять у него динамически в зависимости от выбора пользователя стоит.
Самое лучшее

2 BigheadmanЯ бы сделал одну хранимую процедуру, в которую передавал бы соотв. параметры. В процедуре динамический запрос Хуже

3 Bigheadman(либо 300 однотипных селектов, разбитых по условию). Лучше, чем 2, но более трудоемко, чем 1. Хотя иногда и лучше.

Динамический SQL (в случае MSSQL) - зло, хотя и удобное зло
...
Рейтинг: 0 / 0
09.12.2004, 00:33
    #32819716
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
remotdВопрос такой - имеется несколько таблиц (300 - одно изделие - одна таблица -структура у всех одинакова- SqlServer2000).

Вопрос, имхо, поставлен не верно. Если в базе 300 таблиц с совершенно одинаковой структурой, то надо думать не о том, как выгрузить их на клиента, а о том как нормализовать все это безобразие :-)
Может стоит все триста таблиц объединить в одну? С форентом на первичный ключ списка изделий? Тогда выборка данных будет выглядеть так:

Код: plaintext
1.
2.
3.
4.
select a1, a2, ...
from product_data 
  inner join product on product.PK = product_data.FK
where product.Name = @namefile

--
WBR, Roman S. Golubin
...
Рейтинг: 0 / 0
09.12.2004, 01:07
    #32819732
remotd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Сделал по 1-му варианту.

BigheadmanПравильно пишет. См. BOL (Books Online) на предмет синтаксиса SELECT в MS SQL.
- ошибся. Исправил

Объединить в одну таблицу все 300 изделий (в каждом до 1000 записей) -
пока не готов. Сейчас работает под FoxPro 2.0 . Софт делал 12 лет назад под ДОС. Сейчас назрела необходимость перевести под Win.

Всем спасибо.
И еще такой вопрос.
Имена таблиц числовые от 1 и далее, по синтакасу вроде бы как MSSQL
запрещает имена не с буквы, в операторах вставил [...] - проходит,
причем файлы .dbf импортировал DTS - отлично. Что же лучше, оставить имена таблиц такими или поменять с добавлением буквенного индекса?
...
Рейтинг: 0 / 0
09.12.2004, 01:09
    #32819733
remotd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Предидущий вопрос, конечно, в другой форум, но раз тема одна...
...
Рейтинг: 0 / 0
09.12.2004, 09:36
    #32819923
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
remotdОбъединить в одну таблицу все 300 изделий (в каждом до 1000 записей) - пока не готов.

Триста тысяч записей - достаточно скромная табличка получится. Скрипт для объединения могу помочь написать :-)
...
Рейтинг: 0 / 0
09.12.2004, 11:12
    #32820171
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
авторИмена таблиц числовые от 1 и далее, по синтакасу вроде бы как MSSQL
запрещает имена не с буквы, в операторах вставил [...] - проходит

Не запрещает, а как раз требует скобок в таких случаях. Если скобки не смущают, то оставьте.

2 Один1.
Менять динамически запрос в SelectCommand хуже, чем хр. процедура с динамическим SQL тем, что у хр. процедуры лучше maintability. К тому же настоятельно рекомендуется там, где возможно, использовать хр. процедуры, а не явные запросы. Имеется в виду из приложения.

Динамический SQL - зло лишь в неграмотных руках. Впрочем это касается любого инструмента.
...
Рейтинг: 0 / 0
09.12.2004, 11:35
    #32820251
Serg****
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Bigheadman
Менять динамически запрос в SelectCommand хуже, чем хр. процедура с динамическим SQL тем, что у хр. процедуры лучше maintability. К тому же настоятельно рекомендуется там, где возможно, использовать хр. процедуры, а не явные запросы. Имеется в виду из приложения.

Динамический SQL - зло лишь в неграмотных руках. Впрочем это касается любого инструмента.

Вот кстати, интересный вопрос когда лучше использовать явные запросы, а когда хр. проц.
Как например с помощью хр. пр. реализвывать условие WHERE
...
Рейтинг: 0 / 0
09.12.2004, 13:49
    #32820725
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
must read
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daag.asp

авторКак например с помощью хр. пр. реализвывать условие WHERE
Не понял в чем проблема. :-( Может, на конкретном примере.
Обычно условие WHERE пишется с использованием параметров, которые передаются из вызывающего приложения.
...
Рейтинг: 0 / 0
09.12.2004, 14:01
    #32820767
Serg****
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Bigheadman
авторКак например с помощью хр. пр. реализвывать условие WHERE
Обычно условие WHERE пишется с использованием параметров, которые передаются из вызывающего приложения.

В этом случае если у меня в таблице 20 полей, на любое из которых может быть наложено условие WHERE , предлагается передавать 20 аргументов и 20 имен полей. А если условие должно быть в интервале, то что тогда?

Как вариант передавать в качестве параметра сформированное условие - но это еще хуже чем явно запрос вызвать.
...
Рейтинг: 0 / 0
09.12.2004, 14:25
    #32820880
Por
Por
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Serg****
В этом случае если у меня в таблице 20 полей, на любое из которых может быть наложено условие WHERE , предлагается передавать 20 аргументов и 20 имен полей. А если условие должно быть в интервале, то что тогда?

Как вариант передавать в качестве параметра сформированное условие - но это еще хуже чем явно запрос вызвать.

Не самый лучший вариант, но можно и так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Field1 int = null,
@Field2 datetime = null,
@Field3 varchar( 10 ) = null,
@Field4 cahr( 2 ) = null
...
WHERE
   Field1 = case when @Field1 is null then Field1 else @Field1 end and
   Field2 = case when @Field2 is null then Field2 else @Field2 end and
   Field3 = case when @Field3 is null then Field3 else @Field3 end and
   Field4 = case when @Field4 is null then Field4 else @Field4 end 
...
...
Рейтинг: 0 / 0
09.12.2004, 14:26
    #32820888
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Если просто 20 полей, то элементарно. От 20 параметров хр. процедура не загнется.
Если на какое-то поле условие не нужно, то передаем NULL, а в условии пишем WHERE f1 = ISNULL(@f1, f1)

С диапазонами сложнее.
...
Рейтинг: 0 / 0
09.12.2004, 14:38
    #32820963
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
2 Por.

ИМХО все же мой вариант более лаконичный. :-)
...
Рейтинг: 0 / 0
09.12.2004, 15:22
    #32821158
Serg****
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
BigheadmanЕсли просто 20 полей, то элементарно. От 20 параметров хр. процедура не загнется.
Если на какое-то поле условие не нужно, то передаем NULL, а в условии пишем WHERE f1 = ISNULL(@f1, f1)

С диапазонами сложнее.

А теперь в таблицу добавилось еще одно поле ...
Так что заявление:
BigheadmanМенять динамически запрос в SelectCommand хуже, чем хр. процедура с динамическим SQL тем, что у хр. процедуры лучше maintability
несколько спорно
...
Рейтинг: 0 / 0
09.12.2004, 15:46
    #32821243
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
авторА теперь в таблицу добавилось еще одно поле ...

Ну и? Код приложения менять ведь при динамическом запросе придется. В случае хр. процедуры - совсем не факт (зависит от многих факторов).
Одно из преимуществ хранимых процедур - доп. уровень абстракции и большие возможности по maintability.

Так что лучше внимательно изучить guide от Майкрософт и возможности MS SQL. А потом выбрать то, что лучше подходит в конкретном случае.
Хр. процедуры - не панацея, и я сам в некоторых случаях использую динамические запросы.
...
Рейтинг: 0 / 0
09.12.2004, 15:52
    #32821263
Serg****
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Bigheadman авторА теперь в таблицу добавилось еще одно поле ...

Ну и? Код приложения менять ведь при динамическом запросе придется.

Это смотря как приложение написано.
К примеру, бежим по всем контролам в которых условие вводится и формируем WHERE на лету.
...
Рейтинг: 0 / 0
09.12.2004, 17:58
    #32821685
Por
Por
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц?
Bigheadman2 Por.

ИМХО все же мой вариант более лаконичный. :-)

согласен %)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите, MSSQL - sqlDataAdapter - необходимо грузить сотню таблиц? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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