![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить конец множества RecordSet - ов [D6, MSSQL]
MsGuns © (2006-07-05 15:12:00)Я использую метод NextRecordset (компонеты ADO), как определить что множество RecordSet - ов закончилось? У меня почемуто приложение вылетает гдето на 5,6-ом использовании метода NextRecordset, говорит мол "Can not open Recordset", хотя наборы данных еще в результате запроса есть.
хочеш (2006-07-08 19:36:00) [1]Удалено модератором
Fay (2006-07-06 19:34:00) [2]Удалено модератором
Примечание: аналогично
другое имя (2006-07-06 17:51:00) [3]Удалено модератором
Примечание: личные претензии письмом.
sniknik (2006-07-06 17:32:00) [4]> Ошибка та же ;(((
я ошибся в подсчетах и ты попал на "пустышку"?
я то все получил (в [13] примеры откуда по твоему?). у тебя есть моя прога TestMdb, высылал(вредебы, не помню)? проверь в ней, может у тебя не то количество возвращается... (или на других местах)
MsGuns (2006-07-06 17:01:00) [5]>sniknik © (06.07.06 14:49) [16]
>for i:= 1 to 7 do
Recordset:= Recordset.NextRecordset; //восьмой
Ошибка та же ;(((
(2006-07-06 15:18:00) [6]Удалено модератором
Примечание: хочеш участвовать смени имя, падонковщина на сайте запрещена в любом проявлении... в потрепатся оно еще пройдет, но не в серьезных ветках
Zz_ (2006-07-06 15:11:00) [7]В качестве просто примера ...
http://www.sql.ru/forum/actualthread.aspx?tid=289444#2629273
sniknik (2006-07-06 14:49:00) [8]> Как "перепрыгнуть" через N и получить доступ к N+1 ?
NextRecordset...
var
Recordset: _Recordset;
begin
ADOCommand1.CommandText:= 'EXEC sp_help Table1';
Recordset:= ADOCommand1.Execute; //первый
for i:= 1 to 7 do
Recordset:= Recordset.NextRecordset; //восьмой
ADODataSet.Recordset:= Recordset.NextRecordset; //девятый смотрим
MsGuns (2006-07-06 14:40:00) [9]>применительно к 1 записям. (no recordset) (N)
>применительно к 3 записям (N+1)
Как "перепрыгнуть" через N и получить доступ к N+1 ?
sniknik (2006-07-06 14:37:00) [10]> Если мне не изменяет склероз, print даёт такой recordset..
да, т.к. возвращает ошибку...
sniknik (2006-07-06 14:36:00) [11]> Ибо по совету своего учителя и гуру ( ;) ) sniknik ©`а не использую ее в принципе..
про TSQLStoredProc я никогда и ничего такого не говорил, только про TADOStoredProc
а это не одно и тоже, не пользуюсь dbExpress... возможно в них у StoredProc и есть смысл...
> Такая фича у мсскл есть - sp_help.
EXEC sp_help Table1
возвращает (тестовая прога)
Выполнено:
применительно к 1 записям
применительно к 5 записям
применительно к 1 записям
применительно к 1 записям
применительно к 1 записям
применительно к 1 записям. (no recordset)
применительно к 3 записям
применительно к 3 записям. (no recordset)
применительно к 1 записям
применительно к 1 записям. (no recordset)
там где "no recordset" это "пустышки" нужные только для возврата количества обработанных данных и колекции errors... данных в них нет. читать нечего (т.е. присвоение обьекту ADODataSet даст вышеуказанную ошибку).
Fay (2006-07-06 14:35:00) [12]2 sniknik © (06.07.06 13:28) [9]
> потому как действительно не дает... т.к. оно "локального" действия.
Empty recordset можно получитьт разными способами. Если мне не изменяет склероз, print даёт такой recordset..
MsGuns (2006-07-06 14:00:00) [13]>sniknik © (06.07.06 13:28) [9]
>но есть же еще "или"
>> ... или не пытатся из таких данные читать.
Дело в том, что надо написать универсальную фунцию в Делфи, возвращающую метаданные MS SQL Server любоготипа. Функция получает на входе тип требуемых метаданных (структуру таблицы, списка таблиц, списка ХП, ПК и вообще чего угодно), запрашивает их у указанного сервера (БД) и возвращает в виде списка указателей на структуры соотв. типа. Такая фича у мсскл есть - sp_help. Она возвращает практически любые данные, но пихает все это в разные рекордсеты, количсетво которых может превышать десяток.
>Johnmen © (06.07.06 13:30) [10]
>А-а-а... Понятно! Посмотрел я.
И ты выбирай хелп по TSQLStoredProc.NextRecordSet
Кгхмм.. Блин, вот сюда я точно не смотрел. Ибо по совету своего учителя и гуру ( ;) ) sniknik ©`а не использую ее в принципе..
Щас гляну ! Спасибо в любом случае
Johnmen (2006-07-06 13:30:00) [14]
> MsGuns © (06.07.06 13:15) [8]
Ну как же так???
А-а-а... Понятно! Посмотрел я.
И ты выбирай хелп по TSQLStoredProc.NextRecordSet, а не по TCustomADODataSet. Там есть Example. Принцип тот же...
sniknik (2006-07-06 13:28:00) [15]> Не помогает ;(
ну значит у тебя именно тот случай в котором оно
> Гарантию не даёт
потому как действительно не дает... т.к. оно "локального" действия.
но есть же еще " или"
> ... или не пытатся из таких данные читать.
MsGuns (2006-07-06 13:15:00) [16]>Johnmen © (05.07.06 17:07) [5]
>На NextRecordset естественно :)
Жень, обижаешь ;)
>sniknik © (05.07.06 19:59) [6]
>SET NOCOUNT ON
Не помогает ;(
Fay (2006-07-05 22:32:00) [17]2 sniknik © (05.07.06 19:59) [6]
> SET NOCOUNT ON
> в начале блока команд, чтобы не было "пустышек",
Гарантию не даёт
sniknik (2006-07-05 19:59:00) [18]> "Can not open Recordset"
SET NOCOUNT ON
в начале блока команд, чтобы не было "пустышек", или не пытатся из таких данные читать.
Johnmen (2006-07-05 17:07:00) [19]
> MsGuns © (05.07.06 16:44) [4]
На NextRecordset естественно :)
MsGuns (2006-07-05 16:44:00) [20]>Johnmen © (05.07.06 16:26) [3]
>Серёга, ты что в F1 не смотришь? Там и пример есть...
Я не только F1, я весь бол перерыл и мсдн
Подскажи, будь любезен, где эту "кляту" ф1 надо нажать, на каком компоненте ?