На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Chow, Bas, MIF
  
> создать таблицу Paradox БЕЗ индексов
    подскажите как создать таблицу Paradox БЕЗ индексов ?
    почему я создаю таблицу Paradox вот так (с индексом) :
    Код:
    ExpandedWrap disabled
      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

    то таблица создается замечательно
    а когда вот так
    Код:
    ExpandedWrap disabled
      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 ?
    Сообщение отредактировано: Penumbra -
      а по шагам в цикл? ошибки есть?
      по идее нет препятствий на добавление при отсутствии индекса
        при добавлении второй строки пишет что в операции должен использоваться обновляемый запрос
        пробовал после заполнения данными таблицы удалить колонку id, не получается, появляется ошибка что операция не поддерживается для таблицы содержащий данные
        Сообщение отредактировано: Penumbra -
          хм... похоже парадокс не любит таблицы без ключевого поля...
          В принципе это наверное нормально, т.е. в любом случае чтобы потом работать с такой таблицей ключевое поле будет очень кстати.
            разобрался :P

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

            вместо индекса
            ExpandedWrap disabled
              "create index " + BD_NAME + " on " + BD_NAME + " (id) with primary;"
            сделал несколько первичных ключей и все норм заработало
            ExpandedWrap disabled
               "ALTER TABLE " + BD_NAME + " ADD CONSTRAINT " + BD_NAME + " PRIMARY KEY ( [Point], NumberCounter, Period, [Date], Channel );"
            Сообщение отредактировано: Penumbra -
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0384 ]   [ 15 queries used ]   [ Generated: 4.05.24, 00:56 GMT ]