Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Установить Primary Key = 0 [Paradox]


Страницы:   1 2

petvv ©   (2011-02-28 10:57:00) 

Собственно вопрос, как после удаления всей информации из таблицы установить Primary Key = 0


sniknik   (2011-03-03 11:41:00) [1]

кстати DbiEmptyTable не единственная функция там, там есть еще типа DbiTableRestructre... тоже меняет структуру типа alter table но возможностей должно быть больше, может удастся не удаляя поменять структуру.
да и с alter table можно не удалять, может получится, а просто поменять тип на простой int а после на автоинкремент... тогда индекс по этому полю не нужно будет восстанавливать.


sniknik   (2011-03-03 11:36:00) [2]

> DbiEmptyTable тоже не помагает только зачищает таблицу :(
тоды осталось "дропнуть" поле автоинкремента, и восстановить его после. с помощью alter table например.


Anatoly Podgoretsky   (2011-03-03 09:52:00) [3]

Кстати Борланд никогда не имел своей СУБД, Интернет компонент, Генераторов отчетов - это было или куплено (СУБД) или халява, когда решили, что на фиг покупать, когда вот оно бесплатное валяется.

Из СУБД они купили Парадокс, dBase, к которому в придачу дали ИБ (таже кадость как и Парадокс).


Anatoly Podgoretsky   (2011-03-03 09:50:00) [4]


> Германн ©   (01.03.11 03:26) [20]

Не важно когда купил, в ДОС не было механизма ДЛЛ, только механизм оверлеев.

И если в Парадоксе и был автоинкримент в 16 бит, то в версии 3.0, а там вообще ничего не было, так даже язык программирования был макрорекордер. Жуть страшная. Нормальный, если можно так сказать Парадокс получился в версии 4.0

Ну его нафиг и нормальный и ненормальный, в скопе.


Anatoly Podgoretsky   (2011-03-03 09:46:00) [5]


> Противный   (01.03.11 09:39) [23]

Автору ничего не надо писать, особо хитрозавороченного, надо просто перейти на промышленную СУБД, на бесплатную, с развитым набором типов и функций.


petvv   (2011-03-03 06:19:00) [6]

DbiEmptyTable тоже не помагает только зачищает таблицу :(


petvv   (2011-03-02 07:06:00) [7]

Люди Paradox 7 + D2006-DXE любая. Вы тут развели демогогию, а конкретных решений нема. Мона конешно такой код юзать:


 Res := FindFirst(ExtractFilePath(paramstr(0))+'DB\*.DB',faAnyFile,SearchRec);
 while Res = 0 do
 begin
   try
     tbSource.DatabaseName:=ExtractFilePath(paramstr(0))+'DB\';
     tbSource.TableName:=UpperCase(SearchRec.Name);
     tbSource.Open;
     tbTarget.DatabaseName:=ExtractFilePath(paramstr(0))+'TEMP\';
     tbTarget.TableName:=UpperCase(SearchRec.Name);
     tbSource.StoreDefs := True;
     tbTarget.StoreDefs := True;
     tbSource.FieldDefs.Update;
     tbSource.IndexDefs.Update;
     tbTarget.FieldDefs := tbSource.FieldDefs;
     tbTarget.IndexDefs := tbSource.IndexDefs;
     tbTarget.CreateTable;
   except
     on EDBEngineError do
       begin
         ShowMessage('Не удалось переиндексировать '+Temp.TableName);
       end;
   end;
   tbSource.Close;
   tbTarget.Close;
   Res :=FindNext(SearchRec);
 end;
 ReindexDB('TEMP');


Но при этом не переносятся связи таблиц.

Может быть их как то мона перенести ?


Amoeba_   (2011-03-01 17:31:00) [8]


> Германн ©   (01.03.11 03:26) [20]
>
>
> >  Amoeba_   (01.03.11 00:19) [19]
> >
> >
> > > Во времена Dos Дельфи не было.
> >
> > Это и ежику известно/ясно. Но Paradox уже не просто был,
>
> >  но даже поддердживался Borland Pascal  через DLL (естественно,
>
> >  толькои в защищенном режимеме) от ParadoxEngine.
> >
>
> Поясни.
> Парадокс, конечно был во времена DOS. Но как он мог поддерживаться
> "Borland Pascal  через DLL", если самого механизма "Dynamic-
> link library" ещё не было?
> Ну и тут ещё нужно спросить АП - когда Борланд купил (как
> всегда урезанную) версию Парадокс.

В BP7 появилась версия компилятора для создания программ, работающих в защищенном режиме DOS, а также и DLL для него. Так что механизм "Dynamic-link library" уже поддерживался, единственно задействовался еще т.н. DOS-расширитель.
А соответствующая DLL с API для доступа к таблицам Paradox была в комплекте.


Противный   (2011-03-01 09:39:00) [9]

createguid

Который даст 128 недетерминированных псевдоуникальных бит. 16 байт для первичного ключа. 16 байт для каждого внешнего ключа. Индексы растут, производительност падает, пользователи в перерывах между запросами чаи гоняют.

А еще сплошь и рядом системы, где при вводе данных не значения из выпадающих списков выбираются, а вручную, с клавиатуры, внешние ключи вводятся, и, при использовании GUID, упадет в разы скорость, будет куча опечаток, эффективность системы упадет в разы.

Но это так, брюзжания о неэффективности GUID.

А если реально, то реально автор уже давно написал бы свой, самый хитровыкрученный генератор первичных ключей, который решал бы все его задачи. И тема была бы закрыта.


sniknik   (2011-03-01 08:01:00) [10]

> тогда куда надежней createguid в качестве пк использовать...
надежнее всего перейти с парадокса на что то современное, более "дуракозащищенное".


Palladin   (2011-03-01 04:21:00) [11]

если уж такие траблы с идентити пк, тогда куда надежней createguid в качестве пк использовать...


Германн   (2011-03-01 03:26:00) [12]


>  Amoeba_   (01.03.11 00:19) [19]
>
>
> > Во времена Dos Дельфи не было.
>
> Это и ежику известно/ясно. Но Paradox уже не просто был,
>  но даже поддердживался Borland Pascal  через DLL (естественно,
>  толькои в защищенном режимеме) от ParadoxEngine.
>

Поясни.
Парадокс, конечно был во времена DOS. Но как он мог поддерживаться "Borland Pascal  через DLL", если самого механизма "Dynamic-link library" ещё не было?
Ну и тут ещё нужно спросить АП - когда Борланд купил (как всегда урезанную) версию Парадокс.


Amoeba_   (2011-03-01 00:19:00) [13]


> Во времена Dos Дельфи не было.

Это и ежику известно/ясно. Но Paradox уже не просто был, но даже поддердживался Borland Pascal  через DLL (естественно, толькои в защищенном режимеме) от ParadoxEngine.


Противный   (2011-02-28 23:37:00) [14]

>> _Юрий   (28.02.11 22:40) [17] А зачем все это? Все ж уже сделано. Собственноручно изготовленный из подручных материалов велосипед всяко хуже серийного получится, да и времени лишнего съест

Сам подумай. Это не сложно, поверь. Надо только постараться. А потом даже легко и интересно станет.

>> Игорь Шевченко ©   (28.02.11 22:38) [16] О сколько нам открытий чудных Готовит просвещенья дух

Век живи, век учись. Ты пока еще только на половине пути. Так что... еще все спереди!

P.S. Ты, Игорь, лентяй и сноб.


_Юрий   (2011-02-28 22:40:00) [15]


> Противный   (28.02.11 22:15) [15]
>


А зачем все это? Все ж уже сделано. Собственноручно изготовленный из подручных материалов велосипед всяко хуже серийного получится, да и времени лишнего съест


Игорь Шевченко   (2011-02-28 22:38:00) [16]

Противный   (28.02.11 22:15) [15]

О сколько нам открытий чудных
Готовит просвещенья дух


Противный   (2011-02-28 22:15:00) [17]

>_Юрий   (28.02.11 21:15) [14]
>> Избегать авто-инкремента всеми силами - делов-то.
>А что же вместо них использовать?


Мануальные декременты. Разве не понятно?

А если серьезно, то можно и свой автоинкремент сделать. Ничего сложного, зато полный контроль зад генерацией ключей.

Стандалон, при создании получающий max(ID) from tablename, и выполняющий автоинкремент программно.  А если очень хочется, можно поглубже копнуть, например, при старте просканировать таблицу на предмет присутствия "окон" в последовательности имеющихся первичных ключей с целью последующего выделения новых ключей из этих "окон", дабы рациональнее использовать числовой диапазон.

А если надо работать в многопользовательском окружении, то завести специальную табличку, в которой хранить NextID для каждой таблицы, либо общий для всей БД. В транзакции получать NextID, инкрементировать его (возможно, больше чем на 1, как вариант пакетного выделения первичных ключей), записывать значение обратно в таблицу ключей, а полученный ключ (группу ключей) использовать по назначению.


_Юрий   (2011-02-28 21:15:00) [18]


> Избегать авто-инкремента всеми силами - делов-то.


А что же вместо них использовать?


sniknik   (2011-02-28 20:10:00) [19]

ага, а еще были проблемы со строками - избегать всеми силами строк, проблемы с бекапами - избегать бекапов, указателями-указателей, базами, операционкой, ... ets.
в итоге единственное что остается, это счеты... ну до первого раза когда разгневанный "бух" ими тебя по "чайнику" долбанет (ага, проблема)... после остается только увольняться, и в дворники.


Jeer   (2011-02-28 16:22:00) [20]

Избегать авто-инкремента всеми силами - делов-то.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо