Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Вниз

Как добавить новое поле в заполненный датасет ?   Найти похожие ветки 

 
Махно   (2002-10-31 08:26) [0]

Здравствуйте,
работаю с MSSQL2000 через ADO.
Выбираю некоторое количество записей, например, вот таким образом:

ADODataSet1.CommandText := "SELECT * FROM MYTABLE";
ADODataSet1.Open;


В результате получаю датасет.
Так вот вопрос, как мне добавить новой поле в этот же самый датасет ?


 
Delirium   (2002-10-31 10:48) [1]

Никак


 
Tundra   (2002-10-31 11:10) [2]

ADODataSet1.CommandText := "SELECT *,"" as NewField FROM MYTABLE";
ADODataSet1.Open;


 
Махно   (2002-10-31 11:53) [3]

2 Tundra

Хм...
Спасибо. Это действительно решение.

Правда есть одно НО.
Как быть если

ADODataSet1.CommandText := "EXEC dbo.prMyStoredProc";

???




 
Махно   (2002-10-31 13:27) [4]


Господа, неужели Delirium прав ?


 
Андрей Прокофьев   (2002-10-31 13:34) [5]

Никак не добавить, не закрывая при этом.
SELECT *,"" as NewField FROM MYTABLE можно, но поле NewField будет ReadOnly



 
ЮЮ   (2002-10-31 13:39) [6]

Тогда встречный вопрос? Для каких целей в выборке необходимо поле, не существующее в таблице?


 
sniknik   (2002-10-31 13:41) [7]

Махно (31.10.02 13:27)
смотря что ты имееш ввиду (сначала я вопрос совсем по другому понял)
можно через временную таблицу выкрутится
ADODataSet1.CommandText :=
"CREATE TABLE #TempTable (....) "+
"INSERT INTO #TempTable EXEC dbo.prMyStoredProc "+
"SELECT *,"""" as NewField FROM #TempTable";



 
Delirium   (2002-10-31 14:59) [8]

> sniknik ©

Существует ещё один способ помещения выборки из процедуры в таблицу. Первое что надо сделать - указать в системной таблице master.dbo.sysservers для локального сервера srvstatus=1440, тем самым ядро MSSQL будет обращаться к локальному серверу как к linked. Значение достаточно внести один раз, само оно не измениться. После этого становятся возможными такие запросы:
select * from OpenQuery(MyServer, "exec MyProc")
и разумеется
select * into NewTable from OpenQuery(MyServer, "exec MyProc")
Преимущество этого подхода - нет необходимости заранее знать структуру получаемых данных.


 
sniknik   (2002-10-31 16:44) [9]

правильней наверно будет не править таблицу а запустить
EXEC sp_addlinkedserver "MyServer", "SQL Server"
и srvstatus у меня получается = 1249 почемуто, но у меня предубеждение против линков, зря наверное, т.к. преимущества очевидны.


 
Delirium   (2002-10-31 18:17) [10]

Всё нижеследущее IMHO и неточная, субъективная информация.

Я столкнулся с этой задачей довольно давно, с тех пор много экспериментировал, результаты и самостоятельные умозаключения таковы: если создать linked server сам к себе, то при обращении к функции OpenQuery MSSQL задействует свои сетевые службы, тем самым существенно (37 сек. против 25) затормаживает большие выборки. Никаким иным способом, кроме как исправление статуса "руками", обойти эту неприятность мне не удалось.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
14-69554
cracks
2002-10-30 21:19
2002.11.21
Разбивка txt файла на части в формате html


3-69198
dias
2002-10-31 21:40
2002.11.21
Мастера помогите с поднятием backup в 2000


14-69488
Николай Быков
2002-11-01 17:30
2002.11.21
Для разминки мозгов


14-69571
VDen
2002-11-04 19:24
2002.11.21
Любимый СофтАйс


14-69574
Dimka Maslov
2002-11-01 16:42
2002.11.21
Delphi & MSVC++





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский