Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перебор записей в датасете. [XP]


Страницы:   1 2 3

AndreyBg ©   (2008-09-24 11:03:00) 

Что-то туплю я...
Вот это  работает (перебирает в прямом порядке)
  DataSet.First;
 while not DataSet.bofdo
 begin
    // Что-то делаем ..
   DSetTestType. Prior;
 end;

а вот это соответственно нет O_o

 DataSet.First;
 while not DataSet.eof do
 begin
    // Что-то делаем ..
   DSetTestType.Next;
 end;

Сразу позиционируется на последнюю запись.
Использую FIBPlus.
В приложении множество датасетов и везде все работает нормально, а в одном вот такой косяк. Уже час медитирую на это, не пойму в чем дело. Все свойства датасета идентичны свойствам остальных датасетов.
Подскажите, pls, в чем может быть дело?


Dennis I. Komarov   (2008-09-25 09:21:00) [1]

ComboBox.Items.Clear;
DataSet.First;
 while not DataSet.Eof do
   begin
     ComboBox.Items.Add(DataSet.FieldByName('Name').AsString);
     DataSet.Next;
   end;

Чего тут велосипедного?


Anatoly Podgoretsky   (2008-09-24 14:46:00) [2]

Интересно доживет ли это до 100 сообщений?


MsGuns   (2008-09-24 14:44:00) [3]

>AndreyBg   (24.09.08 13:35) [35]
>Использую не задний проход

 Именно его и используешь :)


Сергей М.   (2008-09-24 14:01:00) [4]


> Palladin ©   (24.09.08 13:55) [40]


Значит все же шмомбик)


Сергей М.   (2008-09-24 13:59:00) [5]


> Сразу после DSetTestType.First; я оказываюсь на последней
> записи


Да что за глупости-то ?!

Убери всесвои циклы и комбики-шмомбики, оставь только DSetTestType.First.

После вызова этого метода в гриде видишь выделение где- в самом низу или в самом верху ?


Palladin   (2008-09-24 13:55:00) [6]


> Я в глаза не видел твой "комбик", но если он есть наследник
> TCustomComboBox

у него DevExpress'овский, скорее всего... он не наследник :)


Sergey13   (2008-09-24 13:52:00) [7]

> [36] AndreyBg   (24.09.08 13:42)

Монитор переверни.
Может стоит воспользоваться таки DBLookupComboBox-ом?


Сергей М.   (2008-09-24 13:51:00) [8]


> - в табличке отображается 8 строк


Тогда как объяснить [14] ?
Там ты почему-то умудрился загнуть всего один палец ..


> выделена последняя


Здесь ничего удивительного - ты прошелся прямым курсом по НД, активной при этом стала последняя запись, она и выглядит выделенной в гриде


> - в комбике одна запись последняя


А это ты уж со своим "комбиком" разбирайся - дейтасет тут ни причем, он исправно держит 8 записей.

Кстати, причем здесь вообще св-во properties ?

Я в глаза не видел твой "комбик", но если он есть наследник TCustomComboBox, то манипуляции с содержимым контролируемого им списка строк осуществляется через св-во Items


{RASkov}   (2008-09-24 13:43:00) [9]

> AndreyBg

Хватит голову морочить


AndreyBg   (2008-09-24 13:42:00) [10]

А вообще все даже интереснее.
Сразу после DSetTestType.First;я оказываюсь на последней записи.


AndreyBg   (2008-09-24 13:35:00) [11]

Попробую последний раз пояснить проблему.
Использую не задний проход, комбик предварительно очищен, дополнительно на форму кинута таблица  для наглядного представления данных, присоединенная к тому же датасету.
Рез-т:
- в комбике одна запись последняя.
- в табличке отображается 8 строк, выделена последняя.
 
DSetTestType.CloseOpen(true);
 FrmTemplateAdd.cbTestType.Properties.Items.Clear;
 DSetTestType.First;
 while not DSetTestType.eof do
 begin
   BoardTemplateTest := TComboObject.Create(DSetTestType.FBN('id_otkttype').AsInteger, DSetTestType.FBN('name').AsString );
   FrmTemplateAdd.cbTestType.Properties.Items.AddObject(BoardTemplateTest.Get_Name,  BoardTemplateTest);
   DSetTestType.Next;
 end;


Сергей М.   (2008-09-24 13:21:00) [12]


> Поросенок Винни-Пух ©   (24.09.08 13:19) [32]


А и точно) .. "чуваки" - сплошные Андреи, аж глаза разбегаются)


Поросенок Винни-Пух   (2008-09-24 13:21:00) [13]

исходный код как утверждает сказочник такой

> [25] AndreyBg   (24.09.08 12:53)
> DSetTestType.First;
> while not DSetTestType.bof do
> begin
>   DSetTestType.Prior;
> end;

и дает 8 записей.


Поросенок Винни-Пух   (2008-09-24 13:19:00) [14]

Вот это другой коленкор !)

Это не он. Это другой чувак советует ему исправить код.


Сергей М.   (2008-09-24 13:16:00) [15]


> DSetTestType.Last


Вот это другой коленкор !)

Но ведь тебе нужен прямое прохождение по НД, почему же ты встаешь на последнюю запись и движешься назад ?

И если ты делаешь это осознанно, называя это "прямым прозодом" (хотя как ни назови это "задний проход"), то почему тогда удивляешься, что НД позиционируеьтся сразу на последнюю запись ?


AndreyV   (2008-09-24 13:12:00) [16]

> [25] AndreyBg   (24.09.08 12:53)
> DSetTestType.First;
> while not DSetTestType.bof do
> begin
>   DSetTestType.Prior;
> end;


DSetTestType.Last


MsGuns   (2008-09-24 13:09:00) [17]

Попробуйте предварительно очистить FrmTemplateAdd.cbTestType и посмотрите что получится в результате Вашего "прохода" (так и напрашивается прилагательное "заднего")


Сергей М.   (2008-09-24 13:02:00) [18]


> сам понимаю, что это бред


Зачем же тогда писать, если это заведомо бред ?

В [1] дан шаблон правильно прямого прохода по НД, вот его и пользуй.

И комбик твой, кем бы он ни был, тут никому не интересен - сначала нужно реализовать правильную логику навигации по НД, а уж потом заморачиваться ранными там комбиками-шмомбиками.

Если код [1] показывает всего одну итерацию цикла, то верь глазам своим - в твоем НД действительно всего одна запись.


Поросенок Винни-Пух   (2008-09-24 13:01:00) [19]

DSetTestType.First;
while not DSetTestType.bof do
begin
 ...
  DSetTestType.Prior;
end;

8 записей говоришь? Сказочник комнатный.


AndreyBg   (2008-09-24 12:56:00) [20]


> MsGuns ©   (24.09.08 12:52) [24]
> >AndreyBg   (24.09.08 11:45) [10]Это же надо так писать
> ! Вам, господин хороший, надо в хирурги. Гланды через анал
> вырезать. Фашистам.

Ну так поясните чем же вам не нравиться мой код более конкретно.
Попусту стебать много ума не надо.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо