![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проверить пуст ли датасет
1234567890 © (2011-11-24 15:21:00)как правильнее всего проверять есть ли в датасете записи, а то вариантов дофига:
1)
if DataSet.RecordCount = 0 then
//
2)
if DataSet.IsEmpty then
//
3)
if DataSet.Eof then
//
4) if DataSet.FindFirst then
//
Dennis I. Komarov (2011-11-24 21:19:00) [1]
> И. Павел © (24.11.11 20:29) [7]
Принято, но вопрос не тебе был...
И. Павел (2011-11-24 20:29:00) [2]
> А зачем?
Ну например чтобы задисейблить кнопки "Удалить запись" и "Редактировать запись" (открывающую отдельное окно, если запись есть).
Dennis I. Komarov (2011-11-24 20:22:00) [3]
> как правильнее всего проверять есть ли в датасете записи
А зачем?
Ega23 (2011-11-24 15:44:00) [4]1. RecordCount - штука не совсем надёжная, есть нюансы.
2. Правильный православный метод.
3.
DataSet.Open;
DataSet.Last;
if DataSet.Eof then
ShowMessage('Eof')
else
ShowMessage('not Eof');
4. Вообще ни разу не пользовал. По-моему, это вообще из другой оперы.
OW (2011-11-24 15:44:00) [5]Видимо, пустой DS становится после
procedure TDataSet.ClearBuffers;
begin
FRecordCount := 0;
FActiveRecord := 0;
FCurrentRecord := -1;
FBOF := True;
FEOF := True;
end;
соответственно:
1)
RecordCount = 0
2)
function TDataSet.IsEmpty: Boolean;
begin
Result := FActiveRecord >= FRecordCount;
end;
3)
FBOF = FEOF = True;
вроде, все правильные
4) - вроде, правильно тоже, но дольше, не очевидно.
Сам тоже люблю IsEmpty
> т.к. читабельнее.
> 1. RecordCount может быть равен —1.
но не 0 :)
Anatoly Podgoretsky (2011-11-24 15:35:00) [6]> 1234567890 (24.11.2011 15:21:00) [0]
2.
1234567890 (2011-11-24 15:28:00) [7]
> А через FindFirst как планируете определить, что датасет
> содержит пустую выборку?
если в таблице есть хотя бы одна запись, то findfirst вернет true, если записей в датасете нет - false.
И. Павел (2011-11-24 15:26:00) [8]1. RecordCount может быть равен 1.
2. Я делаю 2 вариант, т.к. читабельнее.
3. В этом варианте нужно проверять еще и bof. Запутаннее чем 2 но можно применять и его
4. А через FindFirst как планируете определить, что датасет содержит пустую выборку?