0 / 0 / 0
Регистрация: 27.03.2007
Сообщений: 37
|
||||||
1 | ||||||
Oracle DBGrid, обновление содержимого столбца07.11.2007, 10:51. Показов 9150. Ответов 10
Метки нет Все метки)
(
ОЧЕНЬ ПРОШУ ПОМОЧЬ РЕШИТЬ ПРОБЛЕМУ.
Есть запрос,состоящий из 2-х таблиц:
Я в форме в DBGrid меняю содержание столбца SUMOPL - при этом мне ОЧЕНЬ надо ,чтобы изменилось содержание солбца SUMDOLG. НО он не меняется.Если я закрою окно и по-новому войду в него,то все меняется верно! В ЧЕМ ДЕЛО? Я очень прошу,помогите,может кто-то сталкивался с такой проблемой. СУБД-ОРАКЛ,СВЯЗЬ-ADOQuery.
0
|
07.11.2007, 10:51 | |
07.11.2007, 10:51 | |
Ответы с готовыми решениями:
10
Обновление содержимого БД Вывод на печать содержимого stringrid или dbgrid |
Администратор
![]() 87030 / 52725 / 246
Регистрация: 10.04.2006
Сообщений: 13,568
|
|
07.11.2007, 11:24 | 2 |
![]() ![]()
0
|
Почетный модератор
![]() 8784 / 2537 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
07.11.2007, 12:03 | 3 |
ну просто надо произвести рефреш датасета, т.е. закрыть и открыть и все изменится, просто на событие onchange повесить, но есть проблема, при большом объеме данных будет лихо моргать твой пересчет
0
|
Администратор
![]() 87030 / 52725 / 246
Регистрация: 10.04.2006
Сообщений: 13,568
|
|
07.11.2007, 12:14 | 4 |
Кстати, насколько я помню, в датасете должны быть вычисляемые поля
![]()
0
|
Почетный модератор
![]() 8784 / 2537 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
07.11.2007, 12:18 | 5 |
они пересчитываются ли, при редактировании, просто dbgrid - это крайне смурной компонент в билдере, хотя вполне возможно, что это самое простое решение...
0
|
Администратор
![]() 87030 / 52725 / 246
Регистрация: 10.04.2006
Сообщений: 13,568
|
|
07.11.2007, 12:21 | 6 |
Так тогда можно избавиться от рассчета этого поля в запросе, а считать в вычисляемом поле.
0
|
Почетный модератор
![]() 8784 / 2537 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
07.11.2007, 12:27 | 7 |
на том и порешили... только я помню программно настраивал - в первый раз, пока не понимаешь, что куда и зачем, это проблема
0
|
0 / 0 / 0
Регистрация: 27.03.2007
Сообщений: 37
|
||||||
07.11.2007, 15:05 [ТС] | 8 | |||||
Вот то,что пересчитать?А в какое событие впихнуть ?
При изменении столбца SUMOPL в DBGrid никаких изменений не происходит сразу. Надо закрыть окно и войти в него по-новому-только тогда изменения можно увидеть. Вопрос: Событие OnChange() я не могу найти.Есть OnDataChange(),OnStateChange().
0
|
Почетный модератор
![]() 8784 / 2537 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
07.11.2007, 16:50 | 9 |
нет, эти события зараты в поля датасета, т.е. тебе на конкретном поле надо создать это событие... в хелпе поищи:
In TField события OnChange OnGetText OnSetText OnValidate
0
|
Гость
|
|||||||||||
08.11.2007, 10:36 | 10 | ||||||||||
Я не знаю как это сделать.
Если можно,помогите кодом. Еще делала так: Запрос в ф-ии FormActive() .Когда меняла значение суммі в столбце,то в событии AfterPost() я закрыла и открыла по-новому свой запрос.Все меняется очень хорошо.НО!!! При этом аврийно завершается программа-при обращении к ф-ии меню (видит всего-то 1 столбец! А их 9!).Если я закомментировала строку сменю (как в примере),то при этом заголовки столбцов(на русском) в DBGrid исчезли,появились-английские названия столбцов.Может Вы поможете мне написать ,т.е. вернуть (но как???) заголовки столбцов на русском. Пример:
|
Почетный модератор
![]() 8784 / 2537 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
08.11.2007, 13:32 | 11 |
погоди, а зачем тебе название столбцов в этом событии назначать, обычно это все делается в конструкторе, и желательно структуру в DBGrid там же указать, тогда не надо будет после открытия запроса заново именовать title колонок:
Код
//--------------------------------------------------------------------------- // Формирование отображения таблиц на экране void __fastcall TMainForm::SetField() { TColumn *Column; for(int i = 0; i < Query1->FieldCount; i++){ Struct->Add(SetTableField(Query1, Query1->Fields->Fields[i]->FieldName)); Struct->Fields[i]->DisplayLabel = GridInfo->Strings[i]; Column = DBGrid1->Columns->Add(); Column->Field = Struct->Fields[i]; Column->Alignment = taCenter; } Query1->Close(); for(int i = 0; i < Struct->Count; i++){ Struct->Fields[i]->DataSet = Query1; } DBGrid1->Columns->Items[9]->Visible = false; Query1->Open(); } TField* TMainForm::SetTableField(TQuery *Table, AnsiString FName) { TField *FField; switch(Table->FieldByName(FName)->DataType){ case ftString: FField = new TStringField(this); FField->FieldName = FName; FField->Size = Table->FieldByName(FName)->Size; break; case ftSmallint: FField = new TSmallintField(this); FField->FieldName = FName; break; case ftInteger: FField = new TIntegerField(this); FField->FieldName = FName; break; case ftWord: FField = new TWordField(this); FField->FieldName = FName; break; case ftFloat: FField = new TFloatField(this); FField->FieldName = FName; break; case ftCurrency: FField = new TCurrencyField(this); FField->FieldName = FName; break; case ftBCD: FField = new TBCDField(this); FField->FieldName = FName; FField->Size = Table->FieldByName(FName)->Size; break; case ftDate: FField = new TDateField(this); FField->FieldName = FName; break; case ftTime: FField = new TTimeField(this); FField->FieldName = FName; break; case ftDateTime: FField = new TDateTimeField(this); FField->FieldName = FName; break; case ftAutoInc: FField = new TAutoIncField(this); FField->FieldName = FName; break; case ftMemo: case ftFmtMemo: FField = new TMemoField(this); FField->FieldName = FName; break; case ftBoolean: FField = new TBooleanField(this); FField->FieldName = FName; break; case ftUnknown: break; case ftBytes: FField = new TBytesField(this); FField->FieldName = FName; break; case ftVarBytes: FField = new TVarBytesField(this); FField->FieldName = FName; break; case ftBlob: FField = new TBlobField(this); FField->FieldName = FName; break; case ftGraphic: FField = new TGraphicField(this); FField->FieldName = FName; break; case ftParadoxOle: break; case ftDBaseOle: break; case ftTypedBinary: break; case ftCursor: break; } return FField; } а в конструкторе: .... GridInfo = new TStringList(); GridInfo->Add("Статус"); GridInfo->Add("Код документа"); GridInfo->Add("Класс абонента"); GridInfo->Add("Телефон"); GridInfo->Add("Номер запроса"); GridInfo->Add("Регистрация запроса"); GridInfo->Add("Номер наряда"); GridInfo->Add("Регистрация наряда"); GridInfo->Add("Тип дома"); GridInfo->Add("ID"); SetField(); ....
0
|
08.11.2007, 13:32 | |
08.11.2007, 13:32 | |
Помогаю со студенческими работами здесь
11
Обновление данных в DBGrid Обновление данных в DBGrid Обновление данных в DBGrid Обновление данных в DBGrid Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Пользуясь нейросетью возвращаюсь к вопросу альтернативных приводов поступательного движения.
Hrethgir 14.02.2025
Описание тут https:/ / habr. com/ ru/ articles/ 778118/ .
Вопрос ответ
You
Привет. Скажи, есть-ли вещества, которые могут менять жидкое состояние на желеобразное под воздействием ультразвука?
. . .
|
Ошибка "Another git process seems to be running in this repository"
hw_wired 14.02.2025
При работе с git можно столкнуться с довольно раздражающей ошибкой "Another git process seems to be running in this repository". Эта ситуация возникает, когда система контроля версий пытается. . .
|
Ошибка "java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException"
hw_wired 14.02.2025
Как разработчики Java-приложений, мы сталкиваемся с разными ошибками, но одна из них - java. lang. NoClassDefFoundError: javax/ xml/ bind/ JAXBException - стала особенно актуальной после выхода Java 9. . . .
|
Отличия for-in от for-of в JavaScript
hw_wired 14.02.2025
Когда-то единственным способом перебора элементов массива или свойств объекта был классический цикл for с счетчиком. Да, он отлично справлялся с задачей, но код получался громоздким и не очень. . .
|
Отличия implementation, api и compile в Gradle
hw_wired 14.02.2025
Управление зависимостями - одна из ключевых задач при разработке современных приложений на Java и Kotlin. Система сборки Gradle предоставляет гибкие и мощные средства для работы с зависимостями,. . .
|
Что лучше: require или import/export в JavaScript
hw_wired 14.02.2025
Модульность в JavaScript прошла долгий путь эволюции, и сегодня у разработчиков есть два основных способа организации модулей: старый добрый require из системы CommonJS и современные import/ export из. . .
|
Ошибка "Uncaught SyntaxError: Cannot use import statement outside a module"
hw_wired 14.02.2025
Думаю, многие разработчики сталкивались с ошибкой "Uncaught SyntaxError: Cannot use import statement outside a module" при попытке использовать современный синтаксис импорта в JavaScript. Эта. . .
|
Ошибка Docker "Got permission denied while trying to connect to the Docker daemon socket at"
hw_wired 14.02.2025
Разработка с использованием Docker может иногда преподносить неожиданные сюрпризы, и одним из самых распространенных камней преткновения становится ошибка с отказом в доступе к демону Docker. . . .
|
Ошибка "No 'Access-Control-Allow-Origin' header is present on the requested resource"
hw_wired 14.02.2025
При разработке современных веб-приложений нередко сталкиваешься с ошибкой "No 'Access-Control-Allow-Origin' header is present on the requested resource". Эта проблема возникает из-за политики. . .
|
Как закрыть порт в Linux
hw_wired 14.02.2025
Управление сетевыми портами в Linux - непростая, но важная задача для обеспечения безопасности системы. Каждый открытый порт - это потенциальная уязвимость, через которую злоумышленики могут. . .
|