Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как забрать данные из select, который выполняется в хранимой проц [D7, MSSQL]


DKalinin ©   (2002-12-10 15:13:00) 

есть StoredProc на сервере, в ней в конце выполняется Select

на клиенте есть TStoredProc

открываю ее StoredProc1.Open

подскажите, как забрать из нее значения столбцов по их номеру?
или по названию поля

StoredProc.FieldByName("field").AsString - не работает,
говорит, что нет такого поля, хотя оно точно есть.
FieldCount показывает значение 2 , хотя поле 12


Cheshit   (2002-12-13 18:37:00) [1]

В TStoredProc просто добавь все поля как в TQuery - проработает.
Только если процедура возвращает параметры тогда можеш получить
и пустой рекордсет.


_Voland   (2002-12-10 19:44:00) [2]

Я делал в таком случае выполнение процедуры в запросе
т.е. писал в запросе
Exec sp_Adress 1,3,70
и все затем открываешь запрос и работаешь


Fiend   (2002-12-10 17:56:00) [3]

То SergSuper
у него проблема была немного в другом:
во первых он видел рекордсет в гриде, что говорит о том, что он вернулся не пустой. И во вторых, текст на ПАСе у него был не правильный. я показал как исправить.

На основе первого делаем вывод, шо nocount его не спасёт.
Сорри если чем обидел!


SergSuper   (2002-12-10 17:43:00) [4]

To Fiend
Может и не лечит, но причина может быть в этом.
Если в начале стоит какой-нибудь update, то может выскакивать пустой рекордсет, в котором колонок нет и соответственно поэтому и ругается что не может найти колонку.


Fiend   (2002-12-10 17:30:00) [5]

То SergSuper
ну это ваще не от того лечит.


SergSuper   (2002-12-10 17:23:00) [6]

В начале процедуры set nocount on написано?


Hooch   (2002-12-10 16:37:00) [7]

в TadoQury напиши "exec MyProc 10,20" скажи Open и все дела


Delirium   (2002-12-10 16:36:00) [8]

Для ADO:

ADOQuery1.SQL.Text:="MyProc MyParam"
ADOQuery1.Open;


Delirium   (2002-12-10 16:34:00) [9]

Для MSSQL существуют всего два пути

insert ... exec ...
select ... from OpenQuery(...)


Fiend   (2002-12-10 16:31:00) [10]

То FetchParams
FetchParams - это для получения значений параметров после выполнения запроса к SyBase или MSSQL.
не путайте чела.

То DKalinin
Query3.ParamByName( "DateSetBegin").AsString:=wwDBDatetimePicker1.Text;
Query3.ParamByName( "DateSetEnd").AsString:=wwDBDatetimePicker2.Text;
Query3.Open;

говорит, что параметр не найден

в тексте запроса - exec OtstoyReport :DateSetBegin, :DateSetEnd


DKalinin   (2002-12-10 16:26:00) [11]

кусочек кода приведи, пожалуйста


BorisUK   (2002-12-10 16:15:00) [12]

FetchParams
before Open procedure


DKalinin   (2002-12-10 16:08:00) [13]

делаю так:
Query3.ParamByName("BeginSetDate").AsString:=wwDBDatetimePicker1.Text;
Query3.ParamByName("EndSetDate").AsString:=wwDBDatetimePicker2.Text;
Query3.Open;

говорит, что параметр не найден

в тексте запроса - select * from OtstoyReport (:DateSetBegin, :DateSetEnd)

что я делаю не так?


Prooksius   (2002-12-10 16:05:00) [14]

2 DKalinin © (10.12.02 15:42)
Лучше использовать TQuery и в её SQL написать select * from MyStoredProc(:Param1,:Param2,...)
Что так критично использовать TStoredProc?


stone   (2002-12-10 15:54:00) [15]

Я бы сначала выполнил эту процедуру в Query Analyzer, и посмотрел бы что она возвращает, а уж потом выбирал бы компоненты для приложения.


asmith   (2002-12-10 15:48:00) [16]

Использую для получения набора данных из StoredProc TADOQuery - проблем никаких.


DKalinin   (2002-12-10 15:42:00) [17]

неужели нет ни одного способа прочитать, что выдал select внутри процедуры на сервере?

ведь грид их через TStoredProc видит

помогите, пожалуйста


Наверх

Титульная страница Поиск, карта сайта Написать письмо