TDBF и создание таблицы - ошибки у братьев-славян....
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 13.04.05 16:34
Оценка:
Юзаю TDBF в одном из классов (т.е. компонент брошен не на форму, а в классе динамически создается). Если таблицы не существует — ручками добавляю определения полей и индексов, потом вызываю Avctive = true. TableLevel установлен в 7. Способ создания таблицы — omAutoCreate.

Что самое интересное: получил несколько писем от болгар (привет братьям-славянам ), в которых говорится об ошибке "Не удалось создать пустую базу!". Эта ошибка, собственно, и возникает тогда, когда перехвачен Exception при вызове CreateTable, который, суть, всё одно вызывается, если таблички на диске нету (это я про косвенность вызова Active = true).

Грешу на всяческие Codepage и LanguageID. Беглый просмотр исходников TDBF показал, что вроде как компонент сам разруливает ситуацию с определением кодовых страниц и прочего подобного добра. Мне — так вообще пофигу, какая там локаль: я все текстовые данные держу в Base64.

Пока проблема решилась включением пустой базы в сетап, но чувствую, что это ну просто очень неправильно, т.к. фик его знает, где выплывет косяк на этот раз — база-то создавалась на моей машине, под русской локалью.

Вопрос, собственно, в чем: можно ли как-то дать понять TDBF, что мне наплевать на всяческие локали и пускай он не дурит и просто создаст файлики на диске? И если можно, то где подрихтовать?
Удобный способ просмотра балансов и курсов валют! Специальное предложение для exUSSR: http://www.showmestat.com/swrus.php
Re: TDBF и создание таблицы - ошибки у братьев-славян....
От: Danchik Украина  
Дата: 13.04.05 17:13
Оценка:
Здравствуйте, Flamer, Вы писали:

А нельзя ли уточнить кто создатель компоненты ?
А то у меня конфликт имен
Re[2]: TDBF и создание таблицы - ошибки у братьев-славян....
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 13.04.05 18:07
Оценка:
Здравствуйте, Danchik, Вы писали:

D>А нельзя ли уточнить кто создатель компоненты ?

D>А то у меня конфликт имен

Компонент был взят отсюда: http://tdbf.sourceforge.net/
Удобный способ просмотра балансов и курсов валют! Специальное предложение для exUSSR: http://www.showmestat.com/swrus.php
Re[3]: TDBF и создание таблицы - ошибки у братьев-славян....
От: Danchik Украина  
Дата: 13.04.05 19:25
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, Danchik, Вы писали:


D>>А нельзя ли уточнить кто создатель компоненты ?

D>>А то у меня конфликт имен

F>Компонент был взят отсюда: http://tdbf.sourceforge.net/


Хм, создаются таблички. Это самое, может креш код (сампл) который крешает (не работает).

Так с ходу у TDBF есть событие OnLocaleError : TDbfLocaleErrorEvent
  TDbfLocaleErrorEvent = procedure(var Error: TLocaleError; var Solution: TLocaleSolution) of object;

в котором можна возвратить Solution := lsBinary
Re[4]: TDBF и создание таблицы - ошибки у братьев-славян....
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 14.04.05 00:01
Оценка:
Здравствуйте, Danchik, Вы писали:

[]

D>Хм, создаются таблички. Это самое, может креш код (сампл) который крешает (не работает).


Да и у меня тоже создаются А код довольно простой и тупой:

bool __fastcall TDB::CreateCategoryTable()
{
    try
    {
   // Create table for note categories
      FCategoryTable->TableLevel = 7;
          FCategoryTable->TableName = FCategoryFileName;
      FCategoryTable->OpenMode = omAutoCreate;
      FCategoryTable->StoreDefs = true;

          FCategoryTable->FieldDefs->Clear();

            //DONE: Структура таблицы категорий
            TFieldDef* def = FCategoryTable->FieldDefs->AddFieldDef();
            def->Required = true;
            def->DataType = ftAutoInc;
            def->Name = "CategoryID";

            def = FCategoryTable->FieldDefs->AddFieldDef();
            def->Required = true;
            def->DataType = ftString;
            def->Name = "CategoryName";
            def->Size = MAX_CATEGORY_NAME_LENGTH;


            def = FCategoryTable->FieldDefs->AddFieldDef();
            def->Required = true;
            def->DataType = ftDateTime;
            def->Name = "CreatedDate";

            def = FCategoryTable->FieldDefs->AddFieldDef();
            def->Required = true;
            def->DataType = ftBoolean;
            def->Name = "Deleted";

      def = FCategoryTable->FieldDefs->AddFieldDef();
      def->Required = true;
      def->DataType = ftInteger;
      def->Name = "IconIndex";

      def = FCategoryTable->FieldDefs->AddFieldDef();
      def->Required = false;
      def->DataType = ftInteger;
      def->Name = "ParentCategoryID";


      FCategoryTable->Active = true;
      FCategoryTable->Active = false;
            
    }
    catch(Exception& e)
    {
     #ifdef _DEBUG
          Application->ShowException(&e);
     #endif
     return false;
    }
   return true;
}


Есть вторая функция на создание второй таблички — там по виду то же самое, за добавлением создания memo-полей. Memo-поля добавляются аналогичным образом. Вот в какой-то из этих функций и происходит облом...

D>Так с ходу у TDBF есть событие OnLocaleError : TDbfLocaleErrorEvent


Спасибо, попробую...
Удобный способ просмотра балансов и курсов валют! Специальное предложение для exUSSR: http://www.showmestat.com/swrus.php
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.