Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2011, 16:34   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию CurrentDb.OpenRecordset Слишком мало параметров. Требуется 1

Всем доброго.
Мне в отчет Акцесса 2003 нужно итоговое поле. Поскольку Акцесс не знаю толком, решил сделать функцию:
Код:
Function Itog()
 Dim rs As Recordset
  Itog = 0
  Dim q As DAO.QueryDef
  Set q = CurrentDb.QueryDefs("Запрос1")
  Dim sql As String
  sql = q.sql
  q.Close
     
  Set rs = CurrentDb.OpenRecordset(sql)
  If Not rs.EOF Then
    Itog = rs.Fields(0).Value
  End If
  rs.Close
  'q.Close
  
End Function
На основании темы http://www.programmersforum.ru/showt....OpenRecordset
Поскольку с CurrentDb.OpenRecordset есть некий прикол (которого я чесно говоря не понял)

Цитата:
Ошибка, как правило, возникает со следующим текстом "Too few parameters. Expected Число" ("Слишком мало параметров. Ожидалось Число").
Эта ошибка возникает, если команда или один из нижележащих запросов содержит обращения к формам или собственные параметры, - все эти обращения будут восприняты как параметры, которым не передано значение.
Почему так происходит? - Вот вольный перевод из MSDN (ms-help://MS.MSDNQTR.2003APR.1033/enu_kbacc2000kb/acc2000kb/209203.htm):
MSDN

NOTE: В DAO Вы должны явно присвоить значение параметру. При использовании DoCmd.OpenQuery Вы этого делать не должны, т.к. DAO использует операции низкого уровня, что даёт Вам большую свободу в использовании параметров (т.е. Вы можете сами присвоить параметру значение переменной, а не использовать ссылку на форму), но Вы должны выполнить служебные действия, которые Аксесс делает "за кулисами" при исполнении DoCmd. С другой стороны, DoCmd работает на более высоком уровне, чем DAO. Выполняя DoCmd, Microsoft Access делает некоторые предположения о том, как поступить с параметрами, и не дает Вам никакой свободы в этом отношении.
Это я на одном форуме нашел описание.

Вопрос: Поскольку ошибка эта все еще вылезает, подскажите что я упустил из виду.
Если есть другие способы вставить итоговое поле в отчет, в которое будет вписываться значение некоего запроса типа SELECT Sum(...) ... прошу указать на них.

Заранее спасибо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2011, 20:08   #2
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Всем доброго.
Мне в отчет Акцесса 2003 нужно итоговое поле. Поскольку Акцесс не знаю толком, решил сделать функцию:
Код:
Function Itog()
 Dim rs As Recordset
  Itog = 0
  Dim q As DAO.QueryDef
  Set q = CurrentDb.QueryDefs("Запрос1")
  Dim sql As String
  sql = q.sql
  q.Close
     
  Set rs = CurrentDb.OpenRecordset(sql)
  If Not rs.EOF Then
    Itog = rs.Fields(0).Value
  End If
  rs.Close
  'q.Close
  
End Function
На основании темы http://www.programmersforum.ru/showt....OpenRecordset
Поскольку с CurrentDb.OpenRecordset есть некий прикол (которого я чесно говоря не понял)


Это я на одном форуме нашел описание.

Вопрос: Поскольку ошибка эта все еще вылезает, подскажите что я упустил из виду.
Если есть другие способы вставить итоговое поле в отчет, в которое будет вписываться значение некоего запроса типа SELECT Sum(...) ... прошу указать на них.

Заранее спасибо.
если отчет в access то достаточно сделать группировку, и в примечании группы добавить поле формула которого будет содержать
такую формулу
=Sum([Summa]), где [Summa] это поле по которому суммируем данные

еще как вариант можно использовать union с результирующим запросом

Вот маленький пример, думаю будет понятно
Вложения
Тип файла: zip test.zip (33.9 Кб, 51 просмотров)
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось Stilet; 18.10.2011 в 13:19.
R Dmitry вне форума Ответить с цитированием
Старый 18.10.2011, 13:20   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Спасибо, но при таком раскладе он отчего-то выводит мне окно с просьбой указать значение... Видимо я где-то еще навтыкал... Но идею понял, буду пока что от нее отталкиваться
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2011, 13:25   #4
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

По личному опыту скажу что в 99% такая ошибка выскакивает в случае если параметр отбора нулевой или не соответствует. Для решения переводите рекордсет в запрос и смотрите где глюк....
gluk_fm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слишком сложный запрос Ma4balaka SQL, базы данных 2 01.12.2010 16:43
времени мало PROsent Помощь студентам 2 08.02.2010 21:35
Слишком много актуальных параметров... extrimportal Общие вопросы Delphi 7 22.04.2009 22:41
Слишком большой обьем Зубоскалик Общие вопросы Delphi 5 03.09.2008 19:31
Пишет, мол мало параметров azat БД в Delphi 11 23.01.2008 10:46