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

Вниз

Открыть все ДатаСеты......   Найти похожие ветки 

 
K_Lock ©   (2006-08-12 15:32) [0]

Добрый день.
В какой-то теме это уже было, но я ее потерял. :-(

У меня есть 15 ДатаСетов, как открыть их все попроще. А то писать для каждого ДатаСет.Опен - черезчур.

Заранее спасибо.


 
Мефисто   (2006-08-12 15:45) [1]

Что-то типа такого:

For I := 0 to Form.ComponentCounnt - 1 do
 if Form.Components[I] is TDataSet then
   TDataSet(Form.Components[I]).Open;


 
K_Lock ©   (2006-08-13 00:40) [2]

Объясните пожалуйста:

For I := 0 to DModule.ComponentCount - 1 do
  begin
    if (DModule.Components[I] is TpFIBDataSet) then TpFIBDataSet(DModule.Components[I]).Open;
  end;
showMessage ("intToStr(i));


Почему после выполнения, I = 211, если у меня всего 13 ДатаСетов????
Может я чего неправильно в цикле указал???


 
Loginov Dmitry ©   (2006-08-13 00:46) [3]

Ошибка в строке

> showMessage ("intToStr(i));


Нельзя использовать переменную цикла после выполнения цикла.

Вообще в чем проблема? ДатаСеты не все открываются?


 
K_Lock ©   (2006-08-13 00:57) [4]

Да открываются то все.
Просто интересно - почему 211, а не 13.

Получается, что не только датасет открывается, но и каждый Field который в нем прописан :), так что-ли?


 
Ketmar ©   (2006-08-13 01:05) [5]

> [4] K_Lock ©   (13.08.06 00:57)
полусается незнание матчасти и нежелание читать справку. в [3] уже пояснили. после цикла i может иметь какое угодно значение, особенно если включена оптимизация. и вообще, об этом честно предпреждает компилятор. впредь советую читать то, что он пишет -- можно много интересных вещей узнать. и ошибок делать поменьше.


 
K_Lock ©   (2006-08-13 01:10) [6]

Спасибо.


 
!_SM_!   (2006-08-13 04:56) [7]

> [4] K_Lock ©   (13.08.06 00:57)
> Да открываются то все.
> Просто интересно - почему 211, а не 13.

> For I := 0 to DModule.ComponentCount - 1 do

Сколько компанентов на DataModule?

> Получается, что не только датасет открывается, но и каждый
> Field который в нем прописан :), так что-ли?

>if (DModule.Components[I] is TpFIBDataSet) then
Если не is тогда ничего не откроется

> [3] Loginov Dmitry ©   (13.08.06 00:46)

Почему это ее нельзя использовать? Можно...
Например для следующего цикла....
А ShowMessage (IntToStr(i));
покажет конечное значение счетчика.


 
Anatoly Podgoretsky ©   (2006-08-13 09:06) [8]

!_SM_!   (13.08.06 04:56) [7]
Читать справку, использовать конечно можно что угодно, хоть Random(температура на марсе), но к покажет имеет к реальности нереальное отношение, может повезет, а может нет.


 
!_SM_!   (2006-08-13 20:07) [9]

> [8] Anatoly Podgoretsky ©   (13.08.06 09:06)

Согласен, но если цикл выполниться хоть раз и сраза за циклом ShowMessage (IntToStr(i)); Не разу не подводил помоему.... может и не так. Сам так пользуюсь иногда. Если бы хоть раз закосячило, не писал бы....


 
Virgo_Style ©   (2006-08-13 20:12) [10]

!_SM_!   (13.08.06 20:07) [9]

В том-то и самое интересное - никогда не знаешь, когда оно "закосячит" - т.е. сработает не так, как хочется, а так, как написано.


 
Мефисто   (2006-08-13 20:51) [11]


> !_SM_!   (13.08.06 20:07) [9]


Хочешь переспорить всех форумчан?
Ню-ню... :)))


 
Anatoly Podgoretsky ©   (2006-08-13 20:54) [12]

А может он в рулетку хочет поиграть.


 
Mike Kouzmine ©   (2006-08-13 21:36) [13]

Не знаю, как там, но сразу после выполнения цикла в переменной, лежит то, что надо.

for i:=0 to 10 do inc(i); result:=i;
for result:=0 to 10 inc(result); Одинаково было нп Д6.

А разница как раз за счет "левых компанентов"


 
K_Lock ©   (2006-08-13 22:58) [14]

> А разница как раз за счет "левых компанентов"


В смысле "Левых" ? Нормальные "компаненты", не крякнутые не триальные. Все по честному.
----------
Пробовал Show message вставлять в тело цикла - тож самое, ShowMessage выскакивает ровно 211 раз. :(


 
!_SM_!   (2006-08-14 00:09) [15]

> [14] K_Lock ©   (13.08.06 22:58)
> > А разница как раз за счет "левых компанентов"
>
>
> В смысле "Левых" ? Нормальные "компаненты", не крякнутые
> не триальные. Все по честному.
> ----------
> Пробовал Show message вставлять в тело цикла - тож самое,
> ShowMessage выскакивает ровно 211 раз. :(

[7] !_SM_!   (13.08.06 04:56)
>if (DModule.Components[I] is TpFIBDataSet) then
Если не is тогда ничего не откроется

Оператор Is возвращает True если левый операнд принадлежит типу правого опреранда. У тебя при проверки пролетают все кто не TpFIBDataSet
а счетчик крутится.


 
Германн ©   (2006-08-14 00:16) [16]


> Mike Kouzmine ©   (13.08.06 21:36) [13]
>
> Не знаю, как там, но сразу после выполнения цикла в переменной,
>  лежит то, что надо.
>
> for i:=0 to 10 do inc(i); result:=i;
> for result:=0 to 10 inc(result); Одинаково было нп Д6.

Ну АП уже всё сказал - рулетка. Сегодня повезло. Завтра нет.


 
!_SM_!   (2006-08-14 00:18) [17]

> [11] Мефисто   (13.08.06 20:51)


> [10] Virgo_Style ©   (13.08.06 20:12)

Да я и не говорю что так надо делать, или так правильно... Я сказал только то, что сказал...
Вот...

> [13] Mike Kouzmine ©   (13.08.06 21:36)
> Не знаю, как там, но сразу после выполнения цикла в переменной,
> лежит то, что надо.
>
> for i:=0 to 10 do inc(i);

Так нельзя:
[Error] UFsWorld.pas(228): Assignment to FOR-Loop variable "i"
А вот так
for i:=0 to 5 do;
ShowMessage(IntToStr(i));
Покажет 6.
Но и так делать тоже не рекомендуется :)


 
K_Lock ©   (2006-08-14 00:35) [18]

> Оператор Is возвращает True если левый операнд принадлежит
> типу правого опреранда. У тебя при проверки пролетают все
> кто не TpFIBDataSet
> а счетчик крутится.


Все. Въехал. Просто до этого тормознул чето :)

Спасибо, что разъяснили.


 
MsGuns ©   (2006-08-14 13:31) [19]

Вопрос с галерки: зачем иметь 13 открытых датасетов одновременно ?


 
Ega23 ©   (2006-08-14 13:40) [20]


> Вопрос с галерки: зачем иметь 13 открытых датасетов одновременно
> ?


13 TDBLookupCombo с параметрами фильтрации - why not?



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

Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.039 c
3-1146930148
parovoZZ
2006-05-06 19:42
2006.09.03
Кодировка таблиц


9-1126905842
rsy
2005-09-17 01:24
2006.09.03
DirectX или OpenGL


2-1155664754
NikIta86
2006-08-15 21:59
2006.09.03
Как отловить завершение работы Windows в безоконном приложении?


15-1154764927
Belyakov
2006-08-05 12:02
2006.09.03
Дайте работу на 2-3$ :)


2-1155553476
ArtemESC
2006-08-14 15:04
2006.09.03
Как убрать Beep при Application.MessageBox...





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