Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-78231
ruslan_as
2002-10-01 17:46
2002.10.24
Как включить событие OnCalcFields


1-78388
Дмитрий К.К.
2002-10-15 11:08
2002.10.24
Как программно скопировать один объект в другой?


1-78501
Ender
2002-10-13 16:32
2002.10.24
Динамическая память


3-78312
Explorer
2002-10-02 14:55
2002.10.24
Выгрузка данных MSSQL в файл *.txt


14-78595
cyborg
2002-09-29 22:52
2002.10.24
---|Ветка была без названия|---





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский