Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ошибка 3070
 
 автор: SergeyKV   (12.05.2009 в 12:03)   личное сообщение
 
 

Всем кто сюда заглянет желаю хорошего настроения и доброго времени суток!
Есть такой кусок кода :

Private Sub НазваниеКомпании_AfterUpdate()
Dim rs As DAO.Recordset
Dim db As DAO.Database
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 ' обновление формы
Set db = CurrentDb()
Set rs = db.OpenRecordset("Клиенты")
Set rs = Me.RecordsetClone

rs.FindFirst "[id] = " & Me![НазваниеКомпании]   ругается на id, что нет такого поля... ((, а оно точно есть в таблице "клиенты"
Me.Bookmark = Me.RecordsetClone.Bookmark
End Sub


что может быть не так ?

  Ответить  
 
 автор: osmor   (12.05.2009 в 12:32)   личное сообщение
 
 

а в текущей форме, есть такое поле?
зачем в одну переменную?
Set rs = db.OpenRecordset("Клиенты")
Set rs = Me.RecordsetClone

  Ответить  
 
 автор: Анатолий (Киев)   (12.05.2009 в 14:45)   личное сообщение
 
 


что может быть не так ?


Всё не так!

Set rs = db.OpenRecordset("Клиенты")
Здесь вы открываете rs = на таблице "Клиенты"

Set rs = Me.RecordsetClone
И тут же заменяете данные записями из источника формы, хотя по фразе "а оно точно
есть в таблице клиенты" - всё-таки в "клиенты". Видимо эта строчка лишняя.

rs.FindFirst "[id] = " & Me![НазваниеКомпании] ругается на id, что нет такого поля...
Если предыдущую строчку отмените, то, видимо, поле [id] будет, но какой тип поля Me![НазваниеКомпании]? Если текстовый, то строка критерия - неправильная, особенно, если [id] - числовое.

Me.Bookmark = Me.RecordsetClone.Bookmark
Какой смысл в этой строчке? Вы ищете запись в другом наборе, не имеющем отношения к источнику формы.

Объясните смысл вашей задачи.
Me![НазваниеКомпании] - поле или поле со списком?

И еще:
1. Если таблица "Клиенты" - родная (не прилинкованная), то Set rs = db.OpenRecordset("Клиенты") откроет Recordset, не поддерживающий методы Find. Нужно явно указывать его тип.
2. После выполнения поиска всегда проверяйте св-во NoMatch.
3. Вместо DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 можно с успехом применить Me.Refresh или Me.Dirty = False.

  Ответить  
 
 автор: SergeyKV   (12.05.2009 в 17:04)   личное сообщение
 
 

какой ужас я чувствую себя полным идиотом ...
Мне нужно сделать простую закладку на текущую запись в форме. Ну тоесть при вводе символов в поле со списком по первым символам происходит фильтрация записей и при полном соответствии происходит автозаполнение полей... переход на нужную запись как бы.
я это.... буду еще обдумывать что вы написали

пс. Me![НазваниеКомпании] - поле со списком ... А id - счетчик

  Ответить  
 
 автор: SergeyKV   (20.05.2009 в 12:05)   личное сообщение
 
 

Нет я все равно не понимаю почему запись не становится текущей... Опять та же ошибка в строчке с id ( ругается на id)

Private Sub НазваниеКомпании_AfterUpdate()
    Dim rs As Object
    Dim strSearchName As String
  '  On Error Resume Next
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 ' îáíîâëåíèå ôîðìû
    Set rs = Me.RecordsetClone
    strSearchName = Me!НазваниеКомпании
    rs.FindFirst "[id] = " & strSearchName
    If rs.NoMatch Then
            MsgBox "Record not found"
        Else
            Me.Bookmark = rs.Bookmark
           
        End If
    rs.Close
End Sub


Скажите опять что все неправильно....

  Ответить  
 
 автор: snipe   (20.05.2009 в 12:15)   личное сообщение
 
 

может из-за этого

Dim strSearchName As String

rs.FindFirst "[id] = " & strSearchName

как я понял id - число

  Ответить  
 
 автор: osmor   (20.05.2009 в 12:16)   личное сообщение
 
 

Me!НазваниеКомпании - текст или число?
[id] - текст или число?
Как ругается?

  Ответить  
 
 автор: SergeyKV   (20.05.2009 в 12:18)   личное сообщение
 
 

id это счетчик , НазваниеКомпании - текстовое поле! Ошибка : Id не распознается ядром бызы данных как допустимое имя поля или выражение

  Ответить  
 
 автор: osmor   (20.05.2009 в 12:25)   личное сообщение
 
 

Вопрос, как поле id (число) может быть равно НазваниеКомпании (текст)
что собираетесь найти?
поле ID присутствует в источнике данных формы?

  Ответить  
 
 автор: SergeyKV   (20.05.2009 в 12:29)   личное сообщение
 
 

ну тоесть тогда нужно Написать

rs.FindFirst "[НазваниеКомпании] = " & Me.НазваниеКомпании ?

Поле ID присутствует в источнике данных формы

  Ответить  
 
 автор: osmor   (20.05.2009 в 12:35)   личное сообщение
 
 

все зависит от того что и по каким данным вы хотите найти
Me.НазваниеКомпании - это что? это поле связанное с источником данных формы ил свободное поле для поиска?

  Ответить  
 
 автор: SergeyKV   (20.05.2009 в 12:41)   личное сообщение
38 Кб.
 
 

это поле со списком на форме , т.е. поле для поиска и одновременно является полем для ввода новой компании

я прикрепил базу , может так проще будет

  Ответить  
 
 автор: Denis V.   (20.05.2009 в 13:39)   личное сообщение
 
 

Так не делается, чтобы один элемент управления, привязанный к данным, был и для ввода данных и для поиска. Для поиска используйте не привязанный элемент управления. По поиску на этом сайте и форуме найдутся примеры. Воспользуйтесь поиском :-)

  Ответить  
 
 автор: snipe   (20.05.2009 в 13:45)   личное сообщение
 
 

rs.FindFirst "[НазваниеКомпании] = " & Me.НазваниеКомпании

так работать не будет.....
если Ме.НазваниеКомпании текст
так будет
rs.FindFirst "[НазваниеКомпании] = '" & Me.НазваниеКомпании & "'"

и полностью согласен с Denis V.

  Ответить  
 
 автор: SergeyKV   (20.05.2009 в 14:08)   личное сообщение
 
 

у меня кстати так и было сделано до того момента как я выложил этот кусок кода , только при вводе в поле символов помимо перескока на текущую запись происходило дублирование записи ... поэтому этот способ не устривает

  Ответить  
 
 автор: Denis V.   (20.05.2009 в 14:38)   личное сообщение
 
 

Что-то я Вас не понял.
Тогда покажите, что было.

  Ответить  
 
 автор: SergeyKV   (20.05.2009 в 15:12)   личное сообщение
 
 


Private Sub Название компании_AfterUpdate()
    Dim rs As Object
    Dim strSearchName As String
  ' On Error Resume Next
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 ' 
    Set rs = Me.RecordsetClone
    strSearchName = Me!НазваниеКомпании
    rs.FindFirst = "[НазваниеКомпании] = " " " & strSearchName & " " " "
    If rs.NoMatch Then
            MsgBox "Record not found"
        Else
            Me.Bookmark = rs.Bookmark
        End If
    rs.Close
End Sub


Допустим пишу в поле "слон", становится текущей записью, запись "Слон", но тот же "слон" создается как новая запись в таблице и из за этого получается куча слонов! Вот в чем проблема

  Ответить  
 
 автор: osmor   (20.05.2009 в 15:15)   личное сообщение
 
 

Me!НазваниеКомпании - должно быть свободным (точнее поле должно называться по другому т.к. Me!НазваниеКомпании это поле с данными из таблицы)

  Ответить  
 
 автор: Goblin   (20.05.2009 в 22:43)   личное сообщение
 
 

Собственно тут масса примеров, когда через поле со списком для поиска добавляют инфу. И фильтрация и чего тут только нет. Используй готовые примеры.

  Ответить  
 
 автор: SergeyKV   (21.05.2009 в 10:21)   личное сообщение
 
 

я все эти готовые примеры тысячу раз видел! у меня не получается повторить уже готовое

  Ответить  
 
 автор: Denis V.   (20.05.2009 в 23:55)   личное сообщение
 
 


DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

Это что значит? Сто лет таким не пользовался и забыл уже :-)
Случайно, не переход на новую запись?
Если да, тогда не понятно, почему Вам не понятно, откуда взялся новый слон. Без перехода на новую запись, сначала бы изменялось название в текущей записи! Понял, почему это добавили! Да, уж, смешно :-)
Или я не прав?

  Ответить  
 
 автор: snipe   (21.05.2009 в 08:39)   личное сообщение
23 Кб.
 
 

Вот извратился.......Вроде работает

  Ответить  
 
 автор: SergeyKV   (21.05.2009 в 10:19)   личное сообщение
 
 

Спасибо, вы долго мучались ? щас попытаюсь адаптировать к своему случаю

  Ответить  
 
 автор: SergeyKV   (21.05.2009 в 09:42)   личное сообщение
 
 

а что вы поняли или не поняли? Это обновление формы, просто добавил кнопку , а потом ее удалил а код остался. Чтобы меньше писать было :)

  Ответить  
 
 автор: SergeyKV   (24.05.2009 в 12:53)   личное сообщение
 
 

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

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList