Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Экспорт текущего результата листбокса в Ексель
 
 автор: b_mcfadden   (08.04.2010 в 13:28)   личное сообщение
 
 

Всем привет!
Есть код

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

Работает в обычной базе,все отлично
Но в разделенной отказывается
Подскажите в чем дело?

  Ответить  
 
 автор: Анатолий (Киев)   (08.04.2010 в 13:36)   личное сообщение
 
 

Что именно не работает?
Ответы на SQL.RU вас не удовлетворили?
Если это проблема в "Слишком мало параметров, требуется 8", то что у вас в Me.records_list.RowSource?

  Ответить  
 
 автор: b_mcfadden   (08.04.2010 в 13:42)   личное сообщение
 
 

В Me.records_list.RowSource у меня SQL запрос. который прописан в модуле формы
Но в неделенной базе все работает, а разделенной отказывается

  Ответить  
 
 автор: osmor   (08.04.2010 в 14:00)   личное сообщение
 
 

покажите этот запрос

  Ответить  
 
 автор: b_mcfadden   (08.04.2010 в 14:08)   личное сообщение
 
 

Сделал проще, создал динамический запрос на основании 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

и в конце удаляешь

  Ответить  
 
 автор: Анатолий (Киев)   (08.04.2010 в 14:35)   личное сообщение
 
 

Это значит, что в тексте запроса есть ссылки на элементы формы.DoCmd.OutputTo их глотает, а OpenRecordset - нет. И локальная/разделенная БД здесь ни при чем. Вернее (ИМХО) в локальной БД у вас другой лисбокс с другим RowSource.

Если у вас Акс 2002 или моложе, попробуйте вместо:
Set rst = CurrentDb.OpenRecordset(Me.records_list.RowSource)
указать
Set rst = Me.records_list.Recordset

  Ответить  
 
 автор: b_mcfadden   (08.04.2010 в 14:58)   личное сообщение
 
 

У меня А2003, и базы один в один, одна локальная, другая разделенная

  Ответить  
 
 автор: Анатолий (Киев)   (08.04.2010 в 16:40)   личное сообщение
 
 

Ну нет в вашем коде ничего, что может там работать, а там - нет.
Разве что, попробуйте:
Set rst = CurrentDb.OpenRecordset(Me!records_list.RowSource, dbOpenSnapShot)

ЗЫ. Вы текст своего RowSource так и не показали. И не сказали конкретно - что не работает.

  Ответить  
 
 автор: osmor   (08.04.2010 в 17:34)   личное сообщение
 
 

могу так же предположить, что может не работать
rst.Fields(n).Properties("Caption")
вообще ТС мог бы конкретно сказать что значить "не работает"....

  Ответить  
 
 автор: b_mcfadden   (09.04.2010 в 21:06)   личное сообщение
 
 

Не работал сам экспорт, писал ошибку типа "слишком мало параметров, их нужно 8"
Выделял строку

Set rst = CurrentDb.OpenRecordset(Me.records_list.RowSource)

а со вторым все заработало без проблем

и с запросом проблем нет, он как работал, так и работает

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList