Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
16 / 15 / 4
Регистрация: 30.10.2014
Сообщений: 175
1
Другое

Dbf +MSDASQL = крокозябры

14.08.2015, 19:41. Показов 939. Ответов 11
Метки нет (Все метки)

Недавно потребовалось использовать старые базы данные еще от ms-dos написанные наверное на foxpro..
Читал статьи на эту тему что и как. В итоге смог подключить dbf и вывести в dbgrid. Крокозябриков не было, все было замечательно. С хорошим настроением лег спать. На следующий день закрепил удачный опыт на работе. Все в порядке. Пришел домой открыл проект а там ( Скрин в примечании )..

В общем делал так :
1. Заходил Источники данных ODBC
2. Добавлял в Пользовательском DSN новый драйвер (снимок 2)
3. дальше подключался к базе по такой строке
Delphi
1
2
3
ADOConnection.ConnetcionString := Provider=MSDASQL.1;Persist Security Info=False;
ADOConnection1.DefaultDatabase := ' G:\БАЗЫ ДАННЫХ\MNTK 2015 ';
ADOQuery.sql := 'select * from FMNTK2.dbf';
Помогите разобраться пожалуйста, а то мне кажется еще чуть - чуть и я вызову сатану вместо того, что бы подключить бд..

Проект и примеры dbf в приложении.
Миниатюры
Dbf +MSDASQL = крокозябры   Dbf +MSDASQL = крокозябры  
Вложения
Тип файла: rar mntk.rar (8.62 Мб, 2 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2015, 19:41
Ответы с готовыми решениями:

Ошибка при имени dbf файла более 8 символов ( MSDASQL.1 )
Всем доброго времени суток :) Цель функции: Найти *.dbf файлы в директории, присоединиться к ним в...

Крокозябры
Стоит Linux(Ubuntu), создал обычный текстовик, написал код <html> <head> <title> Главная...

PWS не может зарегистрить что-то вроде 'msdasql.dll' или что-то похожее.
Ну вот. Сяду, думаю, вечерком и форум себе сделаю. А не тут-то было. Что-то случилось вроде с моим...

Крокозябры с почтой
Не могу понять , на майле нормально письмо доходит + кодировка срабатывает , а вот на яше проблемка...

11
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,788
14.08.2015, 20:19 2
В этих файлах надо преобразовать кодировку ДОС в виндовую кодировку
В прицепе файлы из проекта с кодировкой win1251.
Файлы сильно похудевшие, т.к. во время перекодировки условно удаленные записи не попали в целевые файлы.
Вложения
Тип файла: zip maybeTM.zip (6.78 Мб, 3 просмотров)
0
16 / 15 / 4
Регистрация: 30.10.2014
Сообщений: 175
14.08.2015, 20:39  [ТС] 3
Скандербег,
Цитата Сообщение от Скандербег Посмотреть сообщение
Файлы сильно похудевшие, т.к. во время перекодировки условно удаленные записи не попали в целевые файлы.
Как быть с этим ? У меня есть, как мне кажется вполне рабочие файлы. Могу спокойно прочитать их с помощью екселя.
Пытался подключить файлы которые вы скинули - появляются те же кракозябрики.
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,788
14.08.2015, 20:41 4
Цитата Сообщение от maybeTM Посмотреть сообщение
Как быть с этим ?
Зачем нужны давно удаленные записи?
0
16 / 15 / 4
Регистрация: 30.10.2014
Сообщений: 175
14.08.2015, 20:46  [ТС] 5
Открыл delphi от имени администратора... нда... кто бы мог подумать что причина заключается в этом..
Цитата Сообщение от Скандербег Посмотреть сообщение
Зачем нужны давно удаленные записи?
Не могу ничего сказать, не совсем вас понял
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,788
14.08.2015, 20:54 6
Формат DBF подразумевает, что записи, которые удаляются из таблицы на самом деле только помечаются как удаленные, но физически не удаляются.
В свое время в представленных файлах была масса удалений, но записи как были так и остались и только помечены как удаленные.
Про эти удаленные записи и речь. Если они давно были "удалены", то зачем они сейчас то нужны?
0
16 / 15 / 4
Регистрация: 30.10.2014
Сообщений: 175
14.08.2015, 21:08  [ТС] 7
Скандербег,
Понял вас Я просто не знал о подобных тонкостях.
Я не могу знать зачем они сейчас нужны и почему не удалены физически. Потому что я с dbf работаю, грубо говоря, 5 часов. Даже не знаю как определить, что запись помечена как удаленная.
А так у меня по ходу работы возникают другие вопросы:
Есть ли смысл дальше работать с текущими файлами или стоит перенести данные в какую нибудь альтернативную базу ?
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,788
14.08.2015, 21:13 8
Цитата Сообщение от maybeTM Посмотреть сообщение
Пытался подключить файлы которые вы скинули - появляются те же кракозябрики.
Юникод в Дельфи не дает прочитать в правильной кодировке.
Экзотический выход использовать Дельфи 7.
Корректное решение, действительно, перенести данные в другую СУБД
0
16 / 15 / 4
Регистрация: 30.10.2014
Сообщений: 175
14.08.2015, 21:17  [ТС] 9
Цитата Сообщение от Скандербег Посмотреть сообщение
Корректное решение, действительно, перенести данные в другую СУБД
А не подскажите, что тогда лучше использовать, если приходиться манипулировать файлами содержащими около 700 тыс. строк ?
Первое, что приходит в голову, - MS Access.
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,788
14.08.2015, 21:24 10
Можно и Акссесс, если он доступен.
Да любая современная СУБД (наиболее популярные: SQLite, Firebird, MS SQL Server).
Все зависит от конечной задачи.
0
16 / 15 / 4
Регистрация: 30.10.2014
Сообщений: 175
14.08.2015, 21:43  [ТС] 11
Скандербег,
Вообще задача такая:
Есть 4 файла с данными, необходимо сделать что-то типо отчета и вывести на печать. А так же пользователь, если
посчитает нужным должен иметь возможность всячески редактировать данные в базе.
Мне почему то кажется, что исходя из этой задачи мне подойдет SQLlite, хотя, у меня есть доступ к Акссессу.
Но почему то мне кажется, что в этой задаче аксес будет медленей работать.

Добавлено через 18 секунд
Скандербег,
Вообще задача такая:
Есть 4 файла с данными, необходимо сделать что-то типо отчета и вывести на печать. А так же пользователь, если
посчитает нужным должен иметь возможность всячески редактировать данные в базе.
Мне почему то кажется, что исходя из этой задачи мне подойдет SQLlite, хотя, у меня есть доступ к Акссессу.
Но почему то мне кажется, что в этой задаче аксес будет медленей работать.
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,788
14.08.2015, 21:57 12
Цитата Сообщение от maybeTM Посмотреть сообщение
Но почему то мне кажется, что в этой задаче аксес будет медленей работать.
Вполне возможно, но конкретно может сказать только практика (или практикующие Аксесс с большими БД).

Думаю, дальнейшее предупреждение будет не лишним.
В одной из представленных таблиц (та, которая самая объемная) записи содержат части строк.
Например.
ActionScript 3
1
2
3
4
5
6
      34¦  1¦Токарная-выточить пальцы
      34¦  1¦      ф 32 х 83 с торцов
      34¦  1¦к.,проточк.,нар.резьбы м
      34¦  1¦16 дл.р=25,сн.фас.      
      34¦  2¦Фрезерная-прорезать шлиц
      34¦  2¦      3 х 2 х 32
Видно, что эти 6 записей на самом деле содержат 2 строки. Одна имеет номер 1, другая 2.
Так что при экспорте в другую таблицу придется их как-то объединять.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2015, 21:57

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

Копирование данных из одной таблицы dbf в шаблон dbf
Есть источник файл med.dbf с данными, необходимо перенести часть данных в файл-шаблон med.dbf....

Записываются крокозябры в файл
Народ такой вопрос как записать объекты всех классов в файл? При всех попытках записать в текстовый...

В стилях возникли крокозябры
Добрый вечер! Работала с сайтом, и внезапно обнаружила, что закомментированные на русском строки,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru