Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поле типа DATE при экспорте в ДБФ [D7, IB5.x]


Страницы:   1 2 3

Tneduts ©   (2009-07-10 13:14:00) 

У меня gdb-шная база, работаю я в Делфи7, линкуюсь к базе при помощи стандартного DATASource + FIBPlus компроненты (pFIBDatabase, pFIBDataSet, pFIBTransaction).
После прочтения параметров с инишника конектимся
Begin
With TKDatabase Do
Begin

DatabaseName := DB_Path;
ConnectParams.UserName := DB_User;
ConnectParams.Password := DB_Password;
ConnectParams.CharSet := DB_CharSet;
SQLDialect := DB_SQLDialect;
Connected := true;
End;
TKTransaction.StartTransaction;
End
Except
On E: Exception Do ShowMessage('Program stopped. Error: ' + E.Message);
End;

Теперь собственно выборка

With TKDataSet Do
Begin
If Active Then
Close;
SelectText := 'SELECT EL.NAME , EP.PTIME, EP.DIRECTION FROM EMPPUNCHES EP, EMPLIST EL WHERE ( (EL.DELETED = 0) AND ( EP.PTIME BETWEEN "' + d1 + '" AND "' + d2 + '") )';
SQLs.SelectSQL.Text := SelectText;
Open;
End;

EP.PTIME - вот это поле хранит в себе дату и время. Как мне организовать ещё одно, может временное, поле для того что бы выдёргивать отдельно время?
Примечания:
Я работаю над так сказать утилиткой для готового приложения, но моё приложение с ним ни как не связанно. Просто то не умеет выгружать в ДБФ
Базу править можно, но не желательно.


Виталий Панасенко(дом)   (2009-07-15 15:26:00) [21]

Это плата за

> Tneduts ©   (15.07.09 13:48) [28]
>
>
> > Loginov Dmitry ©   (14.07.09 22:14) [20]
>
>
> > DBF.FieldByName('TIME').AsString := FormatDateTime('hh-
> nn-ss',TKDataSet.FieldByName('PTIME').AsDateTime);
>
> Для выгрузки в ДБФ я использую компоненты EMS QuickExport
> Component Suite 3.0
> (C) EMS Corporation
> Очень удобные компоненты, но я не нашел подобных настроек.
>  Если есть опыт работы с именно с этими компонентами - поделитесь)

Сделал бы руками, все было бы проще. Только в примере опечатка:
DBF.FieldByName('TIME').AsString := FormatDateTime('hh- mm-ss',TKDataSet.FieldByName('PTIME').AsDateTime);


Anatoly Podgoretsky   (2009-07-15 14:44:00) [22]

> Tneduts  (15.07.2009 13:48:28)  [28]

Как ты выгрузить DateTime если у тебя по всей видимости в DBF нет поддержки таких полей в принципе.
Для начала огласи, что такое DBF


Anatoly Podgoretsky   (2009-07-15 14:42:00) [23]


>  но я здесь и общаюсь, что бы это исправить

Общение у тебя какое то странное, партизанское. Информацию даже под пытками не вытянуть.

> По этому если вам не сложно терпеть мою темноту, то пожалуйста
> в примерах.

Нельзя в примерах - недостаток информации.


Tneduts   (2009-07-15 13:55:00) [24]


> Виталий Панасенко(дом)   (15.07.09 13:35) [27]
>
> тут решают конкретные проблемы, а в вашем посте ее вообще
> нету. есть отсутствие элементарных знаний.. ИМХО
>

У меня конкретная проблема. Выше её описание, если я описываю не корректно, то поправьте я изложу более детально. Да я не волшебник, я только учусь.
Более того "СУХА ТЕОРИЯ МОЙ ДРУГ, НО ДРЕВО ЖИЗНИ ЗЕЛЕНЕЕТ".
По этому если вам не сложно терпеть мою темноту, то пожалуйста в примерах. Если нет - то давайте опустим обсуждение уровня моих знаний, т.к. я достаточно самокритичен.


Tneduts   (2009-07-15 13:48:00) [25]


> Loginov Dmitry ©   (14.07.09 22:14) [20]


> DBF.FieldByName('TIME').AsString := FormatDateTime('hh-nn-ss',TKDataSet.FieldByName('PTIME').AsDateTime);

Для выгрузки в ДБФ я использую компоненты EMS QuickExport Component Suite 3.0
(C) EMS Corporation
Очень удобные компоненты, но я не нашел подобных настроек. Если есть опыт работы с именно с этими компонентами - поделитесь)


