![]() |
|
|
![]()
|
|
| Programister0 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
немогу создать нормальные dbf файлы
пробовал пример и bildera с TTable вроде создает таблицу но файла нет
код работает но файла нет! (никогда неповторяюсь неповторяюсь) пробовал с помощью ADO
таблица создается нормально но проблема в числовых полях numeric размером 20,5 необходимо задать размер ЧИСЛОВОГО ПОЛЯ я пробовал : numeric(n,m) numeric(n) - ошибка в запросе ! может изначально ошибка в ConnectionString или опять вернуться к TTable? |
||||
|
|||||
| mutex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 17.10.2004 Репутация: 1 Всего: 3 |
Попробуйте использовать VFP OLE DB Provider (скачайте от Микрософт) и определения полей на языке Visual FoxPro.
Строка соединения может выглядеть так: Provider=VFPOLEDB.1;Data Source=C:\DBFTEST\;Mode=ReadWrite;User ID="";Password="";Collating Sequence=MACHINE;DSN="" Определение структуры таблицы (файла TEST.DBF) так: CREATE TABLE TEST ( FCHAR C(20), FNUM N(10,3), FDATE D, FDATETIME T, FINTEGER I, FLOGIC L, FMEMO M(4) ) Этот SQL оператор можно выполнять через метод Execute Вашего соединения. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Да, коннектимся через VFP провайдер, кидаем AdoQuery и в нём пишем запрос на создание таблицы. На дельфи я делал именно так.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| mutex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 17.10.2004 Репутация: 1 Всего: 3 |
Если на Дельфи код работает, в чем же проблема на Билдере?
|
|||
|
||||
| Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
mutex ты следишь за мной
я сразу и недогнал что ты имел ввиду, пока не вспомнил про dat файлы. ответ: нет ни какого кода(ни в делфи не в билдере), в этом я полуторный ЛАМО есть только компоненты из bildera с которыми я немогу разобрваться т.к. компоненты bildera и delphi одинаковы(почти) я искал ответы и в разделе delphi как выбирать записи из dbf это понятно, как получить их из dat незнаю! сейчас проблема была в том как коректно создавать эти самые dbf-ки спасибо за совет с VFP OLE DB Provider все нормально засвистело - теперь числовые поля нужного размера получаются! тема закрыта! еще раз спасибо. |
|||
|
||||
| Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
блин опять не так,
таблицы создаются нормально и поля нужного размера но выбирать и добавлять записи можно ТОЛЬКО с помощью того-же ADOTable и ADOQuaery другие программы либо выдают лишнее поле типа _NullFlags размером 1 и типом соседнего поля либо вообще не открывают TTable работать с такими файлами отказывается говорит типа: "Corrupt table/index header" Ещё скачал компоненты degisy data с помощью DsDBF создавал таблицы которые нормально работают везде, но опять появилась проблема с указанием размера поля (например numeric(8,4)) создаваемой таблицы там размер указывается только для строк! может кто то работал с этим компонентом - как размер прописать? или может в ConnectionString для ADO что то не так я пишу: Provider=VFPOLEDB.1;Data Source=.;Mode=ReadWrite;User ID="";Password="";Collating Sequence=MACHINE;DSN="" |
|||
|
||||
| mutex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 17.10.2004 Репутация: 1 Всего: 3 |
Чтобы не было поля _NullFlags, попробуйте добавить фразу "NOT NULL" (без кавычек) в определениях строковых полей - типа "C" (Character).
TTable использует BDE. BDE не умеет распознавать DBF-файлы, имеющие VFP-формат. ADO считается более продвинутой технологией, чем устаревший BDE. Следовательно, работайте спокойно через ADO. Можете в ADO ConnectionString попробовать изменить параметр Collating Sequence на: Collating Sequence=RUSSIAN если только VFP-провайдер найдет русскую последовательность сортировки. Это должно дать независимость от регистра-высоты кириллических букв. PS. Чем же не устраивает TADODataset? Если что непонятно, спросите. PPS. Я не встречал ни одного готового компонента, который корректно работает с кириллическими индексами, а также предоставляет возможность полного управления DBF-файлами. Это сообщение отредактировал(а) mutex - 8.7.2007, 14:07 |
|||
|
||||
| Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
В ADO простой запрос
SELECT * FROM TB где в TB ~30,000 записей выполняется 0,3 сек. в DBE тоже самое за 0,2 сек. а есть таблицы где ещё больше записей (но там нет счетчика т.к. редко загр-ся) ещё драйвер ado какойто работает от в зависимости от "погоды" то нормально то "cannot load driver" перезапускаю проект опять нормально. и видимо этот VFP OLE DB Provider должен быть на машинах где будут использоваться его dbf-ки, что возможно будет накладно. |
|||
|
||||
| mutex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 17.10.2004 Репутация: 1 Всего: 3 |
С оптимизацией, конечно, надо разбираться. По умолчанию ADO просчитывает всю таблицу сразу в память. Поэкспериментируйте свойствами BlockReadSize, CacheSize и MaxRecords.
Видимо, BDE читает только начальные записи таблицы, чтобы заполнить сетку-грид, а потом делает подкачку по необходимости. Кстати, если хотите остаться в среде BDE, воспользуйтесь компонентами Halcyon, где можно создавать DBF-файлы для Dbase3 или Dbase4. Провайдер VFP надо ставить везде, но BDE - тоже ведь надо. Причем размеры BDE больше. > то "cannot load driver" перезапускаю проект опять нормально Что-то установлено криво. Переустановите MDAC и VFP провайдер. В моей практике провайдер пока что не подводил меня. |
|||
|
||||
| Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
действительно если прописывать not null для всех полей _NullFlags пропадает и
TTable нормально с ними работает, благодарю за совет. и на счет BDE тоже верно ща буду эксперементировать со скоростью ADO может тогда все компоненты и поменяю. |
|||
|
||||
| Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
нет ADO однозначно медленнее BDE.
компоненты Halcyon - для Buildera я не нашел, только для делфи! если есть такие дай ссылочку. |
|||
|
||||
| mutex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 17.10.2004 Репутация: 1 Всего: 3 |
Halcyon сделан на Паскале. Но, он должен установиться под Билдером. У Вас какая версия Билдера?
|
|||
|
||||
| Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
BCB 6
скачал hlcn696 пробовал ставить он требует package а там вообще нет файлов с расширением bpk. пробовал чегото самостоятельно наваять невыходит. |
|||
|
||||
| mutex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 17.10.2004 Репутация: 1 Всего: 3 |
И сдался же этот Блиндер.
Попробуйте так: 1. создать пакет *.bpk (меню File/New/Other потом package) 2. сохранить его под именем Halcyuon6 2. включить туда все *.pas файлы из Дельфийского dpk-файла 3. в опциях проекта пакета отключить все флаги из Pascal/Messages 4. добавить путь $(BCB)\Source\ToolsApi в Library Path через Tools/Environment Options/Library |
|||
|
||||
| Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
спасибо mutex,
с твоей помощью и терпением удалось установить компонент. извиняюсь за долгое молчание - трафик кончился. вообще щас вроде с ADO подружился теперь там ковыряюсь т.к. мне кажется там можно более сложные запросы выполнять чем в BDE. |
|||
|
||||
![]()
|
| Правила форума "C++: Базы данных" | |
|
|
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах. Благодарим за понимание. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Базы данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |