Открытие DBF файла ....

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Открытие DBF файла ....

Сообщение shady » 09.07.2007 (Пн) 9:27

Добрый день.
Пытаюсь открыть DAO Recordset
Код: Выделить всё
Set rsDBF = DBFBase.OpenRecordset(strFileName, dbOpenTable)

Где strFileName = "D1231222_2.DBF"
Jet упортно пытается открывать D1231222.DBF, убирая префикс _2.
Подскажите, неужели нельзя этого избежать?

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 09.07.2007 (Пн) 10:07

Поэкспериментировав с именем файла выяснилось что длинна имени файла не может быть более 8ми символов. Надо понимать мою проблему решать придется копированием и переименованием фалов...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.07.2007 (Пн) 10:35

shady писал(а):Поэкспериментировав с именем файла выяснилось что длинна имени файла не может быть более 8ми символов. Надо понимать мою проблему решать придется копированием и переименованием фалов...


Не пробовал с длинными именами, но если дело лишь в этом, то всегда можно подсунуть нечто вроде GetShortPathName.

А есть еще OLEDB провайдер от FoxPro - он вроде работает покорректней... Ну и лучше ADO пользовать...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 09.07.2007 (Пн) 10:47

В ADO таже ситуация, даже если сначала задавать рабочую дирректорию а потом открывать файлы через обычный SELECT

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 09.07.2007 (Пн) 13:43

Andrey Fedorov писал(а):Не пробовал с длинными именами, но если дело лишь в этом, то всегда можно подсунуть нечто вроде GetShortPathName.

Возможно, но это куда сложнее чем FileCopy :)

Andrey Fedorov писал(а):А есть еще OLEDB провайдер от FoxPro - он вроде работает покорректней...

Неа. Он с CP866 знаться вообще не желает.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.07.2007 (Пн) 15:20

shady писал(а):
Andrey Fedorov писал(а):А есть еще OLEDB провайдер от FoxPro - он вроде работает покорректней...

Неа. Он с CP866 знаться вообще не желает.


Отлично работает с OEM и ANSI кодировками.
Я как раз на днях с ним игрался...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.07.2007 (Пн) 15:32

Гы... Сейчас попробовал - на рабочей машинке у меня и так работает нормально:

Код: Выделить всё
    Set cn = New ADODB.Connection
    cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    cn.Open "Data Source=" & sPath & ";Extended Properties=dBASE IV"
    ' OEM
    cn.Execute "CREATE TABLE tbOEM_23_456 (t TEXT(50))"
    cn.Execute "INSERT INTO tbOEM_23_456 (t) VALUES ('Проверочка 1 OEM')"
    r.Open "SELECT * FROM tbOEM_23_456", cn, adOpenStatic, adLockReadOnly
    Debug.Print r(0)
    r.Close
    cn.Close
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 91

    TopList