Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

Открыть новую тему     Написать ответ в эту тему

data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаем новые возможности и баги
Просьба писать только про Delphi 2009 и выше - по остальным версиям есть соответствующая тема.
Вопросы вареза здесь не обсуждаются !!!
См. также:
Известные важные баги Delphi 2010:

Описание________________________________________________ Исправлено Решение/Альтернатива_____________________
  1. Внимание !  Деинсталляция D2010 нарушает работу D2007 и D2009 !  
При деинсталляции удаляются CC3280MT.DLL и CC3290MT.DLL из Windows\System32,   необходимые для работы D2007 и D2009 соответственно.
Сделайте резервные копии
  2. Code Formatter не работает, если не инсталлирован пакет моделирования.   В нем также присутствует множество багов. Используйте с осторожностью.   1.   JEDI CodeFormat 2.44 SVN Snapshot (~750Kb)   Требуются JCL и JVCL  
2.GExperts with Formatter
  3. Не работает F1 в Object Inspector Update 2   IDEFixPack 2.9 от Andreas Hausladen
(dev. snapshots)
  4. Если IDE начинает падать с сообщением "Out of resources", возможно, что поврежден .res файл проекта. Удалить его, запустить IDE, открыть проект - новый .res файл будет создан автоматически.
  5. В редакторе не работает Class Completion, если в декларируемом классе есть поля с шаблонами. Перед декларированием поля добавить public или private и т.д.
  6. TTrayIcon.ShowBalloonHint() не работает на ОС ниже Vista [QC 77561] Update 2 * Установить Update 2   * ИЛИ почитать о причинах и решении проблемы на форуме embarcadero и в QC   * ИЛИ воспользоваться альтернативой, например Cooltray 4.4.0
  ...      


Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 14:28 26-08-2009 | Исправлено: data man, 18:27 06-08-2010
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Подскажите можон ли для инструмента Extract Resource String в Refactoring меню установвить свой хоткей?
 
Добавлено:
Подскажите можно ли для инструмента "Extract Resource String" в "Refactoring" меню установить свой хоткей?

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 14:24 09-05-2012
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tanaseduard
С помощью cnWizards вроде можно.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 14:46 09-05-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Данные организованы следующим образом:
IBCStoredProcedure1->DataSetProvider1->ClientDataSet1
IBCStoredProcedure2->DataSetProvider2->ClientDataSet2
IBCStoredProcedure2->DataSetProvider2->ClientDataSet3
IBCStoredProcedure3->DataSetProvider3->ClientDataSet4
 
IBCStoredProcedure2 и DataSetProvider2 в обоих случаях одно и тоже. Нужны для создания независимых курсоров на IBCStoredProcedure2.
 
ClientDataSet1 имеет вычисляемые поля зависящие от полей данных в ClientDataSet2 и ClientDataSet4. Как обновить (пересчитать) эти вычисляемые поля? ClientDataSet1.Refresh не обновляет, ClientDataSet1.Close ClientDataSet1.Open обновляет, но при этом дёрнет ли IBCStoredProcedure1 (т.е. будет ли запрос к СУБД)?
Если будет, то как избежать обращения к серверу для обновления вычисляемых полей?

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 17:25 09-05-2012 | Исправлено: AlexCoRu, 21:01 09-05-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
AutoCalcFields попробуйте

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 20:23 09-05-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Изменил своё предыдущее сообщение. Дополнил схему. Вообще-то я правильно делаю используя ClientDataSet, что бы один и тот же датасет IBCStoredProcedure2 в разных гридах отображать независимо?
 
ant0ni02004, т.е AutoCalcFields := True? Оно везде True.
 
Вобщем-то вычисляемые поля фактически lookup-поля, только lookup многошаговый, такой релейшн:
ClientDataSet1-[ClientDataSet1.ID]->ClientDataSet2-[ClientDataSet2.ID]->ClientDataSet4
ClientDataSet1.CalcField1 есть соответствующее ClientDataSet2.DataField и
ClientDataSet1.CalcField2 есть соответствующее ClientDataSet4.DataField
При изменении ClientDataSet1.ID ClientDataSet1.CalcField1 и ClientDataSet1.CalcField2 принимают новые значения и это радует. Но при изменении ClientDataSet2.ID - нет. Вроде, так понятней должно быть?
Не хочется дёргать сервер, если все данные уже есть в памяти.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 21:19 09-05-2012
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
Так какого именно типа у вас поля? Lookup, calculated, internalcalc?

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 12:36 10-05-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Calculated. В обработчике OnCalcFields вызывается метод Lookup.
Фрагмент кода

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 12:52 10-05-2012
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
Пересчет Calculated поля происходит при каждом чтении его значения. Если у вас изменились данные в ClientDataSet2, то вам надо заставить обновится дб-контрол, привязаный к ClientDataSet1.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 13:07 10-05-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Контрол это TcxGridDBTableView. Осталось додуматься как заставить обновиться конкретную колонку TcxGridColumn.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 13:28 10-05-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
сделать
Код:
AutoCalcfields:=false;AutoCalcfields:=true;

