Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / вывод в Excel / 6 сообщений из 6, страница 1 из 1
11.04.2006, 08:05
    #33657307
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод в Excel
Здравствуйте все, объясните пожалуйста что я делаю не так. для вывода в Excel использую такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        ReDim locarr( 0  To rcd2.RecordCount,  1  To rcd2.Fields.Count)
        i =  0 
        Do Until rcd2.EOF
            For j =  1  To rcd2.Fields.Count -  1 
                locarr(i, j) = rcd2.Fields(j).Value
            Next j
            i = i +  1 
            rcd2.MoveNext
        Loop
    
  Xl.Range(Xl.Cells( 4 ,  1 ), Xl.Cells(UBound(locarr,  1 ) +  4 , UBound(locarr,  2 ))).Value = locarr
Xl.Range(Xl.Cells( 4 ,  1 ), Xl.Cells(UBound(locarr,  1 ) +  4 , UBound(locarr,  2 ))).Borders.LineStyle = xlContinuous

При этом он не выводит первый столбец. Что не так?

Или может кто подскажет другой способ вывода данных в excel?
...
Рейтинг: 0 / 0
11.04.2006, 09:11
    #33657376
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод в Excel
может дело в этом
Код: plaintext
For j =  1  To rcd2.Fields.Count -  1 
если предположить что в таблице один столбец
тогда "rcd2.Fields.Count - 1" будет равно 0
...
Рейтинг: 0 / 0
11.04.2006, 09:18
    #33657387
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод в Excel
Тебе нужно просто отладить этот кусок. Ошибка в этом фрагменте:

Plux For j = 1 To rcd2.Fields.Count - 1
locarr(i, j) = rcd2.Fields(j).Value
Next j
Получается цикл от 1 до 1.

Исправь на:

Код: plaintext
1.
2.
        For j =  1  To rst.Fields.Count
            locarr(i, j) = rst.Fields(j -  1 ).Value
        Next j

Цикл от 1 до 2, соответсвующий размерности второго измерения массива, но нумерация полей в рекодсете начитаеся с 0.

И здесь:

авторReDim locarr(0 To rcd2.RecordCount, 1 To rcd2.Fields.Count)
Нужно бы так:

Код: plaintext
ReDim locarr( 0  To rcd2.RecordCount -  1 ,  1  To rcd2.Fields.Count)

Общие комментарии.

1. Почему бы вам не воспользоваться методом "CopyFromRecordset".
2. Зачем все вручную перегонять в массив, когда есть метод "GetRows" объекта Recordset, который позволяет представить набор записей в виде массива.

CopyFromRecordset.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub ExportToExcel()
    Dim xlApp As Excel.Application
    Dim xlWb As Excel.Workbook
    Dim rst As ADODB.Recordset
    
    Set rst = New ADODB.Recordset
    Set xlApp = New Excel.Application
    Set xlWb = xlApp.Workbooks.Add
    xlApp.Visible = True
    
    rst.Open "SELECT * " & _
      "FROM Таблица1", CurrentProject.Connection, adOpenStatic
      
    xlApp.Cells( 4 ,  1 ).CopyFromRecordset rst
End Sub
...
Рейтинг: 0 / 0
11.04.2006, 10:10
    #33657518
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод в Excel
Ashton
Общие комментарии.

1. Почему бы вам не воспользоваться методом "CopyFromRecordset".
2. Зачем все вручную перегонять в массив, когда есть метод "GetRows" объекта Recordset, который позволяет представить набор записей в виде массива.

CopyFromRecordset.



Получилось, только он говорит, что число сохранено как текст, можно этого избежать?
...
Рейтинг: 0 / 0
11.04.2006, 10:38
    #33657600
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод в Excel
Я так понимаю у вас Excel версии 2002 или 2003. Числа в каком формате, разделитель соответсвует региональным установкам, числовой формат ячеек не пробовали задавать?
...
Рейтинг: 0 / 0
11.04.2006, 10:48
    #33657629
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод в Excel
выводимая колонка типа string, т.к. могут встречаться значения "МОЛ 65", а могут просто "85", и вот когда просто он выдает "число сохранено как текст"

Числовой формат при передаче? если да, то как?
Если уже в книге ставить формат, то не помогает, помогает действие "Сохранить как число"
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / вывод в Excel / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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