|
|
|
| Всем привет!
Есть код
Private Sub list_export_button_Click()
On Error GoTo Err_list_export_button_Click
Dim xlApp As Object
Dim xlbook As Object
Set xlApp = CreateObject("excel.Application")
Set xlbook = xlApp.Workbooks.Add
Set xlsheet = xlbook.Worksheets.Add
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset(Me.records_list.RowSource)
Dim n As Integer
For n = 0 To rst.Fields.Count - 1
xlsheet.Cells(1, n + 1).Value = rst.Fields(n).Properties("Caption")
Next
xlsheet.Range("A2").CopyFromRecordset rst
xlApp.Visible = True
Exit_list_export_button_Click:
On Error Resume Next
rst.Close
Set rst = Nothing
Set xlbook = Nothing
Set xlApp = Nothing
Exit Sub
Err_list_export_button_Click:
MsgBox Err.Description
Resume Exit_list_export_button_Click
End Sub
|
Работает в обычной базе,все отлично
Но в разделенной отказывается
Подскажите в чем дело? | |
|
| |
|
|
|
| Что именно не работает?
Ответы на SQL.RU вас не удовлетворили?
Если это проблема в "Слишком мало параметров, требуется 8", то что у вас в Me.records_list.RowSource? | |
|
| |
|
|
|
| В Me.records_list.RowSource у меня SQL запрос. который прописан в модуле формы
Но в неделенной базе все работает, а разделенной отказывается | |
|
| |
|
|
|
|
| Сделал проще, создал динамический запрос на основании RowSource листбокса и DoCmd.OutputTo его, ничего лишнего
Dim myQuery
Dim myDB As Database
Set myDB = CurrentDb
myQuery = "current_list_export"
myDB.CreateQueryDef myQuery, records_list.RowSource
DoCmd.OutputTo acOutputQuery, myQuery, acFormatXLS, , True
DoCmd.DeleteObject acQuery, myQuery
Set myDB = Nothing
End Sub
|
и в конце удаляешь | |
|
| |
|
|
|
| Это значит, что в тексте запроса есть ссылки на элементы формы.DoCmd.OutputTo их глотает, а OpenRecordset - нет. И локальная/разделенная БД здесь ни при чем. Вернее (ИМХО) в локальной БД у вас другой лисбокс с другим RowSource.
Если у вас Акс 2002 или моложе, попробуйте вместо:
Set rst = CurrentDb.OpenRecordset(Me.records_list.RowSource)
указать
Set rst = Me.records_list.Recordset | |
|
| |
|
|
|
| У меня А2003, и базы один в один, одна локальная, другая разделенная | |
|
| |
|
|
|
| Ну нет в вашем коде ничего, что может там работать, а там - нет.
Разве что, попробуйте:
Set rst = CurrentDb.OpenRecordset(Me!records_list.RowSource, dbOpenSnapShot)
ЗЫ. Вы текст своего RowSource так и не показали. И не сказали конкретно - что не работает. | |
|
| |
|
|
|
| могу так же предположить, что может не работать
rst.Fields(n).Properties("Caption")
вообще ТС мог бы конкретно сказать что значить "не работает".... | |
|
| |
|
|
|
| Не работал сам экспорт, писал ошибку типа "слишком мало параметров, их нужно 8"
Выделял строку
Set rst = CurrentDb.OpenRecordset(Me.records_list.RowSource)
|
а со вторым все заработало без проблем
и с запросом проблем нет, он как работал, так и работает | |
|
| |