Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытие dBase через ADO, Ошибка конветации типов 
:(
    Опции темы
Dr.Drunk
  Дата 19.1.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 12.1.2004
Где: Волжский

Репутация: нет
Всего: нет



Доброго времени суток.

Собственно сабж.

Есть dbf-ки, есть моя прога. dbf-ки, которые делаю сам открываются нормально. dbf-ки, допустим с 1С, при открытии выдает: "Invalid variant type conversion" smile Притом не на всех, не которые окрывает нормально, а не которые даже без русских полей открывает с ошибкой.

Подключаюсь через OLE DB Provider for ODBC Driver.
--------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why!
PM MAIL WWW ICQ   Вверх
ТоляМБА
Дата 20.1.2006, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Кинь мне на мыло небольшую dbf-ку кот. глючит и стукни в ПМ (я на мыло не часто хожу). Я гляну.
А так с лету можно только предположить что в числовое поле каким-то макаром попал символ.
Добавлено @ 06:42
И еще укажи версию файла.
А в Database Desktop пробовал открывать? Ругается, нет?
PM   Вверх
Dr.Drunk
Дата 20.1.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 12.1.2004
Где: Волжский

Репутация: нет
Всего: нет



ТоляМБА, самое смешное, что после этой ошибки таблицу он открывает.

Database Desktop не пробовал.

Версия скорее всего 3.

Это сообщение отредактировал(а) Dr.Drunk - 20.1.2006, 07:57
--------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why!
PM MAIL WWW ICQ   Вверх
ТоляМБА
Дата 20.1.2006, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Цитата(ТоляМБА @ 20.1.2006, 06:40 Найти цитируемый пост)
Кинь мне на мыло небольшую dbf-ку кот. глючит и стукни в ПМ
Дык почему у меня мыло-то пустое??? Я бы у себя посмотрел - если у меня не будет глючить будем дальше разбираться.
Добавлено @ 08:15
Цитата(Dr.Drunk @ 20.1.2006, 07:56 Найти цитируемый пост)
Database Desktop не пробовал.
Почему? Это так долго? Или ты ее снес?
PM   Вверх
SergeBS
Дата 20.1.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



Dr.Drunk
1. Проверь на наличие Memo-полей и файлов тоже.
2. Через ADO работать с dbf - иметь некислые тормоза и кучу проблем. Причины - в архитектуре. ADO всегда работает через SQL-запросы. Лучше возьми что-либо типа TDbf/Halcyon. Это IMO правильное решение проблемы.
PM MAIL   Вверх
ТоляМБА
Дата 20.1.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Вот если бы ты попробовал сразу открыть через Database Desktop, то увидел предупреждение: ‘Production index file missing, corrupt or cannot interpret index key’ что означает примерно следующее: ‘данная табла содержит индекс но ему писец или нет файла с индексом’. dBase хранит индексы в файлах с расширениями .mdx или .ndx (в зависимости от вида индекса) имя индексного файла такое же как у dbf-файла.
1-й выход правильный и быстрый:
1-й вариант (если нужны индексы) копируй индексные файлы с машины на которой брал .dbf
2-й вариант (если индексы не нужны) при выгрузке из 1С если это возможно укажи, чтоб индексы не выгружались (если такая фича там есть – я в глаза не видел 1С) и проверь будет ли ругаться Дэлфя.
2-й выход геморройный и долгий (если файлов много, но обработать их нужно только один раз и 1-й выход невозможен):
При открытии через Database Desktop при выходе предупреждения нужно выбрать ‘Open and Detach’, чтобы она убила индекс (только не знаю надо потом пересохранять или нет).
3-й выход (если 1-й не возможен а 2-й не подходит) написать прогу, которая будет убивать индексы.
Кстати, у меня 6-я Делфя и при коннекте она сразу выдала мне сообщение ‘[Microsoft] [Драйвер ODBC dBase] Индекс не найден’ и открыть таблу так и не дала. Но когда я убил индекса через Database Desktop табла открывалась без проблем.
Теперь по кодировке: ни какой прогой кроме Microsoft Visual FoxPro 6.0 я не смог прочитать что там написано, а в Фоксе указал кодировку Windows Russian и всё прочитал.
И еще вопрос не по теме: это по приколу цифирь в чарах хранить? Ну ладно в других полях могут быть и буквы и цифирь, но не в ID же.
Добавлено @ 09:55
Кстати Database Desktop пишет версию dBase IV
PM   Вверх
Dr.Drunk
Дата 20.1.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 12.1.2004
Где: Волжский

Репутация: нет
Всего: нет



ТоляМБА, это вопрос уже к 1Сникам, скорее всего там в конфигураторе выбирается что хранить число или чар, вот они и не стали заморачиваться.

Так не хотелось с индексами заморачиваться придется.

Database Desktop не разу не пользвался, поэтому и мучаюсь smile

Это сообщение отредактировал(а) Dr.Drunk - 20.1.2006, 10:29
--------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why!
PM MAIL WWW ICQ   Вверх
bas
Дата 20.1.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: 1
Всего: 2



Цитата(ТоляМБА @ 20.1.2006, 09:53 Найти цитируемый пост)

dBase хранит индексы в файлах с расширениями .mdx или .ndx

C mdx полностью согласен. Но с .ndx можно даже и не думать, в хидере dbf об этом индексе никаих упоминаний нет.
Добавлено @ 10:19
Цитата(Dr.Drunk @ 20.1.2006, 10:12 Найти цитируемый пост)

Database Desktop не разу не пользвался

И не пользуйся - вредная штука.
PM MAIL   Вверх
Dr.Drunk
Дата 20.1.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 12.1.2004
Где: Волжский

Репутация: нет
Всего: нет



ТоляМБА, да с индексом промашка вышла, щас скину smile проверил в DD открывает, а в делфях на отладке все равно глюк smile

ADOTemp.ConnectionString:=Provider=MSDASQL.1;Persist Security Info=False;Data Source=Файлы dBASE;Mode=ReadWrite

при смене на dBase ODBC ошибка остается.

Вот код
Код

procedure TForm1.mnOpenClick(Sender: TObject);
var
    Name    : String;
    Patch   : String;
  PosDot  : Integer;
begin
  ADOTemp.Active:=False;
  if ODial.Execute() then
  begin
        PosDot:=LastDelimiter('\\',ODial.FileName);
        Name:=Copy(ODial.FileName, PosDot+1, Length(ODial.FileName)-PosDot);
        Patch:=Copy(ODial.FileName, 1, PosDot-1);

        ADOTemp.TableName:=Name;
        ADOTemp.Active:=True;  //после этого ошибка

        SB.Panels.Items[1].Text:= ODial.FileName;
    end;
end;


Это сообщение отредактировал(а) Dr.Drunk - 20.1.2006, 10:27
--------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why!
PM MAIL WWW ICQ   Вверх
ТоляМБА
Дата 20.1.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Dr.Drunk Вот ты скинул индексный файл и я сразу все понял (правда тебе от этого легче не будет smile )
CDX - это расширение индексных файлов FOX (FoxPro или FoxBase - точно не знаю). Поэтому то в фоксе у меня кодировка нормально и прочиталась. Жаль только я с фоксом не работал и помочь тут не смогу. Единственное только могу сказать: или проси у них dBase-овские файлы или убивай индексы у этих (если для твоей проги они не нужны)
Добавлено @ 12:41
В Дэлфе он файл нормально открывает, правда при попытке изменения ругается что нет индексного файла для dBase а в Обджект инспекторе в списке индексных файлов естественно пусто.
PM   Вверх
Dr.Drunk
Дата 20.1.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 12.1.2004
Где: Волжский

Репутация: нет
Всего: нет



ТоляМБА, спасибо, буду индексы бить, они особо не нужны )))
--------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why!
PM MAIL WWW ICQ   Вверх
ТоляМБА
Дата 20.1.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Через BDE пробовал убить с помощью SQL - отлично убиваются.
ЗЫ. Кстати в BDE и с кодировкой всё Ок!
PM   Вверх
Dr.Drunk
Дата 24.1.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 12.1.2004
Где: Волжский

Репутация: нет
Всего: нет



ТоляМБА, BDE - это конечно хорошо. Но мне хочется через OLE сделать, чтобы потом с БДЕ не носиться smile по разным машинам

Это сообщение отредактировал(а) Dr.Drunk - 24.1.2006, 10:04
--------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why!
PM MAIL WWW ICQ   Вверх
bas
Дата 24.1.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: 1
Всего: 2



Dr.Drunk
Убивать индексы и не надо просто используй вместо драйвера DBase- Microsoft Dbase VFP or Microsoft FoxPro VFP

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.