Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как обойти синтаксис? / 19 сообщений из 19, страница 1 из 1
09.07.2003, 15:58
    #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
09.07.2003, 16:13
    #32203432
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти синтаксис?
мне непонятен вопрос ))
...
Рейтинг: 0 / 0
09.07.2003, 16:17
    #32203440
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти синтаксис?
Конструкция With позволяет обойтись без лишних описаний переменных. Можно ли каким-то аналогичным образом обойтись без описания переменной, которая ставится в For Each?
...
Рейтинг: 0 / 0
09.07.2003, 16:20
    #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
09.07.2003, 16:21
    #32203449
VIG
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
09.07.2003, 16:22
    #32203453
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти синтаксис?
а кто мешает использовать with вместе с For Each ?

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

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

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

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

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

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

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

Set X=Y
With X

а про

With Y

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

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

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

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

:^) Спасибо.
...
Рейтинг: 0 / 0
09.07.2003, 17:02
    #32203523
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти синтаксис?
Ничему - как в конструкции With. Переменная существует только в компиляторе, а в программе ее имя нигде не упоминается
Я уже ничего не понимаю.Если не трудно приведи пример программы ,чтобы ты хотел получить.
...
Рейтинг: 0 / 0
09.07.2003, 17:10
    #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
09.07.2003, 17:11
    #32203544
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти синтаксис?
То есть

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

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

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

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


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