создать таблицу Paradox БЕЗ индексов

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Penumbra
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 24.01.2009 (Сб) 13:36

создать таблицу Paradox БЕЗ индексов

Сообщение Penumbra » 09.02.2009 (Пн) 21:46

подскажите как создать таблицу Paradox БЕЗ индексов ?

почему я создаю таблицу Paradox вот так (с индексом) :


Код:
Код: Выделить всё
S = "Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DSN=Paradox;DefaultDir=" + DBPath + ";Dbq=" + DBPath + ";CollatingSequence=ASCII;"
     Set obj = CreateObject("ADODB.Command")
     obj.ActiveConnection = S
     obj.CommandType = 1

Dim asql As String
    ' создаем таблицу
asql = "create table " + BD_NAME + " (id integer,  [Point] string, NumberCounter integer, Period integer, [Date] DateTime, Channel string, [Status Code] integer );"
obj.CommandText = asql
Call obj.Execute

   ' создаем индекс
asql = "create index " + BD_NAME + " on " + BD_NAME + " (id) with primary;"
obj.CommandText = asql
Call obj.Execute
' запрлняем таблицу
for ....
asql = "insert into " & BD_NAME & "   values (" & r1 & ", '" & (Name) & "', '" & Serial & "', 30, '" & dbDate(0, 0) & "', '" & CreatChanel(tmpI) & "', " & StatusCode &" );"
r1 = r1 + 1
obj.CommandText = asql
Call obj.Execute
next


то таблица создается замечательно
а когда вот так


Код: Выделить всё
S = "Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DSN=Paradox;DefaultDir=" + DBPath + ";Dbq=" + DBPath + ";CollatingSequence=ASCII;"
     Set obj = CreateObject("ADODB.Command")
     obj.ActiveConnection = S
     obj.CommandType = 1

Dim asql As String
    ' создаем таблицу
asql = "create table " + BD_NAME + " (  [Point] string, NumberCounter integer, Period integer, [Date] DateTime, Channel string, [Status Code] integer );"
obj.CommandText = asql
Call obj.Execute
' запрлняем таблицу
for ....
asql = "insert into " & BD_NAME & "   values ( '" & (ConfigAll(i).Name) & "', '" & ConfigAll(i).Serial & "', 30, '" & dbDate(0, 0) & "', '" & CreatChanel(tmpI) & "', " & StatusCode(i, dbDate(0, 0), 0) );"
obj.CommandText = asql
Call obj.Execute
next




то таблица нехочет запролнятся данными больше чем на одну строку!
P.S. надо создать таблицу вида:
| Point | NumberCounter | Period | Date | Channel | Status Code|
+--------+-------------------+ ---------+-----------+----------+---------------+
| один | a10f58 | 30 |1.1.2001 | f1| 0|
....

а получается толко так
| id | Point | NumberCounter | Period | Date | Channel | Status Code|
+----+--------+-------------------+ ---------+-----------+----------+---------------+
| 1| один | a10f58 | 30 |1.1.2001 | f1| 0|
| 2| dfgf | a10df58 | 30 |1.1.2001 | f1| 0|
....
тоесть ПОЧЕМУ НЕМОГУ Я ВСТАВЛЯТЬ ДАННЫЕ В ТАБЛИЦУ БЕЗ ПОЛЯ id ?

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: создать таблицу Paradox БЕЗ индексов

Сообщение HandKot » 10.02.2009 (Вт) 8:02

а как Вы определили что
то таблица нехочет запролнятся данными больше чем на одну строку!
?

в данном случае, выдается какая-то ошибка или что?
I Have Nine Lives You Have One Only
THINK!

Penumbra
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 24.01.2009 (Сб) 13:36

Re: создать таблицу Paradox БЕЗ индексов

Сообщение Penumbra » 10.02.2009 (Вт) 14:26

при добавлении второй строки пишет что в операции должен использоваться обновляемый запрос
пробовал после заполнения данными таблицы удалить колонку id, не получается, появляется ошибка что операция не поддерживается для таблицы содержащий данные

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: создать таблицу Paradox БЕЗ индексов

Сообщение HandKot » 10.02.2009 (Вт) 17:59

действительно должно быть ключевое поле, но это не значит, что оно должно быть автоинкрементным. его можно создать на основе существующих полей
единственное, не может быть записей с одинаковым первичным ключом
вот цитата
Чтобы никто больше мучился с этим делом, я хотел бы привести самые значащие ограничения для драйвера PARADOX, которые я нашел в MSDN:
Для того, чтобы Вы имели возможность производить действия по добавлению, удалению записей или редактированию данных в таблице, таблица должна иметь первичный ключ.
Первичный ключ должен быть определен для первых 'n' полей таблицы.
Вы не можете создавать для таблицы индексы, если для нее не определен первичный ключ.
Первый создаваемый для таблицы уникальный индекс будет создан как первичный ключ.
Первичный ключ может быть создан для таблицы только в том случае, если в ней нет ни одной записи.
Действия по добавлению или удаления полей в таблице должны быть произведены до того, как для нее создан первичный ключ.
Кстати, по моему опыту удалить однажды созданный первичный ключ для таблицы невозможно.


вот полная статья не только про Paradox
I Have Nine Lives You Have One Only
THINK!

Penumbra
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 24.01.2009 (Сб) 13:36

Re: создать таблицу Paradox БЕЗ индексов

Сообщение Penumbra » 11.02.2009 (Ср) 15:22

HandKot спс, разобрался :P
вместо индекса
Код: Выделить всё
   asql = "create index " + BD_NAME + " on " + BD_NAME + " (id) with primary;"
сделал несколько первичных ключей и все норм заработало
Код: Выделить всё
   asql = "ALTER TABLE " + BD_NAME + " ADD CONSTRAINT " + BD_NAME + " PRIMARY KEY ( [Point], NumberCounter, Period, [Date], Channel );"


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 134

    TopList