Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Несколько уровней оператора With / 13 сообщений из 13, страница 1 из 1
17.06.2020, 17:30
    #39970307
melihron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
Всем привет.
Кто знает, можно ли внутри второго вложения оператора 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
17.06.2020, 17:47
    #39970314
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
melihron
Кто знает, можно ли внутри второго вложения оператора With обратиться к данным из первого вложения ?
нет
...
Рейтинг: 0 / 0
17.06.2020, 21:01
    #39970386
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
Ну попробовать то можно :)
Код: 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
17.06.2020, 23:51
    #39970412
melihron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
Predeclared,
ухтыы... правда, работает, спасибо : )
...
Рейтинг: 0 / 0
18.06.2020, 07:23
    #39970441
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
Predeclared
Ну попробовать то можно :)
Ну это до поры - пока какой-нить параллельный процесс в той же программе не возжелает открыть ещё один рекордсет.
...
Рейтинг: 0 / 0
18.06.2020, 09:46
    #39970458
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
Akina
... параллельный процесс в той же программе ...

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

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


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

В упор не понял, что ты проверяешь. То, что цикл без DoEvents внутри откладывает срабатывание метода - это и так известно.
...
Рейтинг: 0 / 0
18.06.2020, 13:51
    #39970514
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
Тогда уже я не понял, каких параллельных процессов, открывающих новые рекордсеты,
ты ожидал увидеть в бесшовном VBA листинге от ТС?
...
Рейтинг: 0 / 0
18.06.2020, 14:09
    #39970526
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
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
18.06.2020, 17:29
    #39970596
melihron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько уровней оператора With
Сергей Лалов,

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


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