Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
ВнизПеребор записей в датасете. Найти похожие ветки
← →
AndreyBg (2008-09-24 11:03) [0]Что-то туплю я...
Вот это работает (перебирает в прямом порядке)DataSet.First;
while not DataSet.bof do
begin
// Что-то делаем ..
DSetTestType.Prior;
end;
а вот это соответственно нет O_o
DataSet.First;
while not DataSet.eof do
begin
// Что-то делаем ..
DSetTestType.Next;
end;
Сразу позиционируется на последнюю запись.
Использую FIBPlus.
В приложении множество датасетов и везде все работает нормально, а в одном вот такой косяк. Уже час медитирую на это, не пойму в чем дело. Все свойства датасета идентичны свойствам остальных датасетов.
Подскажите, pls, в чем может быть дело?
← →
Поросенок Винни-Пух © (2008-09-24 11:07) [1]DataSet.First;
while not DataSet.eof do
begin
// Что-то делаем ..
DSetTestType.Next;
end;
← →
AndreyBg (2008-09-24 11:16) [2]неа, это я ошибся когда тут уже правил название датасетов. В коде все правильно написанно.
← →
Правильный$Вася (2008-09-24 11:16) [3]
> Вот это работает (перебирает в прямом порядке)
> DataSet.First; while not DataSet.bof do
не верю!
← →
{RASkov} © (2008-09-24 11:17) [4]> [0] AndreyBg (24.09.08 11:03)
> Вот это работает (перебирает в прямом порядке)
> DataSet.First;
> while not DataSet.bof do
> begin
> // Что-то делаем ..
> DSetTestType.Prior;
> end;
Эх и обманщик... :)
Курсор Датасета установить в самое начало затем в цикле даже другой датасет ни разу не успевает перейти на предыдущую запись так как условия цикла выполнены....
А во втором способе.... Ну конечно нет. Тут вообще "висяк" :) Кстати второй способ более правильный, чем первый, но второй датасет все портит...
← →
{RASkov} © (2008-09-24 11:17) [5]> [2] AndreyBg (24.09.08 11:16)
Врешь)
← →
Поросенок Винни-Пух © (2008-09-24 11:18) [6]В коде все правильно написанно.
Тогда зачем вопрос про ошибку?
← →
Сергей М. © (2008-09-24 11:29) [7]
> В коде все правильно написанно
> Сразу позиционируется на последнюю запись
И где в этом "правильном" коде позиционирование на последнюю запись ?
На первую вижу - First, а где на последнюю ?
← →
clickmaker © (2008-09-24 11:30) [8]все это похоже на какую-то разводку...
← →
Правильный$Вася (2008-09-24 11:43) [9]
> // Что-то делаем ..
в этом черном ящике может быть что угодно, не только перепозиционирование
← →
AndreyBg (2008-09-24 11:45) [10]Блин, ну разводка так разводка.... делать мне больше нечего.
Вот оригинальный текст:DSetTestType.CloseOpen(true);
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;
cbTestType - это комбик.
В таблице всего 8 записей. В комбик попадает только последняя. пробовал выводить эти записи в текстовый файл в этом же цикле. Ситуация аналогичная - выводится только последняя.
← →
Поросенок Винни-Пух © (2008-09-24 11:48) [11]выводится только последняя.
и с чего ты вдруг решил что трабл в перечислении датасета?
← →
Поросенок Винни-Пух © (2008-09-24 11:50) [12]DSetTestType.CloseOpen(true);
DSetTestType.First;
while not DSetTestType.eof do
begin
ShowMessage("Считай записи, загибая пальцы");
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 12:01) [13]
> TComboObject
что это?
← →
AndreyBg (2008-09-24 12:03) [14]Насчитал ОДНУ!
FetchAll в настройка датасета равен true.
← →
Поросенок Винни-Пух © (2008-09-24 12:03) [15]Интереснее что вот это
cbTestType.Properties.Items
← →
Поросенок Винни-Пух © (2008-09-24 12:04) [16]Насчитал ОДНУ!
FetchAll в настройка датасета равен true.
Значит все верно.
← →
Поросенок Винни-Пух © (2008-09-24 12:05) [17]В таблице всего 8 записей.
А запрос вернул одну.
← →
Сергей М. © (2008-09-24 12:06) [18]
> cbTestType - это комбик
TComboBox что ли ?
А что такое cbTestType.Properties ? У стандартного "комбика" нет такого св-ва ..
← →
Johnmen © (2008-09-24 12:06) [19]
> FetchAll в настройка датасета равен true.
Это по-барабану...
← →
Поросенок Винни-Пух © (2008-09-24 12:07) [20]пропертиес уже по барабану.
у него все верно. в нд одна запись, которая и попадает в комбо.
← →
Сергей М. © (2008-09-24 12:09) [21]В общем как и всегда - начали за здравие, а продолжаем за упокой)
← →
Сергей М. © (2008-09-24 12:11) [22]
> Насчитал ОДНУ!
Страшно даже подумать о том, сколько а Автора пальцев оказалось)
← →
Anatoly Podgoretsky © (2008-09-24 12:45) [23]
> неа, это я ошибся
Тогда вопрос, а зачем нам обсуждать не тот код?
← →
MsGuns © (2008-09-24 12:52) [24]>AndreyBg (24.09.08 11:45) [10]
Это же надо так писать ! Вам, господин хороший, надо в хирурги. Гланды через анал вырезать. Фашистам.
← →
AndreyBg (2008-09-24 12:53) [25]Все посмеялись, молодцы.
В наборе 8 записей!!!! А в комбик или, как я уже писал выше, в текстовый файл попадает только одна последняя запись.
комбик не стандартный - cbTestType: TcxComboBox;
Напомню (поясню, для невнимательных) свой первый пост.DSetTestType.First;
while not DSetTestType.bof do
begin
BoardTemplateTest := TComboObject.Create(DSetTestType.FBN("id_otkttype").AsInteger, DSetTestType.FBN("name").AsString );
FrmTemplateAdd.cbTestType.Properties.Items.AddObject(BoardTemplateTest.Get_Name, BoardTemplateTest);
DSetTestType.Prior;
end;
Выдает все 8 записей в комбик!
Я сам понимаю, что это бред, но оно работает!
И как уже говорил, в программе подобных циклов полным полно(в том числе, которые заполняют аналогичные комбики) и только с этим датасетом наблюдаю такой глюк.
← →
AndreyBg (2008-09-24 12:56) [26]
> MsGuns © (24.09.08 12:52) [24]
> >AndreyBg (24.09.08 11:45) [10]Это же надо так писать
> ! Вам, господин хороший, надо в хирурги. Гланды через анал
> вырезать. Фашистам.
Ну так поясните чем же вам не нравиться мой код более конкретно.
Попусту стебать много ума не надо.
← →
Поросенок Винни-Пух © (2008-09-24 13:01) [27]DSetTestType.First;
while not DSetTestType.bof do
begin
...
DSetTestType.Prior;
end;
8 записей говоришь? Сказочник комнатный.
← →
Сергей М. © (2008-09-24 13:02) [28]
> сам понимаю, что это бред
Зачем же тогда писать, если это заведомо бред ?
В [1] дан шаблон правильно прямого прохода по НД, вот его и пользуй.
И комбик твой, кем бы он ни был, тут никому не интересен - сначала нужно реализовать правильную логику навигации по НД, а уж потом заморачиваться ранными там комбиками-шмомбиками.
Если код [1] показывает всего одну итерацию цикла, то верь глазам своим - в твоем НД действительно всего одна запись.
← →
MsGuns © (2008-09-24 13:09) [29]Попробуйте предварительно очистить FrmTemplateAdd.cbTestType и посмотрите что получится в результате Вашего "прохода" (так и напрашивается прилагательное "заднего")
← →
AndreyV © (2008-09-24 13:12) [30]> [25] AndreyBg (24.09.08 12:53)
> DSetTestType.First;
> while not DSetTestType.bof do
> begin
> DSetTestType.Prior;
> end;
DSetTestType.Last
← →
Сергей М. © (2008-09-24 13:16) [31]
> DSetTestType.Last
Вот это другой коленкор !)
Но ведь тебе нужен прямое прохождение по НД, почему же ты встаешь на последнюю запись и движешься назад ?
И если ты делаешь это осознанно, называя это "прямым прозодом" (хотя как ни назови это "задний проход"), то почему тогда удивляешься, что НД позиционируеьтся сразу на последнюю запись ?
← →
Поросенок Винни-Пух © (2008-09-24 13:19) [32]Вот это другой коленкор !)
Это не он. Это другой чувак советует ему исправить код.
← →
Поросенок Винни-Пух © (2008-09-24 13:21) [33]исходный код как утверждает сказочник такой
> [25] AndreyBg (24.09.08 12:53)
> DSetTestType.First;
> while not DSetTestType.bof do
> begin
> DSetTestType.Prior;
> end;
и дает 8 записей.
← →
Сергей М. © (2008-09-24 13:21) [34]
> Поросенок Винни-Пух © (24.09.08 13:19) [32]
А и точно) .. "чуваки" - сплошные Андреи, аж глаза разбегаются)
← →
AndreyBg (2008-09-24 13:35) [35]Попробую последний раз пояснить проблему.
Использую не задний проход, комбик предварительно очищен, дополнительно на форму кинута таблица для наглядного представления данных, присоединенная к тому же датасету.
Рез-т:
- в комбике одна запись последняя.
- в табличке отображается 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;
← →
AndreyBg (2008-09-24 13:42) [36]А вообще все даже интереснее.
Сразу послеDSetTestType.First;
я оказываюсь на последней записи.
← →
{RASkov} © (2008-09-24 13:43) [37]> AndreyBg
Хватит голову морочить
← →
Сергей М. © (2008-09-24 13:51) [38]
> - в табличке отображается 8 строк
Тогда как объяснить [14] ?
Там ты почему-то умудрился загнуть всего один палец ..
> выделена последняя
Здесь ничего удивительного - ты прошелся прямым курсом по НД, активной при этом стала последняя запись, она и выглядит выделенной в гриде
> - в комбике одна запись последняя
А это ты уж со своим "комбиком" разбирайся - дейтасет тут ни причем, он исправно держит 8 записей.
Кстати, причем здесь вообще св-во properties ?
Я в глаза не видел твой "комбик", но если он есть наследник TCustomComboBox, то манипуляции с содержимым контролируемого им списка строк осуществляется через св-во Items
← →
Sergey13 © (2008-09-24 13:52) [39]> [36] AndreyBg (24.09.08 13:42)
Монитор переверни.
Может стоит воспользоваться таки DBLookupComboBox-ом?
← →
Palladin © (2008-09-24 13:55) [40]
> Я в глаза не видел твой "комбик", но если он есть наследник
> TCustomComboBox
у него DevExpress"овский, скорее всего... он не наследник :)
← →
Сергей М. © (2008-09-24 13:59) [41]
> Сразу после DSetTestType.First; я оказываюсь на последней
> записи
Да что за глупости-то ?!
Убери все свои циклы и комбики-шмомбики, оставь только DSetTestType.First.
После вызова этого метода в гриде видишь выделение где - в самом низу или в самом верху ?
← →
Сергей М. © (2008-09-24 14:01) [42]
> Palladin © (24.09.08 13:55) [40]
Значит все же шмомбик)
← →
MsGuns © (2008-09-24 14:44) [43]>AndreyBg (24.09.08 13:35) [35]
>Использую не задний проход
Именно его и используешь :)
← →
Anatoly Podgoretsky © (2008-09-24 14:46) [44]Интересно доживет ли это до 100 сообщений?
← →
Dennis I. Komarov © (2008-09-25 09:21) [45]
ComboBox.Items.Clear;
DataSet.First;
while not DataSet.Eof do
begin
ComboBox.Items.Add(DataSet.FieldByName("Name").AsString);
DataSet.Next;
end;
Чего тут велосипедного?
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.007 c