Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
Выдается ошибка (Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру) на строку:

cmd.Parameters("dateBefore") = [Forms]![ZHO]![s]

Правильно ли так писать?
26 мар 04, 00:20    [598113]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
писать так правильно. Если ругается, значит действительно нет параметра с таким именем. Посмотри в Watch что там реально содержится. Возможно не dateBefore а @dateBefore
26 мар 04, 07:54    [598208]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
данный параметр объявлен в запросе
Select...(Явка.Дата)>=[dateBefore] And (Явка.Дата)<=[dateAfter]...
А в VB ему присваивается значение из поля формы
Так почему ж не удается найти...в семействе
27 мар 04, 00:52    [600366]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
А почему cmd? Там cmd описано как QueryDef? Можно увидеть всю программу?
27 мар 04, 00:56    [600368]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
Прикольно, несмотря на то, что параметры мне известны попробывала так написать:
cmd.Parameters.Item(0) = [Forms]![ZHO]![s]
При выполнении, база безповоротно виснит
27 мар 04, 00:58    [600371]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
QueryDef через DAO, а я через ADO мудрю
Часть исходного текста (если нужна другая часть, могу и ее):
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "qrySumma" ' это запрос, в кот исп эти пар-ры
cmd.CommandType = adCmdTable
cmd.Parameters.Refresh
cmd.Parameters("dateBefore") = [Forms]![ZHO]![1]
cmd.Parameters("dateAfter") = [Forms]![ZHO]![2]

Set rst2 = New ADODB.Recordset
rst2.ActiveConnection = CurrentProject.Connection
rst2.CursorType = adOpenKeyset
rst2.LockType = adLockOptimistic
Set rst2.Source = cmd
rst2.Open
rst2.MoveFirst
27 мар 04, 01:03    [600376]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Вставь перед строкой с Set rst2
f
for each parameter in cmd.parameters

msgbox parameter.Name
next parameter

и посмотри что будет выдаваться на экран.
27 мар 04, 01:32    [600399]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
Вставила перед Set rst2

For Each prm In cmd.Parameters
MsgBox prm.Name
Next prm

Когда ставишь точку после prm в списке отсутсвует Name, поэтому выдается ошибка, что Method or data member not found. Почему Name нет в списке?
28 мар 04, 21:09    [601030]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Ну,либо добавь
dim prm as ADODB.Parameter,
либо так
for i=0 to  cmd.parameters.count-1

msgbox cmd.parameteres(i).Name
next i
28 мар 04, 22:32    [601054]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
объявление prm есть
Dim prm As ADODB.Parameters
так что причина не в этом
а если др способ попробывать - та же ошибка выдается
28 мар 04, 23:31    [601069]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
наконец-то получила сообщение, оказывается всего-то надо было написать так:

MsgBox (cmd.Parameters(i).Name)
т е заключить в скобки.

Сообщения выдаются такие:
перечисляются мои параметры, кот как раз стоят в кач условия в запросе, а потом сообщение о том, что один из параметор не имеет занчение по умолчанию, а именно dateBefore, ну наверное имеется в виду, что и dateAfter тоже.
Я должна в VB присвоить им значение по умолчанию?
Что-то я не понимаю какое?
29 мар 04, 00:16    [601076]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
Ура, я обнаружила, что параметр имеет имя [dateBefore], а не dateBefore, все исправила, однако появилась др ошибка, пока не знаю какая, т к при выполнении база начинает висеть, пока не понятно почему, т к особых ухишрений там не делается...
29 мар 04, 00:41    [601078]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
У меня вопрос такой:
Как можно определить, из-за чего зависает база при выполнении кода на VB?
29 мар 04, 00:47    [601079]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Вы бы хотя бы техт запроса привели. А то получается гадание на кофейной гуще. А телепаты все в отпуске :)
Да,вот еще что.Попробуйте вместо
cmd.CommandType = adCmdTable
написать
cmd.CommandType = adCmdStoredProc
29 мар 04, 00:59    [601082]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
Какой CommandType нужно выбрать, если qrySumma - сохраненный запрос с пар-ми, про кот так долго говорилось выше?????????????????????????

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "qrySumma"
cmd.CommandType = ?
cmd.Parameters("dateBefore") = [Forms]![ZHO]![1]
cmd.Parameters("dateAfter") = [Forms]![ZHO]![2]
Set rst2 = New ADODB.Recordset
rst2.ActiveConnection = CurrentProject.Connection
rst2.CursorType = adOpenKeyset
rst2.LockType = adLockOptimistic
Set rst2.Source = cmd
rst2.Open
Я поставила брейк поинт на строку rst2.Open и вот, что я обнаружила в Watch про rst2:
Операция не допускается, если объект закрыт
Что это может значить???
29 мар 04, 00:59    [601083]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
здорово, пока я писала вопрос про тип, гляжу, а мне уже написали...спасибо за проницательность
29 мар 04, 01:00    [601084]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
Текст запроса:
Итогового, кот и вызывается в VB:
SELECT Сотрудники.[Табельный № сотрудника], Должности!Оклад/Праздники!KolDneyZadano*CountYavok!KolYavok AS Summa

FROM Праздники, CountYavok, Сотрудники INNER JOIN Должности
ON Сотрудники.[Табельный № сотрудника] = Должности.[Табельный № сотрудника]
WHERE (((CountYavok.[Код сотрудника])=[Сотрудники]![Табельный № сотрудника]))
GROUP BY Сотрудники.[Табельный № сотрудника], Должности!Оклад/Праздники!KolDneyZadano*CountYavok!KolYavok;

Запрос CountYavok, откуда берется поле KolYavok:
SELECT Явка.[Код сотрудника], Count(Явка.Явка) AS KolYavok

FROM Сотрудники INNER JOIN Явка ON Сотрудники.[Табельный № сотрудника] = Явка.[Код сотрудника]
WHERE (((Явка.[Код сотрудника])=[Сотрудники]![Табельный № сотрудника])
AND ((Явка.Дата)>=dateBefore And (Явка.Дата)<=dateAfter))
GROUP BY Явка.[Код сотрудника]
HAVING (((Count(Явка.Явка))=True));
29 мар 04, 01:04    [601085]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
по поводу типа adCmdStoredProc, если поставить его, то сразу выдается, что таких параметров нет, если же оставить adCmdTable? то все в порядке по поводу нахождения параметров, однако в остальном - полный копец так и остался
29 мар 04, 01:10    [601087]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Я слаб в ADO, но попробовал бы перед последней строчкой добавить cmd.ActiveConnection.Open
29 мар 04, 01:11    [601089]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
irinka
Member

Откуда:
Сообщений: 443
перед последней строкой - это перед rst2.Open?
Если да, то ошибка такова:
Операция не допускается, если объект открыт ...
хм....
29 мар 04, 01:15    [601090]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Тогда пардон.
29 мар 04, 01:20    [601093]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Ну что Вам сказать?
Кто Вас учил так писать запросы?
Во первых:
в запросе
SELECT Явка.[Код сотрудника], Count(Явка.Явка) AS KolYavok

FROM Сотрудники INNER JOIN Явка ON Сотрудники.[Табельный № сотрудника] = Явка.[Код сотрудника]
WHERE (((Явка.[Код сотрудника])=[Сотрудники]![Табельный № сотрудника])
AND ((Явка.Дата)>=dateBefore And (Явка.Дата)<=dateAfter))
GROUP BY Явка.[Код сотрудника]
HAVING (((Count(Явка.Явка))=True));


WHERE (((Явка.[Код сотрудника])=[Сотрудники]![Табельный № сотрудника]) - не нужно , так как это условие уже есть в INNER JOIN
Во вторых:
HAVING (((Count(Явка.Явка))=True)) Это вообще полный нонсенс. Count(Явка.Явка) - это число , а Вы его приравниваете к True
В третьих
Где видно ,что dateBefore и dateAfter - это параметры
В четвертых
Метод Refresh обьекта Command не работает с CurrentProject.Connection

To be continued
29 мар 04, 01:34    [601101]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
VIG
Count(Явка.Явка) - это число , а Вы его приравниваете к True

Это-то ладно. True тоже можно рассматривать как число. Беда в том, что этим числом является -1, тогда как Count всегда число положительное или в лучшем случае 0.
29 мар 04, 01:42    [601104]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
2 Саныч
Вот я о том же .К-во явок может быть равно -1 только в случае ,если какого то сотрудника вынесли с работы вперед ногами
Я уже молчу про декартово произведение 3(!) таблиц в первом запросе.
29 мар 04, 01:50    [601105]     Ответить | Цитировать Сообщить модератору
 Re: Error: Не удается найти объект в семействе, соответ-щий треб-му имени или порядковому номеру  [new]
Geo
Member

Откуда:
Сообщений: 6883
VIG
Count(Явка.Явка) - это число , а Вы его приравниваете к True

А у меня (если я не ошибаюсь) на True и False в представлениях и хп просто ругается. =0 или =1 (или как-нибудь еще) ему надо...
29 мар 04, 02:40    [601116]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить