powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Несколько уровней оператора With
13 сообщений из 13, страница 1 из 1
Несколько уровней оператора With
    #39970307
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Кто знает, можно ли внутри второго вложения оператора With обратиться к данным из первого вложения ?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
dim n1 as Long
dim n2 as Long

  With DBEngine(0)(0).OpenRecordset("select * from table1) ' первый уровень
      With DBEngine(0)(0).OpenRecordset("select * from table2) ' второй уровень
         ' можно ли здесь обратиться к рекордсету первого уровня ?
         n1 = .Fields!l1
         n2 = .Fields!l2
      End With
  End With
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970314
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihron
Кто знает, можно ли внутри второго вложения оператора With обратиться к данным из первого вложения ?
нет
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970386
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну попробовать то можно :)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub RecordsetX()
Dim n1 As Long
Dim n2 As Long

  With DBEngine(0)(0).OpenRecordset("select * from Items") ' первый уровень
      With DBEngine(0)(0).OpenRecordset("select * from Anies") ' второй уровень
         ' можно ли здесь обратиться к рекордсету первого уровня ?
         With DBEngine(0)(0)
            With .Recordsets(.Recordsets.Count - 2)
                With .Fields(1)
                    Debug.Print .Name, .Value
                End With
            End With
         End With
'         n1 = .Fields!l1
'         n2 = .Fields!l2
      End With
  End With
End Sub
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970412
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Predeclared,
ухтыы... правда, работает, спасибо : )
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970441
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared
Ну попробовать то можно :)
Ну это до поры - пока какой-нить параллельный процесс в той же программе не возжелает открыть ещё один рекордсет.
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970458
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
... параллельный процесс в той же программе ...

Параллельный процесс в однопоточном Access-Jet-VBA?
Мне такое сотворить не удалось.

зы: Распараллелить вычисления на VBA у меня получилось, подняв несколько экземпляров Access.Application,
а вот запись результатов вычислений в табличку все-равно пришлось ставить в очередь в один поток.
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970460
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared
Параллельный процесс в однопоточном Access-Jet-VBA?
Мне такое сотворить не удалось.
Если, скажем, у формы срабатывает Form.Timer - он что, ждёт завершения текущего кода для своего исполнения? или, наоборот, прерывает выполнение текущего кода до своего завершения?
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970465
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ждет, и это легко проверить:


зы: правильнее "игнорируется".
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970481
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared
Ждет, и это легко проверить:
зы: правильнее "игнорируется".

В упор не понял, что ты проверяешь. То, что цикл без DoEvents внутри откладывает срабатывание метода - это и так известно.
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970514
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда уже я не понял, каких параллельных процессов, открывающих новые рекордсеты,
ты ожидал увидеть в бесшовном VBA листинге от ТС?
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970526
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihron
Всем привет.
Кто знает, можно ли внутри второго вложения оператора With обратиться к данным из первого вложения ?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
dim n1 as Long
dim n2 as Long

  With DBEngine(0)(0).OpenRecordset("select * from table1) ' первый уровень
      With DBEngine(0)(0).OpenRecordset("select * from table2) ' второй уровень
         ' можно ли здесь обратиться к рекордсету первого уровня ?
         n1 = .Fields!l1
         n2 = .Fields!l2
      End With
  End With



Можно, но только если вынести объявление рекордсета за пределы блока With:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
dim n1 as Long
dim n2 as Long

set rs1 = DBEngine(0)(0).OpenRecordset("select * from table1)
set rs2 = DBEngine(0)(0).OpenRecordset("select * from table2)

  With rs1  ' первый уровень
      With rs2   ' второй уровень
         ' можно ли здесь обратиться к рекордсету первого уровня ?
         n1 = .Fields!l1
         n2 = .Fields!l2
      End With
  End With

rs1.close
rs2.close
set rs1=nothing
set rs2=nothing

[/quot]

Только не забудьте указать дополнительно в коде, какую именно запись по счету вы выбираете из этих рекордсетов. По умолчанию в вашем примере выберется первая запись/строка из вашего каждого рекордсета.

ЗЫ: Офисные приложения с позиции потоков в языке VBA все однопоточные. И это огорчает, так как бы хотелось поддать газку на некоторые вычисления.
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970596
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов,

Спасибо за ответ, но кагбы весь смысл данного вопроса как раз в том, чтобы явно не объявлять переменные рекордсетового типа.... и люди в теме уже подсказали, как это сделать...так что спасибо, так мы умеем : )
...
Рейтинг: 0 / 0
Несколько уровней оператора With
    #39970633
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihron,
А, ну да, вижу ответ. Есть. Проглядел
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Несколько уровней оператора With
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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