Что-то совсем запутался...
Проблема в следующем: в таблице есть поле типа DateTime, нужно обеспечить ввод в одной колонке грида даты, во второй колонке времени. И сохранить обратно всё в это поле.
Используется SQL Server 2000, BCB6, связь с базой через ADO.
Порылся в инете, и как то безрезультатно.
Направьте, хоть в какую сторону копать..Спасибо.
Здравствуйте, zje, Вы писали:
zje>Что-то совсем запутался... zje>Проблема в следующем: в таблице есть поле типа DateTime, нужно обеспечить ввод в одной колонке грида даты, во второй колонке времени. И сохранить обратно всё в это поле. zje>Используется SQL Server 2000, BCB6, связь с базой через ADO. zje>Порылся в инете, и как то безрезультатно. zje>Направьте, хоть в какую сторону копать..Спасибо.
Не понимаю, какие могут быть проблемы.
Если у вас скажем грид это обычный TStringGrid, отвязанный от таблицы и вы сохраняете SQL-запросом (что идеологически правильно), то либо так:
AnsiString datetimestr = "06.06.2007 10:12:42";
ADOQuery1->SQL->Text = AnsiString("INSERT INTO tabDates(datecol) VALUES(CAST('") +
datetimestr +
AnsiString("' AS datetime))");
ADOQuery1->ExecSQL();
Если у вас TDBGrid, что неправильно зато просто, то там вообще никаких проблем нет просто редактируется в ячейке. Ну можно для красоты календарь подвесить.
Редактирование идет в DBGridEh, к которму привязана AdoQuery c запросом
SELECT FACTR AS DTFACTR, FACTR AS TMFACTR FROM ...
У AdoQuery устанавливаю свойства СursorType — csStatic, LockType — ltBatchOptimistic.
В AdoQuery делаю два Field-а: DTFACTR класса TDateField и TMFactR класс TTimeField.
Их и вывожу в соответствующих колонках Grid-а
результат сохраняется путем вызова
AdoQuery->UpdateBatch.
Здравствуйте, zje, Вы писали:
zje>Редактирование идет в DBGridEh, к которму привязана AdoQuery c запросом zje>SELECT FACTR AS DTFACTR, FACTR AS TMFACTR FROM ... zje>У AdoQuery устанавливаю свойства СursorType — csStatic, LockType — ltBatchOptimistic. zje>В AdoQuery делаю два Field-а: DTFACTR класса TDateField и TMFactR класс TTimeField. zje>Их и вывожу в соответствующих колонках Grid-а zje>результат сохраняется путем вызова zje>AdoQuery->UpdateBatch.
Добавить два Calculated поля. Запихнуть на OnCalcFields в них данные из главного. На OnSetText нужного поля менять содержимое главного.
D>Добавить два Calculated поля. Запихнуть на OnCalcFields в них данные из главного. На D>OnSetText нужного поля менять содержимое главного.
Изменил SQL на SELECT FACTR FROM ...
Добавил в AdoQuery два Field-a DTFACTR, TMFACTR, установил свойства FieldKind = fkCalculated.
Релизовал событие onCalcFields. Запуситил прогу. Дата и время в колонках Grida появились, но они закрыты для редактировния..Свойства ReadOnly у Grida и Field-ов установлены в false.
А вообще разве можно редактировать вычисляемые поля?
Здравствуйте, zje, Вы писали:
D>>Добавить два Calculated поля. Запихнуть на OnCalcFields в них данные из главного. На D>OnSetText нужного поля менять содержимое главного.
zje>Изменил SQL на SELECT FACTR FROM ... zje>Добавил в AdoQuery два Field-a DTFACTR, TMFACTR, установил свойства FieldKind = fkCalculated. zje>Релизовал событие onCalcFields. Запуситил прогу. Дата и время в колонках Grida появились, но они закрыты для редактировния..Свойства ReadOnly у Grida и Field-ов установлены в false. zje>А вообще разве можно редактировать вычисляемые поля?
Можна, но как я смотрю DBGrid не позволяет. А если не менять FieldKind для DTFACTR, TMFACTR?
D>>>Добавить два Calculated поля. Запихнуть на OnCalcFields в них данные из главного. На D>OnSetText нужного поля менять содержимое главного.
zje>>Изменил SQL на SELECT FACTR FROM ... zje>>Добавил в AdoQuery два Field-a DTFACTR, TMFACTR, установил свойства FieldKind = fkCalculated. zje>>Релизовал событие onCalcFields. Запуситил прогу. Дата и время в колонках Grida появились, но они закрыты для редактировния..Свойства ReadOnly у Grida и Field-ов установлены в false. zje>>А вообще разве можно редактировать вычисляемые поля?
D>Можна, но как я смотрю DBGrid не позволяет. А если не менять FieldKind для DTFACTR, TMFACTR?
А если не менять, то AdoQuery ругается на отсутствие этих полей, поэтому и писал запрос так : SELECT FACTR AS DTFACTR, FACTR AS TMFACTR ..
в событиях от onChange Field-а перезаписывал либо, дату, либо время (взависимости от измененного поля). Но возникают проблемы придобавлние новых записей и
затем при потытки сохранить изменения вызовом ADOQuery->UpdateBatch. Выдает ошибку, что поле FactR использкется несколько раз и не сохраняет.