Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.09.20;
Скачать: [xml.tar.bz2];

Вниз

Поле типа DATE при экспорте в ДБФ   Найти похожие ветки 

 
Tneduts ©   (2009-07-10 13:14) [0]

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


 
Anatoly Podgoretsky ©   (2009-07-10 13:19) [1]

DBF это что?


 
makz   (2009-07-10 14:58) [2]

SELECT cast(extract(HOUR from EP.PTIME)||":"||extract(MINUTE from EP.PTIME) as time) FROM EP


 
Tneduts ©   (2009-07-10 15:33) [3]


> SELECT cast(extract(HOUR from EP.PTIME)||":"||extract(MINUTE
> from EP.PTIME) as time) FROM EP

Выдает ошибку
Не могли бы подробнее описать.


 
Loginov Dmitry ©   (2009-07-10 23:29) [4]


> Я работаю над так сказать утилиткой для готового приложения,
>  но моё приложение с ним ни как не связанно. Просто то не
> умеет выгружать в ДБФ
> Базу править можно, но не желательно.


Каким образом осуществляется выгрузка в ДБФ?
Какая технология или компоненты для этого используются?
Зачем потребовалось отделять время от даты?


 
makz   (2009-07-11 04:56) [5]

В ib5 наверное extract нет, но необязательно же с SQL поле создавать, можно и calculated сделать в датасете, или вообще прямо при загрузке в дбф отрезать дату.


 
Германн ©   (2009-07-12 01:04) [6]


> DBF это что?


 
Виталий Панасенко(дом)   (2009-07-12 20:14) [7]

а вот это

> 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;
>

бред сивой кобылы... транзакции стартовать нет смысла..она автоматом стартует.. ты ж указывал у FIBDataBase св-ва ReadTransaction и UpdateTransaction.. иначе работать не будет. и по теме: у ИБ 5,х нету разделения типа на дату/время, все хранится в одном поле. потому видимо действительно проще на клиенте с вычисляемыми полями поиграться


 
Tneduts ©   (2009-07-14 10:39) [8]


> Каким образом осуществляется выгрузка в ДБФ?
> Какая технология или компоненты для этого используются?

Для выгрузки в ДБФ я использую компоненты EMS QuickExport Component Suite 3.0
(C) EMS Corporation

> Зачем потребовалось отделять время от даты?

Так поставлена задача.


 
Tneduts ©   (2009-07-14 10:40) [9]


> makz   (11.07.09 04:56) [5]
>
> В ib5 наверное extract нет, но необязательно же с SQL поле
> создавать, можно и calculated сделать в датасете, или вообще
> прямо при загрузке в дбф отрезать дату.

Если вас не затруднит, приведите пример.


 
Tneduts ©   (2009-07-14 10:44) [10]


> у ИБ 5,х нету разделения типа на дату/время, все хранится
> в одном поле. потому видимо действительно проще на клиенте
> с вычисляемыми полями поиграться

Не могли бы вы внести некую конкретику.


 
Anatoly Podgoretsky ©   (2009-07-14 10:50) [11]


> Германн ©   (12.07.09 01:04) [6]
> > DBF это что?

Молчит зараза.


 
Tneduts ©   (2009-07-14 11:39) [12]


> > Германн ©   (12.07.09 01:04) [6]
> > > DBF это что?
>
> Молчит зараза.

http://ru.wikipedia.org/wiki/DBF


 
Anatoly Podgoretsky ©   (2009-07-14 11:44) [13]

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


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

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


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


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


 
Anatoly Podgoretsky ©   (2009-07-14 12:34) [15]

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

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


 
sniknik ©   (2009-07-14 12:41) [16]

