Refresh backgroundquery false что это
Refresh backgroundquery false что это
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Answered by:
Question
This might be a common problem and I found another topic that relates to mine but it isn’t quiet the same and I can’t find a solution to my problem by using it’s solution.
I have a VBA script for getting data from a HTML table to a Excel file. At the HTML page the VBA script first logges in with a name and password written in the Excel file and given with the GET method.
The HTML checks if the user is already logged in (session variables) and if so it gets the data from the table to Excel. If not the user is logged in and then the data is send.
When I run the script it returns a 1004 error. This error is given at «.Refresh BackgroundQuery:=False».
From using Google I understand that a 1004 error is given when the browser returns an errorcode that VBA doesn’t know.
When I open the page (In both cases (with the username and password in the URL and already logged in without this)) in any browser (Safari, Firefox, Internet Explorer) the page doesn’t return any error nor report any problems with the page.
Метод QueryTable.Refresh (Excel)
Обновляет внешний диапазон данных в объекте QueryTable.
Синтаксис
выражения. Обновление (BackgroundQuery)
выражение Переменная, представляюная объект QueryTable.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
BackgroundQuery | Необязательный | Variant | Используется только с помощью queryTables, основанных на результатах SQL запроса. Верно, чтобы вернуть управление процедуре, как только будет выполнено подключение к базе данных и будет отправлен запрос. В фоновом режиме обновляется queryTable. False, чтобы вернуть управление процедуре только после того, как все данные были извлечены в таблицу. |
Если этот аргумент не указан, параметр свойства BackgroundQuery определяет режим запроса.
Возвращаемое значение
Примечания
Следующие замечания применимы к объектам QueryTable, основанным на результатах SQL запроса.
Метод обновления Microsoft Excel подключение к источнику данных объекта QueryTable, выполнение запроса SQL и возвращение данных в диапазон, основанный на объекте QueryTable. Если этот метод не называется, объект QueryTable не взаимодействует с источником данных.
При подключении к источнику данных OLE DB или ODBC Microsoft Excel строку подключения, заданную свойством Connection. Если в указанной строке подключения отсутствуют необходимые значения, будут отображаться диалоговое окно для запроса пользователем требуемой информации. Если свойство DisplayAlerts является false, диалоговое окно не отображается, а метод Обновления не удается с исключением Недостаточной информации о подключении.
После Microsoft Excel успешного подключения она сохраняет завершенную строку подключения, чтобы во время одного сеанса редактирования не отображались запросы на последующие вызовы к методу Обновления. Вы можете получить завершенную строку подключения, изучив значение свойства Connection.
После подключения к базе данных проверяется SQL запрос. Если запрос не является допустимым, метод Обновления сбой с исключением SQL синтаксиса.
Если запрос требует параметров, необходимо инициализировать коллекцию Параметры с информацией о привязке параметров перед тем, как будет вызван метод Обновления. Если не достаточно параметров было связано, метод Обновления не удается с исключением ошибки параметра. Если параметры заданы для запроса их значений, диалоговые окна отображаются пользователю независимо от параметра свойства DisplayAlerts. Если пользователь отменяет диалоговое окно параметра, метод Обновления останавливает и возвращает False. Если дополнительные параметры связаны с коллекцией Параметры, эти дополнительные параметры игнорируются.
Метод Обновления возвращает True, если запрос успешно завершен или запущен; возвращает false, если пользователь отменяет диалоговое окно подключения или параметра.
Чтобы узнать, превысило ли количество извлеченных строк количество доступных строк на таблице, изучите свойство FetchedRowOverflow. Это свойство инициализируются каждый раз, когда вызван метод Обновления.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
QueryTable.Refresh method (Excel)
Updates an external data range in a QueryTable object.
Syntax
expression.Refresh (BackgroundQuery)
expression A variable that represents a QueryTable object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
BackgroundQuery | Optional | Variant | Used only with QueryTables that are based on the results of a SQL query. True to return control to the procedure as soon as a database connection is made and the query is submitted. The QueryTable is updated in the background. False to return control to the procedure only after all data has been fetched to the worksheet. |
If this argument isn’t specified, the setting of the BackgroundQuery property determines the query mode.
Return value
Remarks
The following remarks apply to QueryTable objects that are based on the results of a SQL query.
The Refresh method causes Microsoft Excel to connect to the data source of the QueryTable object, execute the SQL query, and return data to the range that is based on the QueryTable object. Unless this method is called, the QueryTable object doesn’t communicate with the data source.
When making the connection to the OLE DB or ODBC data source, Microsoft Excel uses the connection string specified by the Connection property. If the specified connection string is missing required values, dialog boxes will be displayed to prompt the user for the required information. If the DisplayAlerts property is False, dialog boxes aren’t displayed and the Refresh method fails with the Insufficient Connection Information exception.
After Microsoft Excel makes a successful connection, it stores the completed connection string so that prompts won’t be displayed for subsequent calls to the Refresh method during the same editing session. You can obtain the completed connection string by examining the value of the Connection property.
After the database connection is made, the SQL query is validated. If the query isn’t valid, the Refresh method fails with the SQL Syntax Error exception.
If the query requires parameters, the Parameters collection must be initialized with parameter binding information before the Refresh method is called. If not enough parameters have been bound, the Refresh method fails with the Parameter Error exception. If parameters are set to prompt for their values, dialog boxes are displayed to the user regardless of the setting of the DisplayAlerts property. If the user cancels a parameter dialog box, the Refresh method halts and returns False. If extra parameters are bound with the Parameters collection, these extra parameters are ignored.
The Refresh method returns True if the query is successfully completed or started; it returns False if the user cancels a connection or parameter dialog box.
To see whether the number of fetched rows exceeded the number of available rows on the worksheet, examine the FetchedRowOverflow property. This property is initialized every time the Refresh method is called.
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
11.7 Коллекция QueryTables и объект QueryTable
Объект Excel.QueryTable, программный импорт значений в Excel из базы данных средствами VBA, свойства, методы и события объекта Excel.QueryTable
Для большинства практических задач вполне хватает возможностей объектов Application, Workbook, Worksheet и Range. Например, для вставки информации из базы данных вы можете пройти циклом по объекту ADO.Recordset и вставить все нужные записи в лист Excel, а затем средствами VBA прописать в строки внизу итоги по вставленным данным. Однако в Excel встроено еще несколько важных специальных объектов, которые могут сильно упростить работу в различных ситуациях. Например, ту же операцию с по вставке информации из базы данных удобнее будет провести при помощи специального объекта QueryTable, который рассматривается в этом разделе. Еще два таких специальных объекта — объекты PivotTable и Chart рассматриваются в следующих разделах.
Как обычно, для того, чтобы создать объект QueryTable и разместить его на листе, нужно использовать специальную коллекцию QueryTables, которая принадлежит рабочему листу (объекту Worksheet) и доступна через его одноименное свойство. Свойства и методы объекта QueryTables — стандартные, как у большинства рассмотренных нами коллекций. Подробного рассмотрения заслуживает только метод Add(), при помощи которого и создается объект QueryTable (с одновременным добавлением в коллекцию). Этот метод принимает три параметра:
Конечно, правильнее всего при создании QueryTable использовать готовый объект Recordset. В этом случае у нас — и самые полные возможности настройки подключения и курсора, и возможность очень эффективного промежуточного хранения данных в оперативной памяти (в объекте Recordset), куда можно вносить изменения, и все очень удобные свойства и методы объекта Recordset. Код на создание объекта QueryTable на листе Excel может выглядеть так (мы используем тот же Recordset на основе таблицы Northwind.Customers, что и в модуле про ADO):
Dim cn As ADODB.Connection
Set cn = CreateObject(«ADODB.Connection»)
cn.ConnectionString = «User Source = LONDON1;» _
& «Initial Catalog = Northwind»
Dim rs As ADODB.Recordset
Set rs = CreateObject(«ADODB.Recordset»)
rs.Open «select * from dbo.customers», cn
Dim QT1 As QueryTable
Set QT1 = QueryTables.Add(rs, Range(«A1»))
Непосредственно помещение объекта QueryTable на лист производится при помощи метода QueryTable.Refresh(). Без него объект QueryTable будет создан только в оперативной памяти.
Теперь — о самых важных свойствах и методах объекта QueryTable:
А такой пример генерирует под первым столбцом QueryTable формулу с суммированием значений этого первого столбца:
Set c1 = Sheets(«Лист1»).QueryTables(1).ResultRange.Columns(1)
c1.End(xlDown).Offset(1, 0).Formula = «=SUM(Column1)»
Методы объекта QueryTable (Refresh(), CancelRefresh(), Delete()) очевидны и каких-либо комментариев не требуют. Метод ResetTimer() позволяет обнулить таймер автоматического обновления, а метод SaveAsODC() позволяет сохранить определение источника данных в виде файла Microsoft Query (если источником был объект Recordset, то этот метод вернет ошибку).
У объекта QueryTable есть также два события: BeforeRefresh и AfterRefresh. Они срабатывают соответственно перед началом загрузки данных с источника и после окончания загрузки.
Свойство QueryTable.Refreshing (Excel)
True, если для указанной таблицы запросов находится фоновый запрос. Только для чтения, Boolean.
Синтаксис
выражения. Обновление
выражение Переменная, представляюная объект QueryTable.
Заметки
Чтобы отменить фоновые запросы, используйте метод CancelRefresh.
Если вы импортируете данные с помощью пользовательского интерфейса, данные веб-запроса или текстового запроса импортируется в качестве объекта QueryTable, а все остальные внешние данные импортируется в качестве объекта ListObject.
Если вы импортируете данные с помощью объектной модели, данные веб-запроса или текстового запроса должны импортироваться в виде QueryTable, а все другие внешние данные можно импортировать как ListObject или QueryTable.
Вы можете использовать свойство QueryTable ListObject для доступа к свойству Refreshing.
Пример
В этом примере отображается поле сообщений, если для таблицы запросов существует фоновый запрос.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.