Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Много запросов преобразовать в несколько, с помощью VB 
:(
    Опции темы
Nikolya
Дата 24.5.2007, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Приветствую!

Мне надо создать 3 группы запросов в каждой 5 штук, каждый запрос создавать отдельно нет смысла, потому что меняется всего одна переменная, это i. И результат по каждой группе должен выводиться в отдельное поле. Это я для примера взял 15 запросов на самом деле их будет очень много, порядка 90.

Т.е. результат нужен такой: 
Поле1: 4
Поле2: 8
Поле3: 2

4,8 и 2 - результаты запроса по 1,2 и 3 группам.

Делаю так:
Код

For i = 0 To 5
strSQL = "SELECT Count(Протокол.Диагноз) FROM Диагноз INNER JOIN Протокол ON 
 Диагноз.Id_diagnos =Протокол.id_диагноз WHERE Протокол.диагноз =  (i + 1);"
 DoCmd.RunSQL strSQL
Next


При выполнении кода ругается на DoCmd.RunSQL strSQL.
И не знаю перебирается ли i и как сделать помещение результата в поле на форму.

Заранее благодарен.

Это сообщение отредактировал(а) Nikolya - 24.5.2007, 07:57
PM MAIL   Вверх
ТоляМБА
Дата 24.5.2007, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Цитата(Nikolya @  24.5.2007,  07:55 Найти цитируемый пост)
не знаю перебирается ли i 
 По этой части вопроса:
i так не перебирается, надо так:
Код
For i = 0 To 5
strSQL = "SELECT Count(Протокол.Диагноз) FROM Диагноз INNER JOIN Протокол ON 
 Диагноз.Id_diagnos =Протокол.id_диагноз WHERE Протокол.диагноз = (" & i + 1 & ");"
 DoCmd.RunSQL strSQL
Next


Добавлено через 2 минуты и 43 секунды
И совет: не используй имена полей такие же как имена таблиц пусть даже других - запутаешься  smile 
PM   Вверх
Nikolya
Дата 24.5.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Спасибо, ТоляМБА.
Кстати ругается так: "Для макрокоманды ЗапускМакросаSQL требуется аргумент, состоящий из инструкции SQL".

Это сообщение отредактировал(а) Nikolya - 24.5.2007, 10:12
PM MAIL   Вверх
Akina
Дата 24.5.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Код

For i = 0 To 5
strSQL = "SELECT Count(Протокол.Диагноз) FROM Диагноз INNER JOIN Протокол ON Диагноз.Id_diagnos =Протокол.id_диагноз WHERE Протокол.диагноз = (" & SCtr(i + 1) & ");"
 DoCmd.RunSQL strSQL
Next



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Nikolya
Дата 25.5.2007, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Спасибо, Akina.
Но все-равно ругается на: 
Код
DoCmd.RunSQL strSQL
 
И как сделать чтобы результат запроса вывелся в поле на форму (чтобы можно было редактировать)?
Имя поля pole1, пишу следующее: 
Код
pole1.ControlSource = "SELECT Count(Протокол.Диагноз) FROM Диагноз " & _
      "INNER JOIN Протокол ON Диагноз.Id_diagnos =Протокол.id_диагноз " &_
      "WHERE Протокол.диагноз = 1;"
 
в результате в поле выводится это - "#Имя".

Это сообщение отредактировал(а) Nikolya - 25.5.2007, 07:02
PM MAIL   Вверх
Akina
Дата 27.5.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Nikolya @  25.5.2007,  05:43 Найти цитируемый пост)
все-равно ругается 

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

Цитата(Nikolya @  25.5.2007,  05:43 Найти цитируемый пост)
в результате в поле выводится это - "#Имя".

Проблемы при попытке засовывания рекордсета в текстовое поле неоднократно обсуждались. В поиск.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Nikolya
Дата 28.5.2007, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Все, сделал. Воспользовался Public функцией с параметром. Всем спасибо!

Это сообщение отредактировал(а) Nikolya - 28.5.2007, 10:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.