Форум: "Базы";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизИмя таблицы = 8 символов Найти похожие ветки
← →
TTCustomDelphiMaster (2002-10-02 17:23) [0]Здравствуйте, Уважаемые коллеги.
Сегодня столкнулся с проблеммой, но для ее решения не хватает теоретических знаний, а для их получения - времени.
Вообщем работаю с 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();
Заранее спасибо за ответы.
← →
TTCustomDelphiMaster (2002-10-02 18:52) [1]Ну хоть какую нибудь мысль. А?
← →
MsGuns (2002-10-02 22:41) [2]Во-первых, а почему, собственно 8 символов ?. Это что, передается затем в DOS ?
Во вторых, когда-то сталкивался с подобной проблемой, когда надо было часто сохранять кучу мааааленьких файлов с произвольными, но РАЗНЫМИ, именами.
Решил ее с помощью каталогов. Пример, имя создаваемого каталога - DDMMGGxx (год, месяц, число), а внутри типа по времени. 8 символов для отображения ччммсс хватает
← →
TTCustomDelphiMaster (2002-10-02 22:57) [3]Поясняю
Мне нужно создать файл vd02100301.dbf
Я делаю td.Create("v1234567890");
Получается файл vd021003.dbf , т.е. CDaoTableDef при создании новой таблицы почему то обрезает имя файла.
Альтернативные варианты не принимаются, т.к. если не удастся реализовать то что я задумал у меня уже есть 2 запасных варианта (но они маленько кривоваты, т.е. могут вызвать проблемы при определенных обстоятельствах).
Кардинальные изменения так же не допустимы, т.к. этот код является частью большого проекта, а у меня есть исходники только этой dll.
← →
MsGuns (2002-10-02 22:59) [4]>TTCustomDelphiMaster © (02.10.02 22:57)
Сочувстую. Сопереживаю. Желаю успеха
← →
Jeer (2002-10-02 23:00) [5]Создай "tmp.dbf"
Затем файловой операцией Rename
Затем td.Ореn(NewName)
← →
TTCustomDelphiMaster (2002-10-02 23:14) [6]Jeer © (02.10.02 23:00)
А вот это я как раз упустил. Надо попробовать. Хотя думаю, что шансы не большие. Но все равно спасибо.
← →
TTCustomDelphiMaster (2002-10-03 05:17) [7]Я тут подумал, не плоучится то что советует Jeer.
Кто работал с CDaoTableDef помогите.
← →
Max Zyuzin (2002-10-03 10:10) [8]Скорее всего все закопано в том, что dBase старый формат, созданный еще под DOS, а там как известно ограничение на имя файла - 8 символов (+ 3 на расширенее).
Как помочь? А почему Вы выбрали именно dBase? Может что поновее использовать?
← →
NickBat (2002-10-03 10:44) [9]Дело в том, что старый dBase формат не поддерживает длинные имена файлов. Если попробывать через досовский Фокс открыть файл с длинным именем он его обрезает с тильдой. А при сохранении в файл с длинным именем просто оставляет первые восемь символов. Так, что тут подойдет совет Jeer.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c