powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как обойти синтаксис?
19 сообщений из 19, страница 1 из 1
Как обойти синтаксис?
    #32203399
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Часто приходится писать такие конструкции:

Код: plaintext
1.
2.
Dim x As ...
Set x = ...
x.MyMethod


Описание переменной здесь явно лишнее, и MS, чувствуя это, предлагает другой синтаксис:

Код: plaintext
1.
With ...
.MyMethod


Так удается обойтись без лишнего Dim'а. Но вот другой случай:

Код: plaintext
1.
2.
Dim x As ...
For Each x In ...
x.MyMethod


Есть ли возможность и здесь тоже написать какой-нибудь With, чтобы не описывать переменную?

Thanx заранее!
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203432
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне непонятен вопрос ))
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203440
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Конструкция With позволяет обойтись без лишних описаний переменных. Можно ли каким-то аналогичным образом обойтись без описания переменной, которая ставится в For Each?
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203446
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеешь ввиду что удобнее сделать глобальный объект в общем модуле
и потом его использовать?

Код: plaintext
1.
2.
Public Rst as new ADODB.Recordset
Public Conn as ADODB.connection



а в других модулях делать только

Код: plaintext
1.
2.
3.
4.
Rst.Open .... , Conn
....

Rst.Close


Про это вопрос?
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203449
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понял
О каком лишнем dim идет речь?Без dim получите сообщение variable not defined
В последнем примере можно написать
Код: plaintext
1.
2.
3.
4.
5.
Dim x As ...
with x
For Each x In ...
  .MyMethod
loop x
end with

Но это имеет смысл если между with х и end with есть более 2х обращений к переменной х
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203453
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кто мешает использовать with вместе с For Each ?

Код: plaintext
1.
2.
For Each x In ...
with x
    .MyMethod
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203463
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Имеешь ввиду что удобнее сделать глобальный объект

Нет. Я хочу обойтись без объекта, как в конструкции With.

> Без dim получите сообщение variable not defined

Я хочу обойтись без variable.

> а кто мешает использовать with вместе с For Each ?
> For Each x In ...

Я хочу обойтись без x, как в конструкции With.
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203470
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне кажется что ты заблуждаешься насчет WIth

при ее использовании ты вовсе не обходишься без объекта а With X
просто подставляет объект X везде где свойство или метод начинаются на точку или !
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203471
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Именно так. И именно такого эффекта я зочу для случая For Each.
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203480
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Точнее: я говорю не про

Set X=Y
With X

а про

With Y

где Y - выражение, возвращающее объект, например CurrentDb.OpenRecordset(...), а не переменная. При этом имя X нигде не фигурирует.
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203491
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что мешает написать
Код: plaintext
1.
with currentDb
set x=.OpenRecordset(...)
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203494
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> А что мешает написать

Переменная x, которая согласно постановке вопроса должна отсутствовать.
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203502
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переменная x, которая согласно постановке вопроса должна отсутствовать
И чему тогда присваивать?
PS В.С не обижайся но помоему тебе пора в отпуск(дружеский совет)
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203503
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> И чему тогда присваивать?

Ничему - как в конструкции With. Переменная существует только в компиляторе, а в программе ее имя нигде не упоминается.

> PS В.С не обижайся но помоему тебе пора в отпуск(дружеский совет)

:^) Спасибо.
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203523
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничему - как в конструкции With. Переменная существует только в компиляторе, а в программе ее имя нигде не упоминается
Я уже ничего не понимаю.Если не трудно приведи пример программы ,чтобы ты хотел получить.
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203540
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Если не трудно приведи пример программы

Это я хотел бы получить от кого-нибудь в качестве ответа. :^)

Ну, ОК, пишу на несуществующем языке:

Код: plaintext
1.
2.
With Each ElementOf MyCollection
.MyMethod
End With

- это вместо общепринятого

Код: plaintext
1.
2.
3.
4.
For Each x MyCollection
With x
.MyMethod
End With
Next
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203544
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
То есть

For Each x In MyCollection
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203551
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда тебе надо обратиться к Биллу Гейтсу
...
Рейтинг: 0 / 0
Как обойти синтаксис?
    #32203562
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вопрос в том, можно ли это как-то сварганить из имеющегося репертуара. Например,

For Each i In Array(1, 7, 9)

- это сварганенная из имеющихся For Each и Array замена для отсутствующего

For i = 1, 7, 9
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как обойти синтаксис?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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