powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как правильно сделать? (проверить, что данное название уже есть в базе данных)
10 сообщений из 10, страница 1 из 1
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32388448
NewMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите разрешить проблему. (Access 2000)
Задача такая: в некой форме необходимо вводить данные о компании (данные договора). При вводе в один из Editов (краткое название компании) необходиом проверить то, что данное название уже есть в базе данных. И если есть то переместится на данную record и проверить. Если нет то доьаляем новые данные и все (здесь проблем нет:) )

Открываю я форму (ленточный вид).
В событии open делаю New. ТО есть нахожусь в режиме добавления новой записи. Перехватываю события Edita LostFocus и пытался FindRecord найти запись с таким названием. Но конечно не могу так как нахожусь в режиме добавления. И что делать? Первое как перейти в обычный режим чтобы use FindRecord? Но если нет компании то перейти обратно в режим new , чтобы не потерять данные которые уже ввели для данной компании (хотя это не важно).
Какой-то замкнутый круг для меня. Только начал с Access разбираться так что простите :)
Надеюсь на помощь
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32388450
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
1. Лучше использовать не LostFocus, а AfterUpdate.

2. Нет никакой необходимости искать в той же форме. Есть способы искать в таблице без всякой связи с тем фактом, что сама эта форма сидит на той же таблице. Способ первый - dlookup. Способ второй - через рекордсет. Первый способ проще сделать для начинающего, второй будет быстрее работать.
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32388458
NewMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, смысл понятен. Еще чего-то я не нашел: Как мне не позволить user перйти (например колесиком мыши на другую запись, то есть хочу это делать програмно ). Перехватывал событие CurrentRecord, но его не отменить. Видимто опять глупый вопрос:)
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32388460
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вопрос очень сложный. Вот длинное обсуждение по этому поводу:\r
\r
/topic/47269
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32388645
NewMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне показалось что DLookup работает только с латинскими буквами, а русские не ловит? В чем решение? :)
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32388650
NewMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу, типа,

Код: plaintext
1.
Dim varX As Variant
varX = DLookup( "[Company_Id]" ,  "Company" ,  "[AliasName] = '" & AliasName.Text & "'" )


так если в AliasName (edit) русские буквы то varX = Null
Ксати не нашел в описании DLookup регистронезависимый или нет?
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32388760
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Насчет регистронезависимого - мне кажется, что это зависит от настроек модуля. Если в начале модуля стоит Option Compare Binary, то регистр учитывается, а если Option Compare Database, то нет. По крайней мере при простом сравнении строк это работает именно так.
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32388841
NewMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ВС!
Поиск я сделал через

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
With Me.RecordsetClone
    .Find  "Company_Id = 1158 "
    If Not .EOF Then
        Me.Bookmark = .Bookmark
    Else
        MsgBox  "No match" 
    End If
End With


Все Нормально если перед этим вызовом я нахожусь в режиме просмотра, но если в режиме добавления то на Me.Bookmark = .Bookmark возникает ошибка пытался CancelUpdatу перед эти но не помогает. Как вый ти из режима вставкиновой записи?
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32389034
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А режим вставки делается через .AddNew или юзером через клавиатуру?
...
Рейтинг: 0 / 0
Как правильно сделать? (проверить, что данное название уже есть в базе данных)
    #32389115
NewMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В событии open я делаю
Код: plaintext
DoCmd.GoToRecord , , acNewRec

Ксати есть разница между этим и
Код: plaintext
Me.Recordset.AddNew   
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как правильно сделать? (проверить, что данное название уже есть в базе данных)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]