![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Имя таблицы = 8 символов [dBase, FoxPro]
TTCustomDelphiMaster © (2002-10-02 17:23:00)Здравствуйте, Уважаемые коллеги.
Сегодня столкнулся с проблеммой, но для ее решения не хватает теоретических знаний, а для их получения - времени.
Вообщем работаю с dbf через DAO. Нужно создать таблицу с именем v1234567890 (имя файла v1234567890.dbf), но создается таблица с именем V1234567 (имя файла V1234567.dbf). Т.е. имя файла обрезается до 8 символов. Как создать таблицу у которой длина имени больше 8 символов?
Вот кусочки кода, которые может что-то прояснят (извеняюсь, но код на VC):
CDaoDatabase * m_pDbf;
CDaoRecordset * m_pSet;
...
CString sConnect;
TRY
{
m_pDbf = new CDaoDatabase();
sConnect.Format( "dBASE IV; DATABASE=%s", m_NevaCfg.GetDbfPath() );
m_pDbf->Open(_T(""), FALSE, FALSE, sConnect );
m_pSet = new CDaoRecordset( m_pDbf );
}
...
CString sFieldName;
CFileFind ff;
CDaoTableDef td(m_pDbf);
td.Create( "v1234567890");
td.CreateField( _T("DAT"), dbDate, 8 );
td.CreateField( _T("TIM"), dbText, 8 );
for (i = 1; i <= m_NevaCfg.GetAnalogsNum( nMPC ); i++)
{
sFieldName.Format( "CH%d", i );
td.CreateField( sFieldName, dbSingle, 4 );
}
td.Append();
td.Close();
Заранее спасибо за ответы.
NickBat (2002-10-03 10:44:00) [1]Дело в том, что старый dBase формат не поддерживает длинные имена файлов. Если попробывать через досовский Фокс открыть файл с длинным именем он его обрезает с тильдой. А при сохранении в файл с длинным именем просто оставляет первые восемь символов. Так, что тут подойдет совет Jeer.
Max Zyuzin (2002-10-03 10:10:00) [2]Скорее всего все закопано в том, что dBase старый формат, созданный еще под DOS, а там как известно ограничение на имя файла - 8 символов (+ 3 на расширенее).
Как помочь? А почему Вы выбрали именно dBase? Может что поновее использовать?
TTCustomDelphiMaster (2002-10-03 05:17:00) [3]Я тут подумал, не плоучится то что советует Jeer.
Кто работал с CDaoTableDef помогите.
TTCustomDelphiMaster (2002-10-02 23:14:00) [4]Jeer © (02.10.02 23:00)
А вот это я как раз упустил. Надо попробовать. Хотя думаю, что шансы не большие. Но все равно спасибо.
Jeer (2002-10-02 23:00:00) [5]Создай "tmp.dbf"
Затем файловой операцией Rename
Затем td.Ореn(NewName)
MsGuns (2002-10-02 22:59:00) [6]>TTCustomDelphiMaster © (02.10.02 22:57)
Сочувстую. Сопереживаю. Желаю успеха
TTCustomDelphiMaster (2002-10-02 22:57:00) [7]Поясняю
Мне нужно создать файл vd02100301.dbf
Я делаю td.Create("v1234567890");
Получается файл vd021003.dbf , т.е. CDaoTableDef при создании новой таблицы почему то обрезает имя файла.
Альтернативные варианты не принимаются, т.к. если не удастся реализовать то что я задумал у меня уже есть 2 запасных варианта (но они маленько кривоваты, т.е. могут вызвать проблемы при определенных обстоятельствах).
Кардинальные изменения так же не допустимы, т.к. этот код является частью большого проекта, а у меня есть исходники только этой dll.
MsGuns (2002-10-02 22:41:00) [8]Во-первых, а почему, собственно 8 символов ?. Это что, передается затем в DOS ?
Во вторых, когда-то сталкивался с подобной проблемой, когда надо было часто сохранять кучу мааааленьких файлов с произвольными, но РАЗНЫМИ, именами.
Решил ее с помощью каталогов. Пример, имя создаваемого каталога - DDMMGGxx (год, месяц, число), а внутри типа по времени. 8 символов для отображения ччммсс хватает
TTCustomDelphiMaster (2002-10-02 18:52:00) [9]Ну хоть какую нибудь мысль. А?