Экспорт DAO.recordset из Access в Excel создает пустые столбцы в столбцах типа int - PullRequest
0 голосов
/ 17 июня 2020

Использование встроенных функций DAO в Access для экспорта в Excel, но если для типа данных в столбце таблицы Access задано значение int, столбец будет пустым в Excel. Если перед запуском функции я установил тип данных на короткий текст, данные будут экспортированы правильно. Что здесь происходит?

Это моя функция экспорта:

Private Sub export_Click()
        If IsNull(DLookup("Name", "MSysObjects", "Name='tbl_final_output'")) Then
                MsgBox ("Ingen fundne spilletider til eksport.")
        Else

    Dim sortChoice As Integer

    Dim xlApp As New Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim db As DAO.Database
    Dim rsLabel As DAO.Recordset
    Dim rsData As DAO.Recordset
    Dim strSQL As String
    Dim lngLoop1 As Long
    Dim lngCount As Long
    Dim faneblad As String
    Set db = DBEngine(0)(0)

    sortChoice = Me.sortBox.Value

    Select Case sortChoice

    Case 1
        faneblad = "Track-ID"
    Case 2
        faneblad = "Gramex-ID"
    Case 3
        faneblad = "Producer No_"
    Case 4
        faneblad = "Label no_"
    Case 5
        faneblad = "Organization No_"
    End Select

    strSQL = "SELECT DISTINCT [" & faneblad & "] FROM tbl_final_output ORDER BY [" & faneblad & "] ASC;"
    Set rsLabel = db.OpenRecordset(strSQL)
    If Not (rsLabel.BOF And rsLabel.EOF) Then
        Set xlBook = xlApp.Workbooks.Add
        Do
            Set xlSheet = xlBook.Worksheets.Add(After:=xlBook.Worksheets(xlBook.Worksheets.Count))
            xlSheet.Name = rsLabel(faneblad)
            strSQL = "SELECT * FROM tbl_final_output WHERE [" & faneblad & "]=" & "'" & rsLabel(faneblad) & "'"
            Set rsData = db.OpenRecordset(strSQL)
            For cols = 0 To rsData.Fields.Count - 1
                xlSheet.Cells(1, cols + 1).Value = rsData.Fields(cols).Name
            Next
            If Not (rsData.BOF And rsData.EOF) Then
                xlSheet.Range("A2").CopyFromRecordset rsData
            End If
            rsLabel.MoveNext
        Loop Until rsLabel.EOF
        lngCount = xlBook.Worksheets.Count
        For lngLoop1 = lngCount To 1 Step -1
            If Left(xlBook.Worksheets(lngLoop1).Name, 5) = "Sheet" Then
                xlBook.Worksheets(lngLoop1).Delete
            End If
        Next lngLoop1
        xlBook.Worksheets(1).Delete
        xlApp.Visible = True
    End If
    End If
End Sub

1 Ответ

0 голосов
/ 17 июня 2020

Это текстовый тип.

strSQL = "SELECT * FROM tbl_final_output WHERE [" & faneblad & "]=" & "'" & rsLabel(faneblad) & "'"

Это тип int.

strSQL = "SELECT * FROM tbl_final_output WHERE [" & faneblad & "]=" & rsLabel(faneblad) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...