Виталий Панасенко(дом)   (2009-07-15 13:35:00) [26]

тут решают конкретные проблемы, а в вашем посте ее вообще нету. есть отсутствие элементарных знаний.. ИМХО


Tneduts   (2009-07-15 13:12:00) [27]


> Виталий Панасенко(дом)   (15.07.09 12:26) [25]
>
>
> > Tneduts ©   (15.07.09 11:38) [23]
>
> OnCalcFields+F1, поищи  в помощи Calculated Field
>
> > Tneduts ©   (15.07.09 11:41) [24]
>
> А по барабану, ФИБы - наследники TDataSet.
>
> брось это дело, раз не знаешь основы...

Некое проявление слабости. Да у меня далеко не богатый опыт, но я здесь и общаюсь, что бы это исправить. Вам, как и всем остальным, принимающих участие в данном обсуждении, ОГРОМНОЕ СПАСИБО.
Но есть задача и её нужно решить. Наберитесь терпения, а обещаю быть прилежным учеником)))


Виталий Панасенко(дом)   (2009-07-15 12:26:00) [28]


> Tneduts ©   (15.07.09 11:38) [23]

OnCalcFields+F1, поищи  в помощи Calculated Field

> Tneduts ©   (15.07.09 11:41) [24]

А по барабану, ФИБы - наследники TDataSet.

брось это дело, раз не знаешь основы...


Tneduts   (2009-07-15 11:41:00) [29]


> Loginov Dmitry ©   (14.07.09 22:14) [20]


> Если предположить, что выбранный формат DBF не предусматривает
> поля TIME и TIMESTAMP, значит для хранения времени нужно
> либо числовое, либо строковое поле. Для наглядности поле
> - строковое, тогда пример может выглядеть следующим образом:
>
> DBF.FieldByName('TIME').AsString := FormatDateTime('hh-nn-
> ss', TKDataSet.FieldByName('PTIME').AsDateTime);
> Надеюсь, не требуется дополнять, что для добавления записи
> нужно использовать дополнительные методы TDateSet, такие
> как Open, Eof, Next, Append, Post, Close и т.д.


Требуется.(простите мне моё невежество) + я работаю не с TDateSet, а с FIBDataSet и если можно придерживаться именно его.


Tneduts   (2009-07-15 11:38:00) [30]


> Виталий Панасенко(дом)   (14.07.09 13:09) [19]
>
>
> > Tneduts ©   (14.07.09 10:44) [10]
> >
> >
> > > у ИБ 5,х нету разделения типа на дату/время, все хранится
> > > в одном поле. потому видимо действительно проще на клиенте
> > > с вычисляемыми полями поиграться
> >
> > Не могли бы вы внести некую конкретику.
> >
>
> а куда конкретней? объяснить, что такое вычисляемое поле
> и как его заполнять/вычислять?8-0

Да, если вас не затруднит или скажите где почитать.


Tneduts   (2009-07-15 11:36:00) [31]


> sdsk ©   (14.07.09 12:17) [14]
>
> Зачем на уровне полей выборки отделять дату от времени?
> Сомневаюсь я, что в ТЗ такое требование. Там требование
> скорее всего по организации интерфейса, 2 контрола на дату
> и время, а не требование к выборке данных.
>
>
> > EP.PTIME - вот это поле хранит в себе дату и время. Как
> > мне организовать ещё одно, может временное, поле для того
> > что бы выдёргивать отдельно время?
>
>
> Дата и время это просто число. Отбрасывай целую часть, вот
> тебе и время отдельно от количества суток с начала исчислени


То что это число я понимаю, как с его обрабатывать, где начало исчисления - не понятно. Просветите или подскажите где почитать.


Кщд   (2009-07-15 06:03:00) [32]

>sdsk ©   (14.07.09 12:17) [14]

>Зачем на уровне полей выборки отделять дату от времени?

например, затем, что есть такое понятие - OLAP
а в таких системах, порою, дата, часы и минуты - это три поля
хотел написать и секунды, но честно - с таким не встречался)


Loginov Dmitry   (2009-07-14 22:14:00) [33]


> или вообще
> > прямо при загрузке в дбф отрезать дату.
>
> Если вас не затруднит, приведите пример.


