Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 27 апр 2024, 20:00

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: MissingSQLProperty
СообщениеДобавлено: 23 апр 2015, 08:11 
Не в сети

Зарегистрирован: 23 апр 2015, 04:56
Сообщений: 1
Добрый день.
Заранее прошу не судить строго за выбранные методы решения задачи.
Прошу помощи в локализации ошибки MissingSQLProperty, и для этого
постараюсь как можно обстоятельнее и подробнее изложить исходную диспозицию.
Используется серверная БД Регистратура под управлением MS SQL Server 2012.
Используется библиотека EhLib 6.2
Используется схема 1 для отображения картотеки пациентов:
ADOConnection->ADODataDriverEh->MemTableEh->DataSource (Далее DSCards)
Используется схема 2, 3...n для получения различных справочных данных:
ADOConnection->ADOQuery->DataSource1(Далее DSDiagnosis, DSEmployee и пр.)
MemTableEh заполняется по команде ADODataDriverEh.SQLCommand.Text := 'Select [список полей] from cards'
Далее в проекте имеется форма form1 с DBGridEh->DSCards
Пользователи категорически против всякого редактирования в табличном режиме поэтому пришлось завести дополнительную форму form2 для редактирования полей из DBGridEh.
По нажатию form1.button значения из DBGridEh присваиваются различным Controls в form2
Один типичный пример заполнения элементов управления.
Для поля шифра диагнозов form2.DBLookUpComboBoxEh1:
Код:
DataField := NDIA; //поле диагнозов из картотеки
DataSource := DataModule1.DSCards; //ДС картотеки
ListSource := DataModule1.DSDiagnosis; //Список диагнозов
ListField := NDIA //Поле справочника диагнозов
KeyField := NDIA //тоже самое поле

При открытии формы этот control заполняется верным значением.
Однако аналогичный DBLookUpComboBoxEh2.Text для второго значения диагнозов
form1.DBGridEh.FieldsByName['NDIA22'].AsString; ссылающийся на тот же справочник
почему то не заполняется. Скорее всего здесь нужен дополнительный DataSet. Но у меня так и ни чего не получилось. Выкрутился создав вместо DBLookUpComboBoxEh DBComboBoxEh из заполняя программно Items из DSDiagnosis.DataSet.
Это все прелюдия. Суть в том, что после окончания редактирования и закрытия form2 программа генерит указанную в топике ошибку и вываливается в модуль DataDriver в функцию TCustomSQLDataDriverEh.DefaultExecuteCommand на строку Result := Command.Execute(Cursor, FreeOnEof). Пробовал закрывать предварительно MemTableEh и повторно открывать. Проблема вроде как решилась. Однако, открытие слишком расточительно по времени. MemTableEh.ApplyUpdates не возымело действия. Пробовал также настроить параметры update'а в методе DataModule.MemTableEhCardsAfterPost(DataSet: TDataSet) и применить MemTableEh.refreshrecord. Ошибка снова возникает. Что сделал не так, или чего не сделал?
P.S.
В свойствах ADODataDriverEh.UpdateSQL написал запрос
Код:
Update Cards
Set field1 = :paramFld1,
     field2 = :paramFld2,
...
     fieldN = :paramFldN
Where ID = :ID

MemTableEh.CachedUpdates := false;


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB