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

Вниз

NextRecordset(RecordsAffected). Что возвращает RecordsAffected?   Найти похожие ветки 

 
Bless ©   (2004-11-08 12:34) [0]

Цитата из MSDN:
RecordsAffected
Optional. A Long variable to which the provider returns the number of records that the current operation affected.

Note   This parameter only returns the number of records affected by an operation; it does not return a count of records from a select statement used to generate the Recordset.

Объясните, плз, разницу между

number of  records affected by an operation

и

count of records from a select statement used to generate the Recordset

Разве в случае select-а это не одно и те же?

А то при ADODataSet1.commandtext равном "select * from t1 select * from t2"
после строчки ADODataSet1.NextRecordset(i) у меня всегда i=-1.

Что, параметр RecordsAffected всегда равен -1 для select и будет отличным от -1 только для команд типа insert, update?

И еще
про метод NextRecordset написано, что он
Clears the current Recordset object and returns the next Recordset by advancing through a series of commands.

Как понимать слова Clears the current Recordset object?


 
sniknik ©   (2004-11-08 12:57) [1]

а если не селект, если инсерт? RecordsAffected вернет количество записей над которыми совершениа операция но рекордсет будет пустой, вот тебе и <>.

> А то при ADODataSet1.commandtext равном "select * from t1 select * from t2"
> после строчки ADODataSet1.NextRecordset(i) у меня всегда i=-1.
возможно это непровильно работает (что именно ADODataSet оставляет (?), возможно именно второй рекордсет)
я в таких случаях пользуюсь, примерно таким  

ADOCommand1.CommandText:= "select * from t1 select * from t2";
ADODataSet1.Recordset:= ADOCommand1.Execute(RecordsAffected, EmptyParam);
ADODataSet1.NextRecordset(RecordsAffected);

(на самом деле с промежуточным переменной рекордсет, но и так должно сработать, а так попроще)

> Как понимать слова Clears the current Recordset object?
прямо, старый рекордсет очишается когда на его место следующий приходит, нигде не сохраняется (одна из причин пользоваться промежуточным).


 
Bless ©   (2004-11-08 14:14) [2]

>прямо, старый рекордсет очишается когда на его место следующий
>приходит, нигде не сохраняется

cmd.CommandText:="select * from t1 select * from t1 where 1=0";
ADODataSet1.Recordset:=cmd.execute(recordsAffected, EmptyParam);
showmessage(inttostr(AdoDataset1.RecordCount));
ADODataSet1.NextRecordset(recordsAffected);
showmessage(inttostr(AdoDataset1.RecordCount));

В приведенном фрагменте на экран выскакивают два message-а:3 и 3 (число записей в t1 = 3). Хотя, если бы старый рекордсет очищался, то вторым message-ем очевидно должен бы быть 0.
А вот если заменить
ADODataSet1.NextRecordset(recordsAffected);
на
adodataset1.Recordset:=ADODataSet1.NextRecordset(recordsAffected);
то действительно выскакивает 3 и 0.
То есть выходит, что вызов метода NextRecordset реально старый рекордсет не чистит? Или где я ошибаюсь?


 
sniknik ©   (2004-11-08 14:28) [3]

> То есть выходит, что вызов метода NextRecordset реально старый рекордсет не чистит? Или где я ошибаюсь?
выходит так... ;о) а ошибка (сам тоже недоглядел), это же функция! стоит посмотреть на исходную реализацию  

function TCustomADODataSet.NextRecordset(
 var RecordsAffected: Integer): _Recordset;
var
 VarRecsAffected: OleVariant;
begin
 CheckBrowseMode;
 Result := RecordSet.NextRecordSet(VarRecsAffected);
 RecordsAffected := VarRecsAffected;
end;


чтобы понять в чем ошибка (второй вызов у тебя правильный)


 
Bless ©   (2004-11-08 15:39) [4]

>выходит так... ;о)
Аж от сердца отлегло :) А то я думал, у меня что-то криво растет.
А просмотр исходной реализации функции не помогает понять, в чем ошибка, имхо. Ведь внутри все-равно вызывается функция интерфейса (или как  это правильно называется) RecordSet.NextRecordSet.
И это именно про него в MSDN написано
Clears the current Recordset object and returns the next Recordset by advancing through a series of commands.

Выходит, ошибка в MSDN.



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

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

Наверх




Память: 0.46 MB
Время: 0.06 c
14-1100675384
Dmitriy O.
2004-11-17 10:09
2004.12.05
Опрос Какую игру Вы преобрели за послений месяц ?


3-1099678933
Rgv54
2004-11-05 21:22
2004.12.05
Запуск приложения на клиенте


1-1100950490
Arnold
2004-11-20 14:34
2004.12.05
Ошибка при преобразовании числа


3-1099571118
Overstep
2004-11-04 15:25
2004.12.05
Filegroup с горизонтальным разрезом


1-1101164773
Dmitry_04
2004-11-23 02:06
2004.12.05
ShortCut в PopupMenu





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский