|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите, пожалуйста, почему Запрос отрабатывает нормально как запрос, но при переносе (простым копированием) в свойство формы "Значение по умолчанию" выдает ошибку "Выражение содержит ошибочный подчиненный запрос". Запрос : SELECT "Номер" & CStr(Max(CInt(Mid([СерНомер],6)))+1) FROM Устройства WHERE (((Устройства.СерНомер) LIKE "Номер")); Смысл запроса: Установить в поле [СерНомер] значение по умолчанию "НомерХХХ", где ХХХ - следующий номер (1,2,3,....). Поле [СерНомер] - индексируемое. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 07:03 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
serg22tssСмысл запроса: Установить в поле [СерНомер] значение по умолчанию "НомерХХХ", где ХХХ - следующий номер (1,2,3,....). Поле [СерНомер] - индексируемое. Если это поле имеет тип "Счетчик", тогда можно в свойстве "Формат поля" указать: "Номер "& ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 07:11 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
Спасибо, Agapov_stas. Нет, это поле не счетчик, просто текстовое поле, но индексируемое (совпадения не допускаются). А что, если было бы счетчиком, то "... ошибочный подчиненный ..." изчез бы? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 07:22 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
Agapov_stas, Прошу прощения, не сразу сообразил - если было бы счетчиком, то значение формировалось бы "по умолчанию". Спасибо за совет, хороший вариант, но здесь нужно как-то по-другому.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 07:28 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
serg22tss, тогда не нужно было бы создавать запрос в принципе. Он последовательно создается с новым номером. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 07:29 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
serg22tss, В "значение по умолчанию" можно вводить не запрос, а функцию. Например, VBA функцию. Напишите какую-нибудь функцию что-то вроде этого в VBA: Код: vbnet 1. 2. 3. 4.
Ну а потом в "значение по умолчанию" так и напишите =QueryResult("Здесь SQL текст запроса") В принципе можно и DMax использовать. Что-то вроде этого: Код: vbnet 1.
Правда, я не знаю тип данных поля "СерНомер" и как себя поведёт запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 07:44 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
Да, Agapov_stas, я уже сообразил... И этот вариант мне понравился, но в моем случае его не применишь. Кстати, в вашем примере (если я правильно понял) в выражении [ "Номер "& ] символ & означает текущее значение поля-счетчика. Может быть у меня ошибка возникает из-за того, что в моем запросе этот символ применяется, но "в другом смысле"? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 07:51 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
Спасибо большое, studieren, продолжу "изыскания".. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 07:54 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 10:08 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
Спасибо, __Michelle. Попробовал ваш вариант. Выдает ошибку (при попытке добавить новую запись): #Имя? Изменил строку до такого вида: DMax("Mid(Устройства.[СерНомер],6)";"Устройства") Результат тот же Поле [СерНомер] у меня текстовое, для DMax нужно преобразовывать в число? Хотя, даже если я ставлю дополнительно CInt DMax("CInt(Mid(Устройства.[СерНомер],6))";"Устройства") все-равно ошибка #Имя? остается. Откуда она лезет, пока не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 13:42 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
serg22tss, Внутри DMax использовать название функции нельзя, в том числе и MID. Только название поля. Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 13:53 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
studierenserg22tss, Внутри DMax использовать название функции нельзя, в том числе и MID. Только название поля. Код: vbnet 1.
То есть, как? Вот сейчас специально сделала в таблице текстовое поле с аналогичным именем. И форму ленточную только с этим полем, имеющим аналогичное 19106418 значение по умолчанию. Прекрасно DMax выполняется. И значение по умолчанию правильно формируется. Может, у ТС таблица пустая и не хватает Nz? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 14:22 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
__Michelle, Кажется в старых версиях Access по моему было так. Сейчас попробовал в А2010, таки да, оказывается и Mid можно использовать внутри DMax. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 14:29 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
__MichelleМожет, у ТС таблица пустая и не хватает Nz? Возможно строка, начиная с 6-позиции вовсе не число. Надо смотреть что возвращает =DMax("Mid(СерНомер,6)";"Устройства") ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 14:32 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
studieren, Я пробовала в 2000-м))) Могу сейчас и в 97-м, и в 2003-м для полного уяснения попробовать. Только надо снова табличку и форму заново делать, так как уже далеко от той машины, на которой сделано. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 14:34 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
studieren__MichelleМожет, у ТС таблица пустая и не хватает Nz? Возможно строка, начиная с 6-позиции вовсе не число. Надо смотреть что возвращает =DMax("Mid(СерНомер,6)";"Устройства")Это тоже возможно. Пока верю ТС, утверждающему, что поле имеет значения вида "НомерХХХ".))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 14:36 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
serg22tss, В окне Immediate (вызывается по Ctrl-G в окне редактора VBA) выполните ? DMax("Mid(СерНомер,6)";"Устройства") и ? DMax("СерНомер";"Устройства") Что выдает? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 14:52 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
serg22tss, проверьте зто: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 16:29 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
Доброе утро, форумчане. Огромное спасибо всем откликнувшимся (признаться, даже не ожидал)! По порядку: 1. У меня Access 2007 – 2010. 2. База и таблица [ Устройства ] не пустые. 3. Поле [СерНомер] - текстовое, может содержать и буквы и цифры в текстовом виде. Предназначено для хранения серийного номера устройства. Если серийный номер пока неизвестен, то нужно ввести ( или по умолчанию сразу при добавлении новой записи ) НомерХХХ (где ХХХ – число). Таким образом, в поле находятся записи и типа [SC90LA08243] и типа [номер121]. __Michelle Большое спасибо за доверие. Если случайно ввел Вас в заблуждение – прошу прощения. В моем SQL-запросе изначально стоит фильтр на выборку - WHERE СерНомер LIKE “Номер”, но запрос, прекрасно отрабатывая сам по себе, не желает работать в поле “Значение по умолчанию” (см. вопрос). Команды и ответы: ? DMax("Mid(СерНомер,6)";"Устройства") SC90LA08243 ? DMax("СерНомер";"Устройства") Номер9 Только почему-то DMax у меня вместо двоеточия между параметрами требует запятую, иначе ругается. sdku Me.серия.DefaultValue = "'номер" & Mid(Me.серия, 6) + 1 & "'" Выдает ошибку «Пропущен операнд или оператор, введен недопустимый знак или запятая, либо задана строка без кавычек». Мои попытки поставить кавычки по-другому либо не помогают, либо приводят к другой ошибке. Увы, не силен, пока.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 08:15 |
|
Access. Запрос в свойстве формы "Значению по умолчанию"
|
|||
---|---|---|---|
#18+
serg22tss, Ну, что ж. Теперь все прояснилось. 1. В режиме конструктора в свойстве Значение по умолчанию поля СерНомер укажите Код: sql 1.
Это для того, чтобы значение присутствовало в новой записи при открытии формы. Скопируйте все полностью, включая знак равенства!!! 2. Но этого недостаточно. Как только запись начнет заполняться, откроется следующая "новая" запись, но значение в поле СерНомер этой следующей "новой" записи будет тем же самым, что и в заполняемой. Это произойдет потому, что новое максимальное значение (из заполняемой записи) еще не зафиксировалось в базе, а значение по умолчанию уже срабатывает. Поэтому для формы введите процедуру обработки события После обновления (это VBA) Код: vbnet 1. 2. 3.
Здесь не точки с запятой, а запятые. В режиме конструктора в свойствах используются точки с запятой, а в VBA запятые. Для начала, пока Вам не все ясно, просто скопируйте все в точности отсюда. Все должно нормально получиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 09:03 |
|
|
start [/forum/topic.php?fid=45&msg=39224822&tid=1613633]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 136ms |
0 / 0 |