Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как подключиться к dbc? 
V
    Опции темы
Gunslinger
Дата 3.10.2008, 13:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



База на 9ке, ссылка на драйвер есть.
Дали ссылку на строку, но не проверял:
Код

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
 
Тут возникают вопросы:
1. Путь может меняться через меню (базу можно будет пересохранять в другое место и работать уже по нему). Можно ли передавать в Source переменную?
2. Эксель может быть разный: от 97 до 2007. Можно писать эксел без цифры или придется каждый раз определять, какой эксел на машине, а затем подставлять соответствующую строку?
3. Там еще была альтернативная строка: OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";. В чем разница?
4. Как мне все это объединить: как обращаться к драйверу, нужно ли проводить какие-нибудь изменения в винде? Про дрова к БД знаю только, что это посредник.
PM MAIL   Вверх
Gunslinger
Дата 4.10.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



1.
Код

ADOConnection1->ConnectionString="Provider=VFPOLEDB.1;Data Source=C:\my.dbc;Mode=ReadWrite|Share Deny None; Password="";Collating Sequence=MACHINE";

После изменения свойства Connected на true пишет ошибку Invalid Enum Value. И теперь даже компонент не удалить. 

2. До ошибки ADOConnection нормально компилировалось. БД подключилась или нет? Как проверить?
PM MAIL   Вверх
Данкинг
Дата 4.10.2008, 16:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Ну вот какая строка у меня получилась:
Код

ADOConnection1->ConnectionString="Provider=VFPOLEDB.1;Data Source=D:\aaa.dbc;Password="";Collating Sequence=MACHINE"


Это сообщение отредактировал(а) Данкинг - 4.10.2008, 16:47


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Gunslinger
Дата 4.10.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



Данкинг, подробнее:
Код

AnsiString ConnectBase="Provider=VFPOLEDB.1;Data Source=C:\Program     Files\AutoExporterXlsToDbf\DBC\Budget.dbc;Password="";Collating Sequence=MACHINE";

//............

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  ADOCon->ConnectionString=ConnectBase;
  ADOCon->Connected=true;
}

Теперь при компилирование лезет ошибка Invalid Enum Value. Ecли Connected не выставлять, то все нормально. + по строке ConnectionString тест проходит success.
PM MAIL   Вверх
Gunslinger
Дата 4.10.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



Сейчас другая ошибка:
Project1 Project1.exe raised exception class EOleException with message 'Invalid path or file name '

Фигня творится.
Более полный код:
Код

AnsiString ConnectBase="Provider=VFPOLEDB.1;Data Source=C:\Program Files\AutoExporterXlsToDbf\DBC\Budget.dbc;Password="";Collating Sequence=MACHINE";
Variant myExcel;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
try {
   myExcel = CreateOleObject("Excel.Application");
    } catch(...) {
      Application->MessageBox("Невозможно открыть Microsoft Excel"
      "На вашем компьютере не установлен Microsoft Excel.","Ошибка",MB_OK+MB_ICONERROR);
    }
  myExcel.OlePropertySet("Visible", true);
  ADOCon->ConnectionString=ConnectBase;
 ADOCon->Connected=true;//Ошибка после этой строке

}

PM MAIL   Вверх
Данкинг
Дата 4.10.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Не пойму: ты к чему подключиться хочешь? Какая связь файлов .dbc и Excel ? smile 
К тому же учти, что FoxPro не любит пробелов в пути к базе/таблице, т.е. из "C:\Program     Files" - заведомо открываться не будет.

Это сообщение отредактировал(а) Данкинг - 4.10.2008, 18:30


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Gunslinger
Дата 4.10.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



1. Создаю экземпляр эксела.
2. Открываю в него эксел файл.
3. Подключаюсь к dbc (создал в 9ке)
4. Читаю из эксела - пишу в dbc.

Цитата(Данкинг @  4.10.2008,  18:27 Найти цитируемый пост)
К тому же учти, что FoxPro не любит пробелов в пути к базе/таблице, т.е. из "C:\Program     Files" - заведомо открываться не будет.

Т.е. придется парсить строку с путем к dbc и удалять пробелы между словами? Вот гемор заработал.
Только вот из-за чего эта ошибка с коннектед? Может дбЭкспресс попробовать? Но под него фоксового драйвера в списке нет.

PM MAIL   Вверх
Данкинг
Дата 4.10.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Gunslinger @  4.10.2008,  20:45 Найти цитируемый пост)
Т.е. придется парсить строку с путем к dbc и удалять пробелы между словами?

В каком смысле? Если ты пробелы удалишь, то тогда вообще путь к файлу исчезнет. smile 

Цитата(Gunslinger @  4.10.2008,  20:45 Найти цитируемый пост)
Подключаюсь к dbc (создал в 9ке)

А почему не .dbf ? .dbc - это БД, а экспорт же из конкретной таблицы происходить должен.

Цитата(Gunslinger @  4.10.2008,  20:45 Найти цитируемый пост)
Только вот из-за чего эта ошибка с коннектед?

Вероятно, из-за этого: в твоей БД нет таблиц.

Цитата(Gunslinger @  4.10.2008,  20:45 Найти цитируемый пост)
Может дбЭкспресс попробовать? Но под него фоксового драйвера в списке нет.

Не знаю, не пробовал, я всегда юзал ADO, и не думаю, что от дбЭкспресс что-то изменится. Правда, я на Дельфи пишу, но суть та же.

Добавлено @ 20:01
Цитата(Gunslinger @  4.10.2008,  18:43 Найти цитируемый пост)
 по строке ConnectionString тест проходит success. 

Да, есть такой глюк: создай пустой файл aaa.dbc, напиши в нём "бугога" и попробуй к нему подключиться - тоже  будет success. smile 


Это сообщение отредактировал(а) Данкинг - 4.10.2008, 20:02


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Gunslinger
Дата 5.10.2008, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



Цитата(Данкинг @  4.10.2008,  20:00 Найти цитируемый пост)
В каком смысле? Если ты пробелы удалишь, то тогда вообще путь к файлу исчезнет.

Ты пример с Program Files приводил. Или ты про дополнительные ненужные пробелы?



Цитата(Данкинг @  4.10.2008,  20:00 Найти цитируемый пост)
А почему не .dbf ? .dbc - это БД, а экспорт же из конкретной таблицы происходить должен.

В таблицах есть индексы и ключи. Я думал, что dbc возьмет на себя их генерацию и проверку целостности, чтоб мне программно все это не писать.
Тогда в ADO при выборе между dbc и free table нужно выбирать последнее? Опять же, как быть с генерацией индексов и ключей?

Цитата(Данкинг @  4.10.2008,  20:00 Найти цитируемый пост)
Вероятно, из-за этого: в твоей БД нет таблиц.

Таблицы есть.
PM MAIL   Вверх
Данкинг
Дата 5.10.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Gunslinger @  5.10.2008,  09:19 Найти цитируемый пост)
Ты пример с Program Files приводил.

Это я из твоего примера взял.

Цитата(Gunslinger @  5.10.2008,  09:19 Найти цитируемый пост)
Тогда в ADO при выборе между dbc и free table нужно выбирать последнее? Опять же, как быть с генерацией индексов и ключей?

Я всегда подключался к конкретной таблице, т.е. как подключаться к DBC в целом (кроме того, что указать в строке подключения "Database") - не в курсе, надо экспериментировать (впрочем, видимо, так же). Соответственно, индексы мне тоже не были нужны никогда, собственно, и не знаю, как их из ADO можно использовать и можно ли вообще.
В общем, попробуй сначала кинуть файлы в папку, не содержащую пробелов в пути к себе.






Это сообщение отредактировал(а) Данкинг - 5.10.2008, 10:56


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Gunslinger
Дата 5.10.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



Цитата(Данкинг @  5.10.2008,  10:55 Найти цитируемый пост)
В общем, попробуй сначала кинуть файлы в папку, не содержащую пробелов в пути к себе.

Кинул в D:\AutoConv\DBC\
Ошибка таже: 
Project1 Project1.exe raised exception class EOleException with message 'Invalid path or file name '

Может что-нибудь с драйвером? Или не в Form1 нужно было писать? Перменная со строкой провайдера - как глобальная, инициальизация в Form1. 

Если нужен код - выложу, там чуть-чуть.
PM MAIL   Вверх
Данкинг
Дата 5.10.2008, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Gunslinger @  5.10.2008,  14:28 Найти цитируемый пост)
Если нужен код - выложу, там чуть-чуть. 

Ну так выложи, посмотрим...


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Gunslinger
Дата 5.10.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



Приложил.
Закомментированная глобальная переменная ConnectBase - строка провайдера. Там же база к которой не получается подключиться. 
В Form1 закомментирована сторока проверки соединения из за которой лезет ошибка.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  programm.rar 367,60 Kb
PM MAIL   Вверх
Данкинг
Дата 5.10.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Поробовал подключиться к твоей БД. Вот моя строка подключения:

Код

Provider=VFPOLEDB.1;Data Source=D:\PROGI\PRG\DELPHI\TEST\111\BUDGET.DBC;Mode=Share Deny None;Extended Properties="";User ID="";Password="";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=MACHINE;DSN=""

Всё работает отлично, и даже данные из AdoTable выводятся (т.е. из Everithing.dbf).
 Попробуй не программно, а вручную создать строку подключения и поставить active у AdoConnection. Ошибки быть не должно.

Это сообщение отредактировал(а) Данкинг - 5.10.2008, 14:31


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Gunslinger
Дата 5.10.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

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



Цитата(Данкинг @  5.10.2008,  14:30 Найти цитируемый пост)
active у AdoConnection.

Не нашел. Это случаем не дельфийская штука?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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