БД Access, поиск записей

Тема в разделе "Остальные БД", создана пользователем Mavrin, 21 мар 2005.

Статус темы:
Закрыта.
  1. Mavrin

    Mavrin Гость

    Использую в качестве БД базу Access. Проблема в следующем. Есть таблица, куда записываются наименования с индивидуальным кодом. Каждая такая запись имеет значение, как количество наименования.
    При изменении количества одного из наименований открываем данную таблицу и, перемещаясь снизу вверх, ищем первую запись нужного наименования по коду (тем самым как бы ищем запись нужного наименования, которая была внесена в БД последней). При нахождении таковой записи меняем количество.
    Данный алгоритм работает, но периодически вносятся неверные значения количества. Так как глюк не постоянный, найти и определить его составляет некую трудность. Грешу пока на сам алгоритм. Может не всегда находится именно запись, внесенная последней? Или, может, еще что-нибудь?
    Пожалуйста, поделитесь своим мнением. Может, вообще, все не так организовать? В чем фишка?
     
  2. Barmutik

    Barmutik Гость

    Я бы предложил Вам следующий алгоритм:

    1. В таблицу добавляется уникальный ключ, которые увеличивается при добавлении новой записи.
    2. Поиск производить не перебором я запросом с условием где КОД = требуемому Вами значению и уникальный ключ максимальный.
    3. Извенять найденную запись по Вашим условиям.

    Проблемы:

    1. Если с программой одновременно работают несколько пользователей, то есть возможнсоть что Вы внесёте изменения все же не в последнюю запись, т.к. в момент Ваших действий другие пользователи могут добавить записи в эту таблицу.
    2. У Вас проблема вероятнее всего в том что, MS Access НЕ всегда может однозначно вернуть список записей в том порядке в которром они были добавлены, следовательно Ваш алгоритм проходу снизу-вверх НЕ всегда будет работать правильно...
     
  3. Mavrin

    Mavrin Гость

    Какие есть пути разрешения таковой ситуации?


    Да, к стати при
    Код (Text):
      rsSQL = "SELECT MAX(q) FROM UhodCR WHERE Index='" & .TextMatrix(MyRow, 1) & "';"
     Set rs = db.OpenRecordset(rsSQL)

       az = rs.Fields(2)
    на последней приведенной строчке выдает, что "элемент не найден в данном семействе".
     
  4. Barmutik

    Barmutik Гость

    Воодить программную блокировку на тот момент когда вы производите критические действия. Например пользователи не могут добавить запись пока происходит обновление... легко реализуемо на уровне приложения...

    А насчёт ошибки .. ну так у вас в результирующем курсоре только одно поле .. а вы обращаетесь ко второму... вполне логично что его нет :)
     
Загрузка...
Похожие Темы - БД Access поиск
  1. proteam
    Ответов:
    7
    Просмотров:
    106
  2. total1231995
    Ответов:
    4
    Просмотров:
    2.238
  3. laughing
    Ответов:
    0
    Просмотров:
    1.735
  4. GeorgiyRodionov
    Ответов:
    1
    Просмотров:
    3.534
  5. Angver
    Ответов:
    1
    Просмотров:
    2.796
Статус темы:
Закрыта.

Поделиться этой страницей