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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VBA,RunSQL, Do.RunSQL 
V
    Опции темы
Perun
Дата 29.2.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Почему код не работает?

Цитата

Private Sub ВидЭкпертизы_AfterUpdate()
Dim SQL As String

SQL = "SELECT Вид, ВидЛатынь " & _
      "FROM tbl_Спр_Вредители " & _
      "WHERE КодЭкспертизы = 6"

DoCmd.RunSQL (SQL)
End Sub


Или в Access оператор SELECT программно по-другому применяется?
PM MAIL ICQ   Вверх
Akina
Дата 29.2.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



1) Имена полей - в квадратные скобки
2) Каков тип поля КодЭкспертизы?
И вообще - что В ДАННОМ СЛУЧАЕ значит "не работает"?


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

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


Бывалый
*


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

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



Обязательно в квадратные скобки? Они же без пробелов.
Не работает, в смысле выдаёт сообщение, что неправильный синтаксис SQL 
ядро Jet ждёт параметра.
Создал запрос  в режиме SQL - записи отобрались. Что я не так сделал?
PM MAIL ICQ   Вверх
Akina
Дата 29.2.2008, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Perun @  29.2.2008,  22:51 Найти цитируемый пост)
Обязательно в квадратные скобки? Они же без пробелов.

Символы, не входящие в А-набор, присутствуют? да, присутствуют. Квадратные скобки, и не рассуждать.

Цитата(Perun @  29.2.2008,  22:51 Найти цитируемый пост)
Не работает, в смысле выдаёт сообщение, что неправильный синтаксис SQL 

Точную, АБСОЛЮТНО точную, до запятых, пробелов и переносов строки, цитату сообщения. Рассуждения и интерпретации - в корзину.



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

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


Бывалый
*


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

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



Код исправил так:
Цитата

Dim SQL As String

SQL = "SELECT [Вид], [ВидЛатынь]" & _
      "FROM [tbl_Спр_Вредители] " & _
      "WHERE [КодЭкспертизы] = 6"
DoCmd.RunSQL (SQL)


Код экспертизы - числовой!
Ошибка "до запятых":
Цитата

Run-time error '2342'
Для макрокоманды ЗапускЗапросаSQL  требуется аргумент,
состоящий из инструкции SQL.
 
PM MAIL ICQ   Вверх
bopoha
Дата 1.3.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Perun, после [ВидЛатынь] нет пробела. Ставьте пробелы перед управляющими словами FROM, WHERE и т.п.

Указанный запрос вибирает данные!!! Даже если он и выполнится, то что в результате получите и куда?????
В DoCmd.RunSQL следует передавать запросы на изменение данных - INSERT, UPDATE, DELETE.
PM MAIL WWW ICQ Skype GTalk   Вверх
Perun
Дата 1.3.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Задача заключается в следующем
Есть поле со списком. Туда отбираются данные запросом.
После выбора какого-то пункта поля со списком [ВидыЭкспертиз] в другое 
поле со списком из таблицы [Вредители] надо отобрать "Вредителей", которые соответствуют
[КодЭкспертизы].
В запросе я к примеру взял  [КодЭкспертизы] = 6. А он = номеру из поля со списком [ВидыЭкспертиз]
Так вроде бы понятно, вот ещё рисунок


Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  1.GIF 12,33 Kb
PM MAIL ICQ   Вверх
bopoha
Дата 1.3.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Так присвойте эту строку с запросом свойству RowSource элемента управления, на который нужно наложить фильтр.
PM MAIL WWW ICQ Skype GTalk   Вверх
Perun
Дата 1.3.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Но в запросе нельзя указать переменную или я что-то не понимаю.

Я сделал 6 запросов(понимаю, что это глупо) и на событие AftrerUpdate() списка с видами экспертиз делаю анализ с конструкцией SELECT CASE , где у меня 6 вариантов
PM MAIL ICQ   Вверх
Akina
Дата 1.3.2008, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код

Select Case ПараметрВыбора
  Case Вариант1
    Контрол.RowSource = "SELECT тра-та-та"
  Case Вариант2
    Контрол.RowSource = "SELECT другая тра-та-та"
'...
  Case Else
    Контрол.RowSource = "SELECT последняя тра-та-та"
End Select
Контрол.ReQuery



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

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


Бывалый
*


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

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



Я так и сделал, спасибо. А более компактно, как мне кажется, уже не получится.
PM MAIL ICQ   Вверх
Perun
Дата 3.3.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



всё, получилось и короче, как и хотел. 

Код

Private Sub ВидЭкпертизы_AfterUpdate()
Dim SQL As String, n As Integer
n = Me.ВидЭкпертизы.Column(0)

КодОбъекта.RowSource = "SELECT tbl_Спр_Вредители.Вид, tbl_Спр_Вредители.ВидЛатынь" & Chr(10) & _
                       "FROM tbl_Спр_Вредители WHERE (((tbl_Спр_Вредители.КодЭкспертизы) = " & CStr(n) & "))" & _
                       " ORDER BY tbl_Спр_Вредители.Вид;"
End Sub

n это код экспертизы, которому соответсвуют свои вредители.
Просто передаю в запрос параметр и конструкция SELECT CASE не нужна. Вопрос решён!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

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

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

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


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

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


 




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


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

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