> 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 13:06) [17]

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

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


 
Anatoly Podgoretsky ©   (2009-07-14 13:08) [18]

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

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


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


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

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


 
Loginov Dmitry ©   (2009-07-14 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 и т.д.


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

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

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

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


 
Tneduts ©   (2009-07-15 11:36) [22]


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


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


 
Tneduts ©   (2009-07-15 11:38) [23]


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

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


 
Tneduts ©   (2009-07-15 11:41) [24]


> 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 и если можно придерживаться именно его.


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


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

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

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

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

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


 
Tneduts ©   (2009-07-15 13:12) [26]


> Виталий Панасенко(дом)   (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 13:35) [27]

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


 
Tneduts ©   (2009-07-15 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
Очень удобные компоненты, но я не нашел подобных настроек. Если есть опыт работы с именно с этими компонентами - поделитесь)


 
Tneduts ©   (2009-07-15 13:55) [29]


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

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


 
Anatoly Podgoretsky ©   (2009-07-15 14:42) [30]


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

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

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

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


 
Anatoly Podgoretsky ©   (2009-07-15 14:44) [31]

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

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


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

Это плата за

> 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);


 
Tneduts ©   (2009-07-15 15:31) [33]


> Anatoly Podgoretsky ©   (15.07.09 14:44) [31]


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

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

Может не совсем корректно это прозвучало и все же.

> Для начала огласи, что такое DBF

это всё то о чём сказал sniknik ©   (14.07.09 12:41) [16]


 
Tneduts ©   (2009-07-15 15:38) [34]


> Виталий Панасенко(дом)   (15.07.09 15:26) [32]
>
> Это плата за


> Очень удобные компоненты

))) Это я уже прочувствовал.
Виталий, скажите пожалуйста, а если допустим пусть отрабатывает компонента по выгрузке, потом открывать ДБФник и дописывать ещё одно поле?
Р.С. Как работать с ДБФ в ручную опишите, как для чайника ^^)


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


> Р.С. Как работать с ДБФ в ручную опишите, как для чайника
> ^^)


точно также, как с pFIBDataSet: Append/Edit/post и т.д. только для доступа БДЕ/АДО или еще чего, типа Halcyon/TDbf/Apollo(и фиг его знает, что еще)


 
Anatoly Podgoretsky ©   (2009-07-15 15:42) [36]

Это слишком много и не отвечает на вопрос.
В большинстве DBF форматов единственная возможность это писать в строку или в целое, для xBase как правило целых нет, нужно писать в число (number N5.0) для точности в секунду.


 
Tneduts ©   (2009-07-15 15:59) [37]


> Anatoly Podgoretsky ©   (15.07.09 15:42) [36]
>
> Это слишком много и не отвечает на вопрос.
> В большинстве DBF форматов единственная возможность это
> писать в строку или в целое, для xBase как правило целых
> нет, нужно писать в число (number N5.0) для точности в секунду.
>
>

Типы данных полей
N  Числовое
C  Символьное
D  Дата
M  Memory
А если в символьном?


 
Tneduts ©   (2009-07-15 16:06) [38]

> Anatoly Podgoretsky ©   (15.07.09 15:42) [36]
Строка меня бы вполне устроила


 
Anatoly Podgoretsky ©   (2009-07-15 16:18) [39]

> Tneduts  (15.07.2009 15:59:37)  [37]

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


 
Tneduts ©   (2009-07-15 16:26) [40]


> Anatoly Podgoretsky ©   (15.07.09 16:18) [39]


> Виталий Панасенко(дом)   (15.07.09 15:42) [35]

Уважаемые, а можно "ОЧЕНЬ" детально(а лучше в примерах), как открыть готовый ДБФ, создать поле TIME а потом уже  

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



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.09.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.005 c
2-1247217291
Tneduts
2009-07-10 13:14
2009.09.20
Поле типа DATE при экспорте в ДБФ


3-1227136044
Petr V. Abramov
2008-11-20 02:07
2009.09.20
forall и bulk collect into


2-1247663350
Mishenka
2009-07-15 17:09
2009.09.20
Источник данных при соединении Delphi и Oracle черезm ADO........


15-1248125402
Юрий
2009-07-21 01:30
2009.09.20
С днем рождения ! 21 июля 2009 вторник


15-1247580201
Kerk
2009-07-14 18:03
2009.09.20
Задолжность





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский