powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Опять execute
20 сообщений из 20, страница 1 из 1
Опять execute
    #32186159
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос на удаление испрользует в качестве условия отбора значения невидимых надписей формы (LabelXXX.Caption). При запуске запроса из окна базы ввожу эти параметры руками - все ок.
При запуске запроса из VBA методом Execute выдается сообщение "слишком мало параметров - требуется 5".
Перед вызовом execute выводил msgbox со значениями надписей - все необходимые значения надписей установлены.

В чем м.б. дело ?
...
Рейтинг: 0 / 0
Опять execute
    #32186187
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос выглядит так:

DELETE *
FROM Расписание
WHERE
((([Расписание].[КодЗала])=[Forms]![Расписание]![ПолеСоСписком1])
And
(([Расписание].[КодУслуги])=[Forms]![Расписание]![НевидНадпись0].Caption)
And
(([Расписание].[ДеньНедели])=[Forms]![Расписание]![НевидНадпись3].Caption)
And
(([Расписание].[Начало])=[Forms]![Расписание]![НевидНадпись1].Caption)
And
(([Расписание].[Окончание])=[Forms]![Расписание]![НевидНадпись2].Caption));

фрагмент кода:

MsgBox (ПолеСоСписком1 & "#" & НевидНадпись0.Caption & "#" & НевидНадпись3.Caption & "#" & НевидНадпись1.Caption & "#" & НевидНадпись2.Caption)

' msgbox выдает значения невидимых надписей (все верные)

qdf.Execute

' здесь run-time error 3061 (слишком мало параметров)
...
Рейтинг: 0 / 0
Опять execute
    #32186201
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и посмотри в семейство qdf.Parameters - что он там получить хочет.
...
Рейтинг: 0 / 0
Опять execute
    #32186214
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ну и посмотри в семейство qdf.Parameters - что он там получить хочет.

смотрю:

Dim str As String
str = ""
For Each p In qdf.Parameters
str = str & p.Name & Chr(10)
Next p
MsgBox (str)

получаю:

[Forms]![Расписание]![ПолеСоСписком1]
[Forms]![Расписание]![НевидНадпись0].Caption
[Forms]![Расписание]![НевидНадпись3].Caption
[Forms]![Расписание]![НевидНадпись1].Caption
[Forms]![Расписание]![НевидНадпись2].Caption

Эти поля в форме существуют и имеют значения, что и показывает msgbox:

MsgBox (ПолеСоСписком1 & "#" & НевидНадпись0.Caption & "#" & НевидНадпись3.Caption & "#" & НевидНадпись1.Caption & "#" & НевидНадпись2.Caption)

Выводится строка значений.

Что за хрень ?
...
Рейтинг: 0 / 0
Опять execute
    #32186218
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
DELETE * 
FROM Расписание 
WHERE 
((([Расписание].[КодЗала])= " & [Forms]![Расписание]![ПолеСоСписком1] & " ) 
And 
(([Расписание].[КодУслуги])=" & [Forms]![Расписание]![НевидНадпись0].Caption & ) ...


Причем текстовые поля надо брать в апостофы, даты в #, числа выделять не надо
...
Рейтинг: 0 / 0
Опять execute
    #32186226
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
sSql= "DELETE * 
FROM Расписание 
WHERE 
((([Расписание].[КодЗала])=[Forms]![Расписание]![ПолеСоСписком1]) 
And 
(([Расписание].[КодУслуги])=[Forms]![Расписание]![НевидНадпись0].Caption) 
And 
(([Расписание].[ДеньНедели])=[Forms]![Расписание]![НевидНадпись3].Caption) 
And 
(([Расписание].[Начало])=[Forms]![Расписание]![НевидНадпись1].Caption) 
And 
(([Расписание].[Окончание])=[Forms]![Расписание]![НевидНадпись2].Caption));" 
msgbox ssql
и посмотри что выводится
ИМХО ты неправильно конкатенируешь строку
...
Рейтинг: 0 / 0
Опять execute
    #32186241
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Сделай
>sSql="DELETE *
>FROM Расписание
>

В смысле - "неправильно конкатенируешь" ?

Именно такой текст запроса у меня выводится при msgbox(qdf.SQL)
...
Рейтинг: 0 / 0
Опять execute
    #32186253
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может форма неправильно названа (ну типа раскладку где-нибудь поменял).
Сори за глупый вопрос - форма то вообще открыта?
?[Forms]![Расписание]![НевидНадпись0].Caption что выводит?
...
Рейтинг: 0 / 0
Опять execute
    #32186256
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При вызове запроса из VBA нельзя ссылаться на Forms![..]![...].
Замени все на функции, которые вернут параметры.
...
Рейтинг: 0 / 0
Опять execute
    #32186257
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Именно такой текст запроса у меня выводится при msgbox(qdf.SQL)

А должно вместо Forms!Что-тоТам стоять ДАННЫЕ!
DELETE *
FROM Расписание
WHERE
((([Расписание].[КодЗала]=7)
And

См. мой пост 11:02
...
Рейтинг: 0 / 0
Опять execute
    #32186282
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При вызове запроса из VBA нельзя ссылаться на Forms![..]![...].
Бред. Очень даже можно. Если это не adp конечно.
Кстати, может это adp, а мы тут мучаемся?
...
Рейтинг: 0 / 0
Опять execute
    #32186318
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лох Позорный

>Может форма неправильно названа (ну типа раскладку где-нибудь поменял).

Нет, с этим все ок - я использовал "построитель выражений"

>Сори за глупый вопрос - форма то вообще открыта?

Разумеется, я из нее и вызываю запрос методом execute :-)

>Кстати, может это adp, а мы тут мучаемся?

Нет.
...
Рейтинг: 0 / 0
Опять execute
    #32186325
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Victor

А почему, скажем, в запросе на обновление (UPDATE), ссылка на поле формы в условии отбора работает как надо, т.е. запрос берет данные из формы и не ругается ?
...
Рейтинг: 0 / 0
Опять execute
    #32186329
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2dannis

Тебя не надоело ху%ней страдать?
Уже несколько раз несколько людей тебе сказали - НЕ ПРАВИЛЬНО СЦЕПЛЯЕШЬ!
А ты продолжаешь обсуждать какую-то фигню.
...
Рейтинг: 0 / 0
Опять execute
    #32186332
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу билят это засада
Даже забыл про это
Запросы на удаление не воспринимают ссылки на формы. По крайней мере в 97-м аксесе. Почему все остальные запросы могут, а этот нет - хз.
Делай так
Код: plaintext
1.
2.
For Each p In qdf.Parameters 
   p.Value = Eval(p.Name)
Next p 
...
Рейтинг: 0 / 0
Опять execute
    #32186339
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Тьфу билят это засада
>Даже забыл про это
>Запросы на удаление не воспринимают ссылки на формы. По крайней мере в >97-м аксесе. Почему все остальные запросы могут, а этот нет - хз.

Вот я и пришел к такому выводу (см. мой предыд. пост), только подтвердить было неоткуда - в справке не нашел ...
...
Рейтинг: 0 / 0
Опять execute
    #32186343
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Victor

>Тебя не надоело ху%ней страдать?
>Уже несколько раз несколько людей тебе сказали - НЕ ПРАВИЛЬНО >СЦЕПЛЯЕШЬ!

А на кой х%й самому сцеплять, если есть "построитель выражений" ?
(ибо я не знал, что с DELETE такие трудности со ссылками на элементы форм)
...
Рейтинг: 0 / 0
Опять execute
    #32186368
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 dannis
А на кой х%й самому сцеплять, если есть "построитель выражений" ?
На "построитель выражений" надейся -а сам не плошай
...
Рейтинг: 0 / 0
Опять execute
    #32186372
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>На "построитель выражений" надейся -а сам не плошай

Звучит обнадеживающе :-/
...
Рейтинг: 0 / 0
Опять execute
    #32186400
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пивотные запросы вроде такой же херней страдают. Я их не использую, но в форуме где-то проскакивало. Свинство со стороны майкрософт.
Я вообще стараюсь не делать ссылки на формы из запросов (на доб./изм./уд.) без крайней необходимости. Переименуются у меня форма - и что, все запросы переписывать? Или захочу я этот запрос где-нибудь еще использовать - придется форму открывать
Сохраненный запрос с параметрами меня вполне устраивает в большинстве случаев. Хотя, конечно, случаи разные бывают (сказал Ржевский намазывая задницу вазелином).
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Опять execute
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]