Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение данных / 19 сообщений из 19, страница 1 из 1
21.11.2002, 14:05
    #32070758
Gue
Gue
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Необходимо собрать данные с MS SQL серверов о наличии.
Проблема была решена с помощью линковки филиальных серверов и запроса
Select ‘Филиал 1’, * from server1.work.dbo.goods
Union all
Select ‘Филиал 2’, * from server2.work.dbo.goods
Union all
Select ‘Филиал 3’, * from server3.work.dbo.goods

Недостатки такого подхода
– линковка работает медленнее чем прямое соединение с сервером
– однопоточность

Родилась идея под каждый сервер создавать свое соединение и выбирать данные многопоточно.

А вот как полученные результаты собрать и показать в DBGRID ?
...
Рейтинг: 0 / 0
21.11.2002, 15:12
    #32070821
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
пиши вьюху, ходи к ней, показывай в гриде.
...
Рейтинг: 0 / 0
21.11.2002, 15:36
    #32070844
gue
gue
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Я и без View хожу и показываю в grid
Смыл-то был в разделении запроса
1 запрос - Select ‘Филиал 1’, * from server1.work.dbo.goods
Параллельно 2 запрос - Select ‘Филиал 2’, * from server2.work.dbo.goods
И т.д.

Получаем набор рекодсетов.

Эти наборы надо соединить и показать в DBGRID
...
Рейтинг: 0 / 0
21.11.2002, 15:42
    #32070849
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Ааа, ну тады
- запихай это все в TStringGrid
или
- я не помню где, но видал компоненту TMemoryTable...
свали в нее все что надо и показывай в гриде.
вот.
...
Рейтинг: 0 / 0
21.11.2002, 15:49
    #32070854
Gue
Gue
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Спасибо. Поищем.

Была еще идея.
Держать на основном сервере временную таблицу. Скидывать в нее промежуточные результаты и показывать в DBGRID
...
Рейтинг: 0 / 0
21.11.2002, 15:56
    #32070869
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Проходили... сложно и не надежно...

Сделай проще:
1.
src]create view kaka
as
select 1 as тип,
*
from server1.....
union all
select 1 as тип,
*
from server2.....
[/src]
А потом сделай SP которой передавай все что надо...

Почему так?:
1. т.к. отпадает гемор с обновлением таблицы.
2. при больом колве юзеров будут локи.
3. вьюха гарантирует отображение наиб. точного состояния данных.
4 если не критично - в селектах делай with (nolock)

вот.
...
Рейтинг: 0 / 0
21.11.2002, 16:14
    #32070880
Gue
Gue
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Минус при использовании view:
-один из серверов может не отвечать
-что делать в случае не полного выбора филиалов
...
Рейтинг: 0 / 0
21.11.2002, 16:31
    #32070896
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
тогда надо спросить гуру как сделать контроль активности линк-сервака... без прерывания выполнения запроса... на сколько я знаю такое только в SP можно сделать...
дааа... таблица будет предпочтительнее.. в таком случае я бы сделал джобы которые сваливали периодически инфу в твою таблицу...
...
Рейтинг: 0 / 0
21.11.2002, 16:48
    #32070904
Gue
Gue
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Периодически то-же не пойдет. Нужен режим on-line.
Такая специфика.
...
Рейтинг: 0 / 0
21.11.2002, 17:12
    #32070930
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
тады запихай в разные потоки TThread подключение к серверу... прога тормозить почти не будет... при длительном таймауте... при попытке подкл.
можно ишо попробовать напрямик через апи сервера.
поглялди сорцы на сях в папке инсталляции сервака...
можно еще в инете пошарить .... я где-то видал подобные компоненты.
...
Рейтинг: 0 / 0
21.11.2002, 17:35
    #32070959
Gue
Gue
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Не только подключение к серверу, но и TQuery.

Вот к этому результату я и пришел с минусом.

А вот как полученные результаты собрать и показать в DBGRID ?

Спасибо за идеи.
...
Рейтинг: 0 / 0
21.11.2002, 17:45
    #32070972
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
1. порой в инете tmemorytable - единственный путь юзать на клиенте - временную таблицу. у меня где-то валялась эта компонента... но найти не могу что-то.
2. или заюзай tstringgrid или tdrawgrid.

или в компонентах сделай стока колонок скока надо и, допустим, в первой храни указатель на запись - ИМЕННО указатель - ето TQuery.GetBookmark.
затем перехвати отрисофку грида и совершенно спокойно ходи по указателю на нужную запись и рисуй все, что надо.. )))
...
Рейтинг: 0 / 0
21.11.2002, 17:49
    #32070978
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
.. то что я написал после или касалась п.2.

можно еще попробовать на серваке создать временную таблицу с решеткой в наименовании, которая грохнется автоматом и сваливай в нее посредством вызова sp к каждому линк серверу что те надо...
потом делаешь от туда селект, потом убиваешь таблицу.
я бы так ишо попытался.
...
Рейтинг: 0 / 0
21.11.2002, 17:51
    #32070981
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
... токма хитрость здесь в том, что я гдето видал xp_xxx процедуру, которая тестит линк на активность - но имя ее не помню... она не документирована (((
...
Рейтинг: 0 / 0
21.11.2002, 17:55
    #32070986
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
... и в догонку...
я выступаю за то чтобы любая прога была только мордой ко вьюхам и sp - вся логика должна делаться на серваке!
у меня вся логика там - бед не знаю.
юзверь заносит/модифицирует данные через СП.
видит - через вью
а логика вся на серваке - делфи выполняет роль кряксивой обложке - и менять екзешник мало приходится.
вот)))
имхо.
...
Рейтинг: 0 / 0
21.11.2002, 18:09
    #32071000
Gue
Gue
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Согласен.

Скорее всего поступлю так.

Соединяюсь с основным сервером.
Перед выборкой данных с филиальных серверов создаю по основному коннекту временную таблицу с решеткой.

Запускаю в потоке соединение с филиальным сервером, выполняю запрос, получаю результат.
После получения результата перебрасываю его во временную таблицу.
Перечитываю DBGrid
И т.д. по мере получения с филиалов информации
...
Рейтинг: 0 / 0
21.11.2002, 18:25
    #32071012
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Нее, я немного не это имел ввиду - временная таблица живет один раз до конца работы с СП, у меня большинство извращенных отчетов - записывают промежуточные куски во временную таблицу - я делаю из нее селект - и спокойно убиваю ее.
ето работает для всех юзеров. т.к. юзерам имхо не стоит давать права на создание таблиц)))
...
Рейтинг: 0 / 0
21.11.2002, 18:36
    #32071019
Gue
Gue
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
Не понятно.

А где аккумулировать данные ?
...
Рейтинг: 0 / 0
21.11.2002, 18:47
    #32071025
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных
ответы по асе 151932727
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение данных / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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