2013-08-31 3 views
0

В VBA, я мог бы что-то вроде этого:разница DAO между C# и VBA наборов записей

Dim recordSet As DAO.recordSet 
    result = recordSet("Column Name") 

Im пытается сделать то же самое в C#, однако

result = recordSet("Column Name"); 

не работал бы потому, что C# использует квадратные скобки для коллекций. Но это не кажется, работать как:

result = recordSet["Column Name"]; 

Любые идеи на C# эквивалент выше VBA кода?

EDIT: Вот полный код VBA Im пытается преобразовать, чтобы положить его в контекст

Public Function GetColumnValues(_ 
           database As database, _ 
           column As String, _ 
           table As String _ 
           ) As String() 

Dim sqlQuery As String 
Dim recordSet As DAO.recordSet 
Dim recordCount As Integer 
Dim results() As String 

sqlQuery = "SELECT [" + table + "].[" + column + "]" & _ 
      "FROM [" + table + "];" 


Set recordSet = database.OpenRecordset(sqlQuery) 
recordSet.MoveLast    
recordSet.MoveFirst 
recordCount = recordSet.recordCount 

ReDim results(recordCount) As String 

For i = 1 To recordCount 
    results(i) = recordSet(column) 
    recordSet.MoveNext 
Next i 

recordSet.Close 

GetColumnValues = results 

End Function 
+0

Вы больше шансов получить помощь, если вы разместите на C# код, который вы пытались выполнить, вместе с любыми сообщениями об ошибках. –

+1

Я не уверен, но, пожалуйста, попробуйте 'recordSet.Fields [" Column Name "]'; –

+0

@DmitryDovgopoly Спасибо! он оказался recordSet.Fields ["Column Name"]. Value; Пожалуйста, отправьте ответ и я принимаю его. – MichaelTaylor3D

ответ

2
result = recordSet.Fields["Column Name"].Value; 
1

Является ли DataSet или DataTable может быть то, что вы ищете?

Edit: Попробуйте что-то вроде этого (пока не проверено и необходима некоторая обработка ошибок):

public string[] GetColumnValues(string connectionString, string table, string column) 
    { 
     var connection = new SqlConnection(connectionString); 
     var dataAdapter = new SqlDataAdapter(
      string.Format("SELECT [{0}].[{1}] FROM [{0}]", table, column), connection); 
     var result = new List<string>(); 

     connection.Open(); 

     var dataSet = new DataSet(); 
     dataAdapter.Fill(dataSet); 

     if (dataSet.Tables.Count > 0) 
     { 
      result.AddRange(from DataRow row in dataSet.Tables[0].Rows select row[0].ToString()); 
     } 

     connection.Close(); 

     return result.ToArray(); 
    } 
+0

Пожалуйста, см. мое редактирование, я добавил функцию VBA, которую я пытаюсь преобразовать в C#, чтобы помещать ее в контекст. – MichaelTaylor3D

+0

Какие параметры импорта у вас есть в коде C#. И какой тип возврата вы ожидаете/нуждаетесь? –

+0

Не уверен, что вы спрашиваете с параметрами импорта. Я просто пытаюсь создать эквивалент C# точного кода, который я написал выше. Переменная результатов ожидает строку. – MichaelTaylor3D

Смежные вопросы