Это должно помочь вам начать:
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDB()
For Each qdf In db.QueryDefs
Debug.Print qdf.SQL
Next qdf
Set qdf = Nothing
Set db = Nothing
Вы можете использовать объект файловой системы или встроенные функции ввода-вывода файлов VBA для записи SQL в файл. Я предполагаю, что вы спрашивали больше о том, как получить SQL, чем о том, как записать файл, но если вам это нужно, скажите это в комментарии, и я отредактирую сообщение (или кто-то опубликует свой ответ с инструкции для этого).
Нет. Наиболее очевидное отличие состоит в том, что sleep ()
генерирует (проверено) InterruptedException
. На практике эффект может быть почти таким же, но полностью зависит от реализации.
Могу поспорить, что выполнение каждого из них миллион раз подряд потребует намного больше времени для sleep (), поскольку детализация системного таймера, вероятно, часто заставляет его фактически спать в течение значительного количества времени. .
This really depends on the platform and version of the JVM. For example, under Windows in JDK 5 (Hotspot), yield() is literally implemented as Sleep(0)-- although a sleep of 0 is treated slightly specially by Windows as I recall. But in JDK 6, yield() is implemented as SwitchToThread().
I put together some information a while ago on Thread.yield(), including some implementational details that may be of interest. (You might also want to see the stuff on Thread.sleep() I put together on the same site.)
Yield добавляет текущий поток в очередь готовности и разрешает выполнение других потоков. Выключение процессора не гарантируется в спящем режиме.
yield () сообщает планировщику потоков JVM что нормально давать другие темы временные отрезки. Обычно JVM использует это вызов для активации другого потока тот же приоритет потока. В хорошем вытесняющая многопоточная среда, yield () не работает. Однако это важно в кооперативе многопоточная среда, поскольку без yield () один поток может съесть всего ЦП.
sleep (x) сообщает потоку JVM Планировщик для активного размещения этой темы спать и не запускать его снова, пока прошло минимум x миллисекунд.
Ни sleep (), ни yield () не изменяются что-нибудь о статусе блокировки синхронизации. Если ваша ветка есть блокировка, и вы вызываете sleep (1000), то пройдет как минимум секунда до того, как проснется ваша нить. Когда это просыпается, он может решить выпустить замок - или он может держаться за него длиннее.
Thread.Yield может передать ресурсы ЦП потокам с более низким приоритетом, а Thread.Sleep (0 ) передает ЦП только потокам с равным или более высоким приоритетом.
По крайней мере, на платформе Windows :)