CopyFromRecordSet текст в числовой - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь скопировать таблицу, используя метод набора записей, но когда я вставляю, чтобы превзойти цифры, c данные превращаются в текстовые значения. Как я могу это исправить?

Function runReport(nome_relatorio As String)

SQL = sqlStatement(nome_relatorio)
titulo = nome_relatorio
Set wb = ThisWorkbook

If Not SQL = "" Then
    Set query_res = Connect_To_SQLServer_Obj(svName(), dbName(), SQL)

    If wb.Worksheets.Count > 10 Then
        MsgBox ("O limite de relatórios foi atingido. Por favor, exclua um relatório gerado para prosseguir.")
    Else
        Set ws = wb.Sheets.Add(After:=wb.Worksheets(wb.Worksheets.Count))
        ws.Name = wb.Worksheets.Count - 2
        Set rng = ws.Range("B5")
        For i = 0 To query_res.Fields.Count - 1
            rng.Cells(1, i + 1).Value = query_res.Fields(i).Name
        Next i
        rng.Offset(1, 0).CopyFromRecordset query_res
    End If

    Call design
    Call Close_Objects

Else
    Exit Function
End If

End Function

Error in Excel

1 Ответ

0 голосов
/ 17 апреля 2020

Если вы пытаетесь принудительно отформатировать столбцы в Excel как число, если поле имеет числовое значение c, то вы можете посмотреть на свойство .Type поля в наборе записей:

    For i= 0 To query_res.Fields.Count - 1
        With objXLSheet
            .Cells(1, i+ 1) = query_res.Fields(i).name
            If query_res.Fields(i).Type = 4 Then    '   numeric field
                .Columns(i+ 1).NumberFormat = "0"
            Else
                .Columns(i+ 1).NumberFormat = "@"
            End If
        End With
    Next i

С уважением,

...