Если предположить, что выбранный формат DBF не предусматривает поля TIME и TIMESTAMP, значит для хранения времени нужно либо числовое, либо строковое поле. Для наглядности поле - строковое, тогда пример может выглядеть следующим образом:
DBF.FieldByName('TIME').AsString := FormatDateTime('hh-nn-ss', TKDataSet.FieldByName('PTIME').AsDateTime);
Надеюсь, не требуется дополнять, что для добавления записи нужно использовать дополнительные методы TDateSet, такие как Open, Eof, Next, Append, Post, Close и т.д.


Виталий Панасенко(дом)   (2009-07-14 13:09:00) [34]


> Tneduts ©   (14.07.09 10:44) [10]
>
>
> > у ИБ 5,х нету разделения типа на дату/время, все хранится
> > в одном поле. потому видимо действительно проще на клиенте
> > с вычисляемыми полями поиграться
>
> Не могли бы вы внести некую конкретику.
>

а куда конкретней? объяснить, что такое вычисляемое поле и как его заполнять/вычислять?8-0


Anatoly Podgoretsky   (2009-07-14 13:08:00) [35]

> sniknik  (14.07.2009 12:41:16)  [16]

Я уже частично написал про время, мне известен только один форма, который поддерживает TIME и DATETIME - это dBase VII и выше, но его поддержка по сути ограничена BDE


Anatoly Podgoretsky   (2009-07-14 13:06:00) [36]

> sniknik  (14.07.2009 12:41:16)  [16]

Клиппер особая песня, там даже строковые поля не совпадают с xBase


sniknik   (2009-07-14 12:41:00) [37]

> http://ru.wikipedia.org/wiki/DBF
статью ламер писал...
с начала " DBF — формат хранения данных", это не формат, нет такого формата есть расширение файлов которые могут быть в каком то формате.
не различает формат файла и расширение файла.

потом он правда упоминает о возможных различиях в форматах, и о поддерживающих его различных "движках" (dBase III, IV,Clipper, FoxBASE/FoxPro) но явно недостаточно. и как то вскользь, так что создается впечатление типа это одно и тоже с небольшими отличиями. и выбрал как раз такие, с небольшими, хотя и их бывает достаточно для координальной  несовместимости между собой. не говоря о  других которые несовместимы в принципе, хотя и имеют тоже самое расширение. (ну к примеру из того с чем сталкивался - адвантаже датабейсе в "родном" формате (вроде у нее есть и режим поддержки dBase), первасвиль (одно из расширений по умолчанию было dbf, хотя там вообще то можно поставить любое ), ну и небезызвестный оракл... тоже делает(-ал) файлы базы с таким расширением.)
и это далеко не все... когда то занимался этим, выбрал где то 30 различных движков из ~ 200 найденных (тоже не все), для тестов чтобы отобрать окончательный для работы в паре с клипером, подошло 2, выбрал 1 тот что был с иходниками хотя более тормозной и платный, и не пожалел, оказалось что даже смена версии клипера (которую сделали естественно после того как все уже было готово) внесла в формат изменения не совместимые с пред идущей... пришлось править в исходниках. (не так стало обрабатываться выражение используемое в индексе, что повлияло на структуру индекса, было бы приложение одно, нет проблем, реиндекс и все дела, но когда в паре...)

ну так вот... теперь вернемся к началу
> DBF это что?
вернее надо чуть по другому
DBF это что, у тебя? (/для тебя?)


Anatoly Podgoretsky   (2009-07-14 12:34:00) [38]

> sdsk  (14.07.2009 12:17:14)  [14]

Но остается неизвестным, что такое DBF - в большинстве из них нет поля типа TIME и нет времени в составе DATE
Разговор бессмысленен без ответа.


sdsk   (2009-07-14 12:17:00) [39]

Зачем на уровне полей выборки отделять дату от времени? Сомневаюсь я, что в ТЗ такое требование. Там требование скорее всего по организации интерфейса, 2 контрола на дату и время, а не требование к выборке данных.


> EP.PTIME - вот это поле хранит в себе дату и время. Как
> мне организовать ещё одно, может временное, поле для того
> что бы выдёргивать отдельно время?


Дата и время это просто число. Отбрасывай целую часть, вот тебе и время отдельно от количества суток с начала исчисления.


Anatoly Podgoretsky   (2009-07-14 11:44:00) [40]

И зачем это.
На мой взгляд тебе ответ просто не требуется, ты пришел сюда потрепаться.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо