powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Доступ к dbf через VB
11 сообщений из 11, страница 1 из 1
Доступ к dbf через VB
    #33670149
nightshine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно работать с базой на FoxPro 2.6. Выбор языка еще не сделал (либо VB6, либо VB.NET). Что по вашему лучше, в смысле удобнее для работы. Круг задач таков: считать инфу из одной базы и слить в другую, по возможности разрешая коллизи.

Еще раз переформулирую вопрос: чем удобнее решить поставленные задачи (время работы не критично)

Большое спасибо всем ответившим за помощь, я с FoxPro раньше не сталкивался вообще, не говоря уже о FoxPro 2.6 и с dbf файлами не работал.
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33675411
nightshine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну ответьте кто-нибудь, горю!!! Хоть где искать подскажите, хоть примерно!!!
Может вопрос не понятно сформулировал, так скажите что хоть непонятно! Неужели никто ничего сказать не может???
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33675817
aleksey2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно у самого возникла необходимость работать с DBF (fox pro 2.6)
сначала начал на VB6, потом перешёл на VB.NET из за гемора с инсталлятором VB6.
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33675893
nightshine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно поподробнее, как подключаешься? Как записи тянешь? На куче форумов задавал вопрос, никто не отвечает. Тема актуальна, напиши поподробнее плиз. Всем пригодится!!!
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33675965
aleksey2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем на VB.NET (VS 2003) всё выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim oleConnect As New OleDb.OleDbConnection
Dim oleCommanda As New OleDb.OleDbCommand

            oleConnect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurDir() & ";Extended Properties=dBASE IV;User ID=Admin;Password="
            oleCommanda.Connection = oleConnect
            'коннекшн стринг указали, а дальше простым SQL делаем что нужно:
            'в данном случае я создаю таблицу с именем pro...
            oleCommanda.CommandType = CommandType.Text
            oleCommanda.CommandText = "CREATE TABLE pro (tabn CHARACTER(4), VO CHARACTER(2), VO_V CHARACTER(2), DATO CHARACTER(7), SHIFR CHARACTER(8), DNI NUMERIC(3,0), tim NUMERIC(7), 'sum' NUMERIC(13), DAT_DOC DATE)"
            oleConnect.Open()
            oleCommanda.ExecuteNonQuery()
            oleConnect.Close()
            MessageBox.Show("Таблица создана.", "Экспорт данных")

кстати connection strings берём отсюда
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33678014
nightshine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за пример, буду пробовать! Только вот вопрос, это подключение ко всей базе, а как к одной таблице? Вот если я например хочу к одной таблице базы данных подключиться и из нее все выкачать? Или например к двум таблицам? Т.е. в базе штук 10 таблиц ... а я хочу инфу из 2ух выкачать. Можно как-то цепляться только к определенному числу таблиц?
Еще вопрос, если там в одном каталоге 2 базы лежит к какой он зацепиться? Ты же только путь указываешь, а название самой базы как-то нужно указывать?
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33678202
aleksey2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nightshineСпасибо за пример, буду пробовать! Только вот вопрос, это подключение ко всей базе, а как к одной таблице? Вот если я например хочу к одной таблице базы данных подключиться и из нее все выкачать? Или например к двум таблицам? Т.е. в базе штук 10 таблиц ... а я хочу инфу из 2ух выкачать. Можно как-то цепляться только к определенному числу таблиц?



К таблицам цепляться не надо, цепляться нужно к базе, а уже после этого проводить операции с таблицами например выбрать всё: "SELECT * FROM your_table"

nightshine
Еще вопрос, если там в одном каталоге 2 базы лежит к какой он зацепиться? Ты же только путь указываешь, а название самой базы как-то нужно указывать?

В каталоге не может лежать две базы, *.dbf это не база - это таблица, а база это сам каталог.

В случае когда в каталоге лежит ещё один каталог с файлами *.dbf то ты сможешь работать только с таблицами того каталога, который указан у тебя в connectionstring. С таблицами из подкаталога ты работать не сможешь, для этого нужно будет цепляться непосредственно к самому вложенному каталогу.
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33685752
nightshine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое, все, что хотел узнал! Еще вот есть вопрос:
может ли быть такое, что когда я считываю из dbf файла, то часть данных отображается, как пустая, хотя на самомо деле данные не там есть, адекватные. Если может, как с этим бороться. Вопрос вызван тем, что ситая поле типа Date (или аналог, не знаю как в FoxPro называется) там считываются одни нули через ":". Я и не знаю, то ли там не заполненная база, толи я что не так делаю!
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33687372
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nightshineСпасибо большое, все, что хотел узнал! Еще вот есть вопрос:
может ли быть такое, что когда я считываю из dbf файла, то часть данных отображается, как пустая, хотя на самомо деле данные не там есть, адекватные. Если может, как с этим бороться. Вопрос вызван тем, что ситая поле типа Date (или аналог, не знаю как в FoxPro называется) там считываются одни нули через ":". Я и не знаю, то ли там не заполненная база, толи я что не так делаю!
Если все правильно делать, то такого не бывает...

В FoxPro есть тип данных дата - если он пустой, то в зависимости от установок может быть по разному... Можете просмотреть в просмотрщике DBF этот файл или в FoxPro, чтобы убедиться, что там нет данных или выложить тут если файл небольшой и мы уж тут посмотрим
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33700791
nightshine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код. Пытаюсь считать данные из базы. в результате кидает эксепшен:
Непредвиденная ошибка драйвера внешней базы данных (8715). Причем это если скопировать файлы с индексами .CDX. Без них выдает другой эксепшен: Индекс не найден. Скажите как с этим бороться, потому что я думал заработает, а сейчас проверил, даже данные выходит не могу считать!!!

Dim oleConnect As New OleDb.OleDbConnection
Dim oleCommanda As New OleDb.OleDbCommand
Dim oleReader As System.Data.OleDb.OleDbDataReader
Dim Path As String = "Здесь прописан путь к базе"
Dim adapter As OleDbDataAdapter
Dim ds As New DataSet
Try
oleConnect.ConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=dBASE IV;User ID=Admin;Password=", Path.ToString)
oleCommanda.Connection = oleConnect
oleCommanda.CommandType = CommandType.Text
oleCommanda.CommandText = "SELECT * FROM MyTable"
adapter = New OleDbDataAdapter(oleCommanda)
oleConnect.Open()
adapter.Fill(ds, "MyTable")
oleConnect.Close()
MessageBox.Show(ds.Tables.Item(0).Columns.Item(0).ToString)
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
If Not oleConnect Is Nothing Then
If oleConnect.State <> ConnectionState.Closed Then
oleConnect.Close()
End If
End If
End Try


MessageBox.Show("Таблица создана.", "Экспорт данных")
...
Рейтинг: 0 / 0
Доступ к dbf через VB
    #33708911
nightshine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вся проблема в том, что нужно добавить в реестр параметр в раздел
HKEY_LOCAL_MACHINE ->Software -> Microsoft -> Jet-> 4.0 -> Engines -> XBase
параметр BDE типа DWORD со значением 2.
К сожалению это не решило проблемы у меня, ведь JET не работает с таблицей dbf (по крайней мере фокс про 2.6), если там есть хоть одно МЕМО поле. Сейчас использую VFPOLEDB.1 провайдер. Пока проблем не обнаружил. JET тоже работает замечательно, если нет МЕМО полей. Как только все сделаю отпишусь, если обнаружу еще какие-нибудь подводные камни. Код для работы с dbf-ками выложу через обоих провайдеров.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Доступ к dbf через VB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]