Отказ от ответственности: Как уже упоминалось в комментариях, не используйте этот код в производственной среде. Используйте его только для БД, которую вы используете для школьного проекта или чего-либо подобного. Базы данных действительно отличаются от таблиц 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
и возвращает имя следующего столбца.
Как только вы узнаете имя столбца «Далее», вы можете использовать ту же логику, что и в вашем вопросе.