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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2017, 10:41   #1
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию База данных DBF

Доброго времени суток всем.
Имеется проблема
Есть файл БД Calls.dbf
Взял Lazarus , кинул на форму
DBGrid1+Dbf1+Datasource1
Написал код
[NO PARSE]
Dbf1.TableName:= 'Calls.dbf';
Dbf1.Open;
[/NO PARSE]

Все норм, открылась моя БД
Теперь вопрос, как сделать sql запрос. Мне нужно сделать выборку по Дате, там имеется столбец DATE. Как реализовать???
gribo4ek вне форума Ответить с цитированием
Старый 25.10.2017, 10:51   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Выбрось Dbf1, используй ADOQuery и провайдер jet oledb. Там еще от кодировки dbf зависит и того, указана ли кодовая таблица в заголовке дбф. Можно провайдер msdasql через odbc или фокспрошный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.10.2017, 11:21   #3
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от gribo4ek Посмотреть сообщение
Написал код

Dbf1.TableName:= 'Calls.dbf';
Dbf1.Open;
Цитата:
Сообщение от Аватар Посмотреть сообщение
Выбрось Dbf1, используй ADOQuery и провайдер jet oledb. Там еще от кодировки dbf зависит и того, указана ли кодовая таблица в заголовке дбф. Можно провайдер msdasql через odbc или фокспрошный
Есть пример может???
gribo4ek вне форума Ответить с цитированием
Старый 25.10.2017, 11:22   #4
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Просто в Lazarus вроде как нет ADOQuery
gribo4ek вне форума Ответить с цитированием
Старый 25.10.2017, 11:50   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Проглядел. Ну SQLQuery есть. Да и делфийское ado это просто обвертки вокруг адошных сом-объектов. При желании можно и из лазаруса обратиться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.10.2017, 11:52   #6
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Цитата:
Ну SQLQuery есть.
- вот в том то и дело что через него не получается ничего!!!!
Поэтому и обратился
gribo4ek вне форума Ответить с цитированием
Старый 25.10.2017, 13:20   #7
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Поможет кто ни буть??
gribo4ek вне форума Ответить с цитированием
Старый 30.10.2017, 17:23   #8
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

А Вам для каких целей DBF если не секрет?
В TDBF можно попробовать использовать метод SetRange(Value1, Value2) который устанавливает диапазон вроде фильтра, работает по индексированному полю, т.е. сначала надо по полю с датой создать индекс. Или просто попробовать использовать фильтр.
ps.
Стандартная компонента TDBF не работает нормально с кодировкой Win1251 и CP866, она будет тупо лить в TDBF строки в UTF-8, такую DBF потом ни один нормальный движок не прочитает. А если попадет нормальная таблица с кодировкой 1251 или 866 Вы в ней увидите то что на скриншоте. Могу дать ссылку на модифицированную версию TxDBF, в которой можно работать с Win1251 и CP866, работает фильтр и SetRange.
Но в любом случае Dbf сейчас использовать не стоит, разве только для обмена данными с внешней системой.
Изображения
Тип файла: png dbflang.png (32.6 Кб, 185 просмотров)
Rik вне форума Ответить с цитированием
Старый 31.10.2017, 13:33   #9
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Rik Посмотреть сообщение
А Вам для каких целей DBF если не секрет?
В TDBF можно попробовать использовать метод SetRange(Value1, Value2) который устанавливает диапазон вроде фильтра, работает по индексированному полю, т.е. сначала надо по полю с датой создать индекс. Или просто попробовать использовать фильтр.
ps.
Стандартная компонента TDBF не работает нормально с кодировкой Win1251 и CP866, она будет тупо лить в TDBF строки в UTF-8, такую DBF потом ни один нормальный движок не прочитает. А если попадет нормальная таблица с кодировкой 1251 или 866 Вы в ней увидите то что на скриншоте. Могу дать ссылку на модифицированную версию TxDBF, в которой можно работать с Win1251 и CP866, работает фильтр и SetRange.
Но в любом случае Dbf сейчас использовать не стоит, разве только для обмена данными с внешней системой.
Дайте ссылку на модифицированный пж TxDBF, посмотрю
gribo4ek вне форума Ответить с цитированием
Старый 31.10.2017, 19:08   #10
Kamran_
 
Регистрация: 05.10.2017
Сообщений: 9
По умолчанию

dbf устаревший но, можно.
для sql нужен компонент TQuery
если вам нужен просто фильтрация
могу вставить код и будет работать
Kamran_ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
база DBF в delphi kolin2112 БД в Delphi 1 08.07.2012 15:25
Из 1С 8.1 перегрузить данные в базу на Delphi (база dbf). Natasha Pavlovskay Помощь студентам 0 17.07.2009 20:45
База DBF работа с SQL запросами Larsus БД в Delphi 12 10.09.2008 10:23
DBF Clipper база в Excel читет только 40 e_dk БД в Delphi 4 01.06.2008 15:00
Кодированная база DBF? Vasya БД в Delphi 6 29.03.2007 08:01