Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.142.146] |
|
Данный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
подскажите как создать таблицу 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 ? |
Сообщ.
#2
,
|
|
|
а по шагам в цикл? ошибки есть?
по идее нет препятствий на добавление при отсутствии индекса |
Сообщ.
#3
,
|
|
|
при добавлении второй строки пишет что в операции должен использоваться обновляемый запрос
пробовал после заполнения данными таблицы удалить колонку id, не получается, появляется ошибка что операция не поддерживается для таблицы содержащий данные |
Сообщ.
#4
,
|
|
|
хм... похоже парадокс не любит таблицы без ключевого поля...
В принципе это наверное нормально, т.е. в любом случае чтобы потом работать с такой таблицей ключевое поле будет очень кстати. |
Сообщ.
#5
,
|
|
|
разобрался
Игорь Акопян, правильно, вот что я нашел в MSDN: Для того, чтобы Вы имели возможность производить действия по добавлению, удалению записей или редактированию данных в таблице, таблица должна иметь первичный ключ. Первичный ключ должен быть определен для первых 'n' полей таблицы. вместо индекса "create index " + BD_NAME + " on " + BD_NAME + " (id) with primary;" "ALTER TABLE " + BD_NAME + " ADD CONSTRAINT " + BD_NAME + " PRIMARY KEY ( [Point], NumberCounter, Period, [Date], Channel );" |