| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > как подключиться к dbc? |
| Автор: Gunslinger 3.10.2008, 13:57 | ||
| База на 9ке, ссылка на драйвер есть. Дали ссылку на строку, но не проверял:
Тут возникают вопросы: 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. Как мне все это объединить: как обращаться к драйверу, нужно ли проводить какие-нибудь изменения в винде? Про дрова к БД знаю только, что это посредник. |
| Автор: Gunslinger 4.10.2008, 16:22 | ||
1.
После изменения свойства Connected на true пишет ошибку Invalid Enum Value. И теперь даже компонент не удалить. 2. До ошибки ADOConnection нормально компилировалось. БД подключилась или нет? Как проверить? |
| Автор: Данкинг 4.10.2008, 16:47 | ||
Ну вот какая строка у меня получилась:
|
| Автор: Gunslinger 4.10.2008, 17:43 | ||
Данкинг, подробнее:
Теперь при компилирование лезет ошибка Invalid Enum Value. Ecли Connected не выставлять, то все нормально. + по строке ConnectionString тест проходит success. |
| Автор: Gunslinger 4.10.2008, 18:18 | ||
| Сейчас другая ошибка: Project1 Project1.exe raised exception class EOleException with message 'Invalid path or file name ' Фигня творится. Более полный код:
|
| Автор: Данкинг 4.10.2008, 18:27 |
| Не пойму: ты к чему подключиться хочешь? Какая связь файлов .dbc и Excel ? К тому же учти, что FoxPro не любит пробелов в пути к базе/таблице, т.е. из "C:\Program Files" - заведомо открываться не будет. |
| Автор: Данкинг 4.10.2008, 20:00 | ||||
В каком смысле? Если ты пробелы удалишь, то тогда вообще путь к файлу исчезнет. А почему не .dbf ? .dbc - это БД, а экспорт же из конкретной таблицы происходить должен. Вероятно, из-за этого: в твоей БД нет таблиц.
Не знаю, не пробовал, я всегда юзал ADO, и не думаю, что от дбЭкспресс что-то изменится. Правда, я на Дельфи пишу, но суть та же. Добавлено @ 20:01 Да, есть такой глюк: создай пустой файл aaa.dbc, напиши в нём "бугога" и попробуй к нему подключиться - тоже будет success. |
| Автор: Gunslinger 5.10.2008, 08:19 | ||||
Ты пример с Program Files приводил. Или ты про дополнительные ненужные пробелы?
В таблицах есть индексы и ключи. Я думал, что dbc возьмет на себя их генерацию и проверку целостности, чтоб мне программно все это не писать. Тогда в ADO при выборе между dbc и free table нужно выбирать последнее? Опять же, как быть с генерацией индексов и ключей? Таблицы есть. |
| Автор: Данкинг 5.10.2008, 10:55 | ||
Это я из твоего примера взял.
Я всегда подключался к конкретной таблице, т.е. как подключаться к DBC в целом (кроме того, что указать в строке подключения "Database") - не в курсе, надо экспериментировать (впрочем, видимо, так же). Соответственно, индексы мне тоже не были нужны никогда, собственно, и не знаю, как их из ADO можно использовать и можно ли вообще. В общем, попробуй сначала кинуть файлы в папку, не содержащую пробелов в пути к себе. |
| Автор: Gunslinger 5.10.2008, 13:28 | ||
Кинул в D:\AutoConv\DBC\ Ошибка таже: Project1 Project1.exe raised exception class EOleException with message 'Invalid path or file name ' Может что-нибудь с драйвером? Или не в Form1 нужно было писать? Перменная со строкой провайдера - как глобальная, инициальизация в Form1. Если нужен код - выложу, там чуть-чуть. |
| Автор: Данкинг 5.10.2008, 13:34 |
Ну так выложи, посмотрим... |
| Автор: Gunslinger 5.10.2008, 14:10 |
| Приложил. Закомментированная глобальная переменная ConnectBase - строка провайдера. Там же база к которой не получается подключиться. В Form1 закомментирована сторока проверки соединения из за которой лезет ошибка. |
| Автор: Данкинг 5.10.2008, 14:30 | ||
Поробовал подключиться к твоей БД. Вот моя строка подключения:
Всё работает отлично, и даже данные из AdoTable выводятся (т.е. из Everithing.dbf). Попробуй не программно, а вручную создать строку подключения и поставить active у AdoConnection. Ошибки быть не должно. |
| Автор: Gunslinger 5.10.2008, 14:40 |
Не нашел. Это случаем не дельфийская штука? |
| Автор: Gunslinger 5.10.2008, 15:38 |
| ты в билдере делал? |
| Автор: Gunslinger 5.10.2008, 16:06 |
| Создал новый чистый проект. Добавил только ADOConnection. Строку подключения прописал сразу, Connected=true поставил программно. Прога запустилась, ошибок нет. Мне очень желательна возможность менять местоположение базы. Как мне быть? |
| Автор: Данкинг 5.10.2008, 16:58 |
| Я в Дельфи делал, билдер я снёс давно уже. Но ADO же един для всех. |
| Автор: Gunslinger 5.10.2008, 21:55 |
| Может из-за типа: слеш двойной может ставить надо вместо одинарного? Имя файла верное: без спецсимволов, пробелов, длина - меньше 8. Мой пример заработал сразу или ты что-нибудь менял? |
| Автор: Данкинг 5.10.2008, 22:01 | ||
В смысле - я же говорю, билдера у меня нет, но в коде я лично ошибок таких вот явных не вижу. А подключение нормально заработало, только я, соответственно, в каталог без пробелов скопировал базу. Добавлено через 1 минуту и 5 секунд
Попробуй, может, и так, кстати, я уж синтаксис С так досконально не помню. |
| Автор: Gunslinger 6.10.2008, 10:34 |
| все равно ошибку выдает. Ссылается на файл проекта Application->Run(); Добирусь до дома - попробую на делфи. |
| Автор: Gunslinger 10.10.2008, 10:06 |
| Все-таки дело было в слешах. Невнимательно смотрел строку, когда дублировал. Спасибо за помощь! Добавлено через 14 секунд закрыл |