Главная страница
    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.04 c
1-1101285570
Erik1
2004-11-24 11:39
2004.12.05
Перекрытие невиртуальный процедуры?


1-1100889661
markers
2004-11-19 21:41
2004.12.05
Как вызвать процедуру находящуюся в переменной.


3-1099501529
Vova
2004-11-03 20:05
2004.12.05
Добавление записей в таблицу с несколькими одинаково заполнеными


4-1098443115
Rusty
2004-10-22 15:05
2004.12.05
Как отловить потерю фокуса компонентом?


4-1098528598
TeNY
2004-10-23 14:49
2004.12.05
Найти все окна принадлежышие процессу.





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