Как перейти к следующему столбцу в моей базе данных Access из Excel VBA - PullRequest
0 голосов
/ 30 апреля 2018

Сейчас я пытаюсь экспортировать данные из Excel в Access с VBA.

 rst("2k2").Value = sProduct

Это пример того, что я в настоящее время использую, помещая значение sProduct в столбец Access, называемый «2k2». Как бы я перейти к следующему столбцу в Access и поставить значение в этом столбце? Помимо очевидного, используя имя этого столбца.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Отказ от ответственности: Как уже упоминалось в комментариях, не используйте этот код в производственной среде. Используйте его только для БД, которую вы используете для школьного проекта или чего-либо подобного. Базы данных действительно отличаются от таблиц Excel, и положение столбцов не всегда является постоянным.

Сказав это:

Option Explicit

Public Function GetColumnNameAfter(columnName As String) As String

    Dim cnLogs As New ADODB.Connection
    Dim rsHeaders As New ADODB.Recordset
    Dim rsData As New ADODB.Recordset    
    Dim myCounter As Long
    Dim myConn As String
    Dim nameFound As Boolean

    myConn = "Provider=SQLNCLI11;Server=(localdb)\MSSQLLocalDB;"
    myConn = myConn & "Initial Catalog=Blog;Trusted_Connection=yes;timeout=30;"
    cnLogs.Open myConn

    With rsHeaders
        .ActiveConnection = cnLogs
        .Open "SELECT * FROM syscolumns WHERE id=OBJECT_ID('Posts')"

        Do While Not rsHeaders.EOF
            'Printing is fun...
            'Debug.Print rsHeaders(0)

            If nameFound Then
                GetColumnNameAfter = rsHeaders(0)
                Exit Function
            End If

            If columnName = rsHeaders(0) Then nameFound = True
            myCounter = myCounter + 1
            rsHeaders.MoveNext
        Loop
        .Close
    End With

End Function

В strConn замените Начальный каталог на вашу БД, а таблицы БД. Здесь сообщения OBJECT_ID('Posts')" - на вашу таблицу БД. Затем функция вернет String имя столбца после того, которое вы указали в качестве параметра.

Код проходит по заголовкам таблицы с именем «Posts», которая находится в БД с именем Blog. Как только он находит заголовок с именем columnName, он устанавливает nameFound в True и возвращает имя следующего столбца.

Как только вы узнаете имя столбца «Далее», вы можете использовать ту же логику, что и в вашем вопросе.

0 голосов
/ 30 апреля 2018

Вы можете установить поля в переменную и прокручивать их.

Dim fld as DAO.Field

for each fld in rst.fields
    'Do some stuff
next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...