Форум: "Базы";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизКак определить конец множества RecordSet - ов Найти похожие ветки
← →
MsGuns © (2006-07-05 15:12) [0]Я использую метод NextRecordset (компонеты ADO), как определить что множество RecordSet - ов закончилось? У меня почемуто приложение вылетает гдето на 5,6-ом использовании метода NextRecordset, говорит мол "Can not open Recordset", хотя наборы данных еще в результате запроса есть.
← →
Fay © (2006-07-05 15:54) [1]Проверка на
MyCoolADODataSet._Recordset.NextRecordset = nil
не ку? Я сам не проверял, но вроде Nextrecordset - функция...
← →
MsGuns © (2006-07-05 16:19) [2]Дело немного не в этом..
Во время сканирования 5-го рекордсета (который ессно, не нил), возникает эта ошибка. Причем до EOF дело явно не доходит, да и есть еще 6-й, 7-й и т .д. рекордсеты
← →
Johnmen © (2006-07-05 16:26) [3]Серёга, ты что в F1 не смотришь? Там и пример есть...
← →
MsGuns © (2006-07-05 16:44) [4]>Johnmen © (05.07.06 16:26) [3]
>Серёга, ты что в F1 не смотришь? Там и пример есть...
Я не только F1, я весь бол перерыл и мсдн
Подскажи, будь любезен, где эту "кляту" ф1 надо нажать, на каком компоненте ?
← →
Johnmen © (2006-07-05 17:07) [5]
> MsGuns © (05.07.06 16:44) [4]
На NextRecordset естественно :)
← →
sniknik © (2006-07-05 19:59) [6]> "Can not open Recordset"
SET NOCOUNT ON
в начале блока команд, чтобы не было "пустышек", или не пытатся из таких данные читать.
← →
Fay © (2006-07-05 22:32) [7]2 sniknik © (05.07.06 19:59) [6]
> SET NOCOUNT ON
> в начале блока команд, чтобы не было "пустышек",
Гарантию не даёт
← →
MsGuns © (2006-07-06 13:15) [8]>Johnmen © (05.07.06 17:07) [5]
>На NextRecordset естественно :)
Жень, обижаешь ;)
>sniknik © (05.07.06 19:59) [6]
>SET NOCOUNT ON
Не помогает ;(
← →
sniknik © (2006-07-06 13:28) [9]> Не помогает ;(
ну значит у тебя именно тот случай в котором оно
> Гарантию не даёт
потому как действительно не дает... т.к. оно "локального" действия.
но есть же еще "или"
> ... или не пытатся из таких данные читать.
← →
Johnmen © (2006-07-06 13:30) [10]
> MsGuns © (06.07.06 13:15) [8]
Ну как же так???
А-а-а... Понятно! Посмотрел я.
И ты выбирай хелп по TSQLStoredProc.NextRecordSet, а не по TCustomADODataSet. Там есть Example. Принцип тот же...
← →
MsGuns © (2006-07-06 14:00) [11]>sniknik © (06.07.06 13:28) [9]
>но есть же еще "или"
>> ... или не пытатся из таких данные читать.
Дело в том, что надо написать универсальную фунцию в Делфи, возвращающую метаданные MS SQL Server любого типа. Функция получает на входе тип требуемых метаданных (структуру таблицы, списка таблиц, списка ХП, ПК и вообще чего угодно), запрашивает их у указанного сервера (БД) и возвращает в виде списка указателей на структуры соотв. типа. Такая фича у мсскл есть - sp_help. Она возвращает практически любые данные, но пихает все это в разные рекордсеты, количсетво которых может превышать десяток.
>Johnmen © (06.07.06 13:30) [10]
>А-а-а... Понятно! Посмотрел я.
И ты выбирай хелп по TSQLStoredProc.NextRecordSet
Кгхмм.. Блин, вот сюда я точно не смотрел. Ибо по совету своего учителя и гуру ( ;) ) sniknik ©`а не использую ее в принципе..
Щас гляну ! Спасибо в любом случае
← →
Fay © (2006-07-06 14:35) [12]2 sniknik © (06.07.06 13:28) [9]
> потому как действительно не дает... т.к. оно "локального" действия.
Empty recordset можно получитьт разными способами. Если мне не изменяет склероз, print даёт такой recordset..
← →
sniknik © (2006-07-06 14:36) [13]> Ибо по совету своего учителя и гуру ( ;) ) 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 даст вышеуказанную ошибку).
← →
sniknik © (2006-07-06 14:37) [14]> Если мне не изменяет склероз, print даёт такой recordset..
да, т.к. возвращает ошибку...
← →
MsGuns © (2006-07-06 14:40) [15]>применительно к 1 записям. (no recordset) (N)
>применительно к 3 записям (N+1)
Как "перепрыгнуть" через N и получить доступ к N+1 ?
← →
sniknik © (2006-07-06 14:49) [16]> Как "перепрыгнуть" через 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; //девятый смотрим
← →
Zz_ (2006-07-06 15:11) [17]В качестве просто примера ...
http://www.sql.ru/forum/actualthread.aspx?tid=289444#2629273
← →
имя (2006-07-06 15:18) [18]Удалено модератором
Примечание: хочеш участвовать смени имя, падонковщина на сайте запрещена в любом проявлении... в потрепатся оно еще пройдет, но не в серьезных ветках
← →
MsGuns © (2006-07-06 17:01) [19]>sniknik © (06.07.06 14:49) [16]
>for i:= 1 to 7 do
Recordset:= Recordset.NextRecordset; //восьмой
Ошибка та же ;(((
← →
sniknik © (2006-07-06 17:32) [20]> Ошибка та же ;(((
я ошибся в подсчетах и ты попал на "пустышку"?
я то все получил (в [13] примеры откуда по твоему?). у тебя есть моя прога TestMdb, высылал(вредебы, не помню)? проверь в ней, может у тебя не то количество возвращается... (или на других местах)
← →
другое имя (2006-07-06 17:51) [21]Удалено модератором
Примечание: личные претензии письмом.
← →
Fay © (2006-07-06 19:34) [22]Удалено модератором
Примечание: аналогично
← →
хочеш (2006-07-08 19:36) [23]Удалено модератором
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.038 c