как вариант - сделать grid.repaint чтобы поперезапрашивал данные, если только в кеше у него не хранятся

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 16:43 10-05-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ant0ni02004
Как обновить колонку не нашёл, но всю вьюху вполне можно и довольно-таки быстро:
TableView.DataController.UpdateItems(False);

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 17:10 11-05-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как заставить ClientDataSet получать, возращаемое провайдерским DataSet, значение?
IBCStoredProcedure1->DataSetProvider1->ClientDataSet1
IBCStoredProcedure1.SQLInsert := 'EXECUTE PROCEDURE EQUIP_CLASS_INSERT(:DESCRIPTION)';
Хранимая процедура EQUIP_CLASS_INSERT на firebirde
Значение IBCStoredProcedure1.SQLInsert в однозвённом соединении возвращается, а так нет.
 
Output-параметр создаётся в обработчике IBCStoredProcedure1.BeforeUpdateExecute.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 11:45 12-05-2012 | Исправлено: AlexCoRu, 11:51 12-05-2012
Coltrain

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
IBCStoredProcedure1 - это из IBDAC?
Каким событием со стороны ClientDataSet1 активизируется вызов хранимой процедуры IBCStoredProcedure1.SQLInsert? По Open? Или по Insert?
Скорее всего, по Insert. И надо вернуть сгенерированный идентификатор. Плохо себе представляю логику работы компоненты IBCStoredProcedure1 при вставке, но после вставки получает ли датасет IBCStoredProcedure1 значение идентификатора ID? И если да, то где он его сохраняет - в Params, или сам "догадывается" подставить в нужный Field?
Короче, работает ли корректно сам IBCStoredProcedure1 без дальнейшей цепочки ->DataSetProvider1->ClientDataSet1? А то есть сомнения.
Если IBCStoredProcedure1 нормально отрабатывает и получает результат, то вызов ClientDataSet1->Refresh должен решить проблему.
Не совсем понятна необходимость
Цитата:
Output-параметр создаётся в обработчике IBCStoredProcedure1.BeforeUpdateExecute.

"Знает" ли про этот параметр ClientDataSet1? А при повторной вставке он что, опять создается? O_o

Всего записей: 160 | Зарегистр. 31-07-2002 | Отправлено: 17:26 16-05-2012
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как сохранить/выгрузить форму из бд? шаблоны excel хранятся в бд, хочу чтобы при выборе отчета, грузилась форма для выбора параметров отчета.

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 09:48 09-06-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
хранить форму в БД это будет слишком... да и зачем?  
другое дело - хранить параметры, т.е. значения полей формы - вот тут есть где разбежаться
ведь задача скорее всего в этом
З.Ы.
при большом желании, конечно можна с сериализацией поиграться, статьи есть в нете

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 22:16 09-06-2012
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
Посмотрите в сторону WriteComponent / ReadComponent.
Не так просто с обработчиками событий, если они нужны, но решаемо.
Если исключительно для параметров отчета, можно бы попробовать TValueListEditor - одна форма и разные параметры ввода при необходимости.

----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 11:53 10-06-2012
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ant0ni02004

Цитата:
neznayka3  
 
 если есть возможность отказаться от lookup-полей (т.е. получать значения прямо в SQL)- то отказываемся от lookup-ов, а форму выбора/редатирования из справочника делаем настраиваемой (таблица, названия полей итд)  
   
 если нет, тогда есть вариант создавать все справочники динамически, и динамически же назначать лукапы (в IDE оставляем пустыми LookupDataSet, в коде проставляем перед открытием)  
   
Цитата: Может быть визуальное наследование форм поможет?  
 
 поможет примерно так - вместо дофига TDataSet будет дофига TForm  
 да и вопрос с lookup-ами не снимает

1) Поддерживаю отказ от lookup-полей - если в гриде более 5 lookup-полей, начинаются ощутимые тормоза.
Вместо этого использую вычисляемые поля или тоже запрашиваю через SQL. Правда, гриды у меня нередактируемые напрямую, только через форму
2) в динамическом назначении лукапов ничего страшного нет - там же строчек пять кода, зато надежно и практично
3) для справочников использую визуальное наследование от общей формы-справочника, которая умеет практически все операции (печать, поиск и т.п.). На редактирование привязываю специфичные формы, если есть такая необходиость.
Да, форм много получается, создаются они простым копированием и переименованием файлов, зато если клиент захочет вот для этого справочника такие-то рюшики, общая система не обрастает костылями - все правки только в этой специфичной форме сосредоточены.
Да и какая проблема, что форм много... большой проект все равно тысячи файлов содержит, десятком больше...

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 09:29 16-06-2012
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
При желании моджно не только форму, но и скрипт для какого-нибудь PascalScript туда впихнуть.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 15:52 16-06-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
братцы, проверьте список, начиная с Д2009
 
VER200 -- Delphi 2009
VER210 -- Delphi 2010
VER220 -- Delphi 2011
VER230 -- Delphi 2012
 
так?

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 17:48 19-06-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
VER220 = Delphi XE
VER230 = Delphi XE2

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 20:57 19-06-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru