Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 23

Импорт Данных из dbf в DBGrid

25.11.2015, 13:08. Показов 3410. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день! Необходимо по работе написать приложение для выгрузки данных из dbf. Никогда не имел дело с базами данных - поэтому много вопросов.
1) Как загрузить dbf(там только одна таблица со множеством строк) в DBGrid(на рис.) вроде как понял - через ADOConnection, ADOTable и DATASource. Но мне нужно подгружать и работать в дальнейшем только с определенными полями -'NC', 'DOT', 'GOR'. То есть пользователю не нужно самому фильтровать данные, он только нажимает кнопку и программно заданные поля подгружаются, которые потом там фильтруются по значениям выбранных полей, а затем выгружаются в текстовые файлы. Везде указываются фильтры через Edit-ы, Combo-Box-ы. А мне просто нужно подгружать определенные поля таблицы. Туплю над этим уже пару дней.
2) Если я как-то все-таки подгружу нужные колонки в программу, то как мне привести к нужному виду поле 'DOT'(дата): '198412' привести к стандартному виду '01.12.1984'?
2) Могу ли я значения определенного поля умножить на число в DBGrid-е?
Миниатюры
Импорт Данных из dbf в DBGrid  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2015, 13:08
Ответы с готовыми решениями:

Импорт dbf в dbgrid
добрый день. имеется следующий код, ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM 5299Ì2201.dbf'); ADOQuery1.Active:=True; ...

1С 8.2, импорт данных из Dbf в справочник
Добрый день! Есть проблема, пишу обработку по загрузке данных из *.dbf файла в справочник Конфигурация самописная на 8.2, интерфейс...

Импорт данных из DBF в SQLite
Доброго утра/дня/вечера! Столкнулся с проблемой, когда пытался передать данные из DBF в SQLite, вот мой запрос: SQL = "CREATE...

18
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
25.11.2015, 18:32
Лучший ответ Сообщение было отмечено dega как решение

Решение

1. Правой кнопкой по ADOTable щелкни. Вроде самый верхний пункт будет Fields Editor

2. а в dbf оно какой тип имеет?

3. да
1
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 23
25.11.2015, 19:52  [ТС]
Если честно, то я не знаю как проверить тип данных в dbf. Я не создаю эти базы. Они ко мне приходят и мне нужно вытащить определенные данные оттуда.
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
25.11.2015, 20:43
dega,
а вам на работе можно говорить
Цитата Сообщение от dega Посмотреть сообщение
я не знаю
у нас за это премии лишают

не знаете - узнайте
0
 Аватар для ZfoxAK
670 / 560 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
26.11.2015, 04:27
Цитата Сообщение от dega Посмотреть сообщение
Они ко мне приходят и мне нужно вытащить определенные данные оттуда.
Открой Excel-ем, включи автофильтр и выбирай данные
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 23
26.11.2015, 07:13  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
1. Правой кнопкой по ADOTable щелкни. Вроде самый верхний пункт будет Fields Editor
У меня файл dbf открывается через OpenDialog. То есть каждый раз может быть разный файл. Указывая нужные для подгрузки поля в Fields Editor'е возникает ошибка с указанием драйвера - наверное из-за того, что в этом случае должен быть один и тот же файл и постоянный доступ к нему. У меня разные файлы с одинаковой структурой и именами полей - нет жесткой привязки к одной базе.

Цитата Сообщение от qwertehok Посмотреть сообщение
2. а в dbf оно какой тип имеет?
Судя по формату YYYYMMDD - тип данных ДАТА. Только у меня 'DD' в dbf отсутствует.

Добавлено через 21 секунду
Цитата Сообщение от ZfoxAK Посмотреть сообщение
Открой Excel-ем, включи автофильтр и выбирай данные
Мне нужно ведь, потом выгрузить данные в текстовых файлах. Пользователь не будет перед использованием моей программы фильтровать екселем, который будет виснуть при обработке 10000-50000 строк(а есть файлы, где их может быть больше). Нужен универсальный готовый инструмент. Просто нет опыта в работе с базами.
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
26.11.2015, 09:51
dega,
1. если в файле одни и те же поля то тогда ошибки быть не может. нужно просто коннект закрывать и открывать когда известно имя файла

2. разверните дату в удобный формат руками
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
26.11.2015, 10:44
попробуй с TDBF
0
 Аватар для ZfoxAK
670 / 560 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
26.11.2015, 11:46
Цитата Сообщение от dega Посмотреть сообщение
который будет виснуть при обработке 10000-50000 строк
У меня файл Excel-ский состоит из 110 000 записей на 4-х страница, и не виснет.

Цитата Сообщение от dega Посмотреть сообщение
Мне нужно ведь, потом выгрузить данные в текстовых файлах.
Потом после чего? какие действия будут производится до выгрузки
Цитата Сообщение от dega Посмотреть сообщение
Но мне нужно подгружать и работать в дальнейшем только с определенными полями -'NC', 'DOT', 'GOR'.
ADOQuery и с помощью запроса ограничиваешь набор данных требуемыми полями и если требуется тот записями.

Цитата Сообщение от dega Посмотреть сообщение
Могу ли я значения определенного поля умножить на число в DBGrid-е?
нет, так как DBGrid не содержит данных, а только отображает их.
1
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 23
26.11.2015, 12:52  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
2. разверните дату в удобный формат руками
А с помощью какой функции это прописывается?

Добавлено через 11 минут
Цитата Сообщение от ZfoxAK Посмотреть сообщение
Потом после чего? какие действия будут производится до выгрузки
Отдельные поля - это данные измерения в определенных единицах. Мне их нужно математически преобразовать в удобные. Вообще подгружаются два файла dbf, которые мне нужно обработать, чтобы выгрузить в тектстовом формате, например:

1408 01.12.1984 13.231 2.543 0.000 0.482 0.000 0.000
1408 01.01.1985 12.453 2.865 0.000 0.542 0.000 0.000
1408 01.02.1985 11.376 3.632 0.000 0.507 0.000 0.000
........................................ ....
и т.д.
Отдельные поля остаются без изменений, а некоторые потом будут посредством математических выражений преобразовываться.
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
26.11.2015, 13:19
dega,
какая у вас версия Delphi?

если xe и выше - скиньте dbf файл, я покажу как с ним работать
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 23
26.11.2015, 14:05  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
какая у вас версия Delphi?
если xe и выше - скиньте dbf файл, я покажу как с ним работать
Delphi XE7. Скину как буду дома.
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 23
26.11.2015, 17:33  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
скиньте dbf файл, я покажу как с ним работать
Вот сам файл dbf
Вложения
Тип файла: 7z DOB_CHE.7z (2.27 Мб, 13 просмотров)
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
26.11.2015, 20:39
dega,
какие поля выводить?
какие фильтры делать?
1
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
27.11.2015, 00:41
Цитата Сообщение от dega Посмотреть сообщение
Судя по формату YYYYMMDD - тип данных ДАТА.
если для отображение в Grid-е нормально формате то так
Delphi
1
Adoquery.Fields[2].DisplayFormat := 'dd.mm.yyyy';
А если выгрузить в Excel на формате даты то так
Delphi
1
Sheet.Cells[index, 2] := FormatDateTime('dd.mm.yyyy',Adoquery.Fields[2].AsDateTime);
В чем проблема ?

Добавлено через 4 минуты
Цитата Сообщение от qwertehok Посмотреть сообщение
какая у вас версия Delphi?
Какая версия Delphi и какой у него Windows не имеет эту значения .!!! Когда человеку интересно отображать дата нормальном формате и экспортировать его в Excel-е
1
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
27.11.2015, 01:29
xxbesoxx, нет у ТС в данной таблице полей с типом DATE/DATETIME/TIMESTAMP и т.п.
Есть только поля типа CHARACTER и NUMERIC.
Цитата Сообщение от dega Посмотреть сообщение
то как мне привести к нужному виду поле 'DOT'(дата): '198412' привести к стандартному виду '01.12.1984'?
Первые четыре символа это год. вторые два это месяц.
1
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 23
27.11.2015, 12:49  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
dega,
какие поля выводить?
какие фильтры делать?
Поля 'NC', 'DOT', 'QNPLNAK/(DRMNC*0.905)', 'QBM'
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
28.11.2015, 18:46
Лучший ответ Сообщение было отмечено dega как решение

Решение

вот как-то так

2 способа обработки dbf
1. разбираем dbf сами. но тут минус - строковые поля с русским текстом почему-то неправильно конвертятся
2. с помощью ODBC цепляемся и с помощью FDConnection\FDQuery получаем данные.
далее можно вывести в грид (закоментировал) или в FDMemTable. Если выводить построчно memtable, конечно, быстрее. можно даже еще быстрее если полноcтью перелить структуру Query в MemTable

Delphi
1
memdbf.Data := q.Data;
Но дальше я не понял как добавить вычисляемое поле.

ЗЫ при попытке вычислить значение напрямую в запросе попадаем на ограничения dBase. описания их SQL я не нашел, поэтому в запросе это сделать не получилось ((
Вложения
Тип файла: 7z qwertehok_dbf.7z (3.78 Мб, 16 просмотров)
1
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 23
29.11.2015, 15:38  [ТС]
Спасибо вам большое. Буду теперь разбираться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2015, 15:38
Помогаю со студенческими работами здесь

Импорт данных из большого файла XML в DBF
доброго времени суток! требуется перегнать XML файл в dbf, сложность в том, что XML довольно большой и целиком его обрабатывать...

Импорт данных из DBF файла в Access 2003
Может где-то это уже было, тогда заранее извиняюсь, почему-то при попытке поиска ошибка выдается. вопрос. надо ипортнуть таблицу из...

Импорт данных из dbf и fdb в базу сайта
Доброго времени суток! Назревает следующая задача. Сайт на PHP+MySQL. Необходимо делать раз в месяц импорты инфы из dbf-файлов в базу...

Ошибка при загрузке DBF файлов с датой 'dd.mm.yy' (DBF FoxPro, TADOQvery, DataSource, DBGrid)
Возьмем для примера текущую дату - '04.09.2003'. В результате выполнения этого запроса данные сохраняются. Но если в системных настройках...

Импорт из Excel в dbf
Как на VBA сделать импорт (выборочных) данных в DBF ? Нравится как это реализовано в 1с. Хотелось бы наподобии 1) Создать файл в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru