Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2012, 16:18   #1
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию Delphi 7+FoxPro 6 проблема с типом данных date

Здравствуйте, возникла одна проблемка. Есть бд на Foxpro, обработка данных идёт через приложение на делфи. В Foxpro есть тип данных date, до внесения данных в поле данного типа там отображается пустая строка, т.е видно, что данные отсутствуют. При подключении бд на foxpro к делфи, все пустые значение полей с типом date заменяются на дату 30.12.1899. Так вот вопрос, как исправить данную ситуацию, потому как в отчётах потом тоже выводится эта дата вместо пустой строки? Может можно это значение стандартное в делфи как-то изменить либо в foxpro подкрутить чего?
Ditrovich вне форума Ответить с цитированием
Старый 04.09.2012, 16:25   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сделать в DataSet вычисляемое поле и, если дата (AsDateTime) этого поля = 0 , то ничего не присваивать в него, иначе присвоить дату из исходного поля
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.09.2012, 16:32   #3
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию

таблиц штух 18, полей с датой тьма, это для каждого поля что ли делать так?
Ditrovich вне форума Ответить с цитированием
Старый 04.09.2012, 16:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Это зависит от средств, с помощью которых обращение из Delphi к dbf. Поэксперементировать, возможно есть провайдер для ADO, или другое ПО, которое правильно интерпретирует не заполненную дату, т.е. передает NULL. Таким вопросом не задавался, поэтому не скажу. Если такового не найдется, то для отображения в гриде проще не придумаешь. Разве что программно прорисовывать значение этого поля, насколько это проще - вам решать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.09.2012, 16:40   #5
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию

Провайдера не удалось нормального найти под foxpro, увы. Попробую ещё поискать, но за ответ спасибо
Ditrovich вне форума Ответить с цитированием
Старый 04.09.2012, 16:43   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что значит не удалось? Так, на вскидку - vfpoledb.1, JET OLE DB, MSDASQL - пробуйте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.09.2012, 16:45   #7
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию

Вот я первого использую, а второй кажись для foxpro не подходит, раньше пробовал кажись. Перепроверю сейчас
Ditrovich вне форума Ответить с цитированием
Старый 04.09.2012, 16:48   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Все подходят, только строку соединения правильно задать. И есть зависимость от кодовой страницы dbf, или отсутствия указания на нее в файле
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.09.2012, 11:39   #9
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию

Спасибо за внимание к вопросу, проблему решил) Может кому понадобится, опишу:
1) ставим в Foxpro на поле тип значения по умолчанию .Null., для того чтоб дальнейшие записи нормальными сразу создавались;
2) затем запросами на sql при помощи update изменяем пустые значения полей в таблицах foxpro на .Null. Запрос вида Update tablename set fieldname=Null where fieldname={} Два первых шага позволят делфи отображать пустую строку вместо даты по умолчанию;
3) и наконец используем опять же в FoxPro команду SET NULLDISPLAY TO [] для того чтобы с его стороны вместо .Null. отображались пустые строки.
Готово)
Ditrovich вне форума Ответить с цитированием
Старый 06.09.2012, 11:46   #10
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию

Тема закрыта
P.S. новичок на форуме, не знаю, может её как-то закрывать нужно) Если да-поскажите как это сделать
Ditrovich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с множественным типом данных Rebelition Паскаль, Turbo Pascal, PascalABC.NET 1 22.04.2012 10:51
Проблема с типом данных!!!!! Екатерина_21 C++ Builder 1 02.02.2012 02:19
Проблема с типом данных Nicko_mt Помощь студентам 6 17.09.2011 00:42
Проблема с типом данных BMWSauber Общие вопросы .NET 1 12.10.2010 13:42
Вопрос, по вычислению стажа работы с типом Date Sfera БД в Delphi 4 04.10.2010 15:57