2015-02-18 4 views
-2
struct KlasStruct 
{ 
    public string Naam; 
    public int AantalUur; 
} 

KlasStruct[] Klas; 

private void btnMaakLessenrooster_Click(object sender, EventArgs e) 
{ 
    string queryVakkenNaam = "SELECT Naam FROM Vakken"; 
    OleDbDataAdapter dAdapterVakkenNaam = new OleDbDataAdapter(queryVakkenNaam, 
     @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Project Officieel\Project_MagnusCurriculum\Project_MagnusCurriculum\Project.accdb"); 

    DataTable sourceVakkenNaam = new DataTable(); 
    dAdapterVakkenNaam.Fill(sourceVakkenNaam); 

    for (int i = 0; i <= sourceVakkenNaam.Rows.Count - 1; i++) 
    { 
     // Exception happens here: 
     Klas[i].Naam = sourceVakkenNaam[i]["Naam"]; 
    } 

    MessageBox.Show(Klas[0].Naam); 
} 

Исключение я получаю:Заполнение массива DataTable в C#

Error: Cannot apply indexing with [] to an expression of type System.Data.DataColumn

+0

ошибка говорит вам именно то, что случилось .. вы не знакомы с типами в C# ..? google точное сообщение об ошибке, и вы увидите, сколько результатов оно даст ... показать больше усилий, пожалуйста, уважительно говоря, лично говоря, я бы использовал «Список » класса против Struct, но есть более эффективные подходы к тому, что вы пытаетесь сделайте также ... – MethodMan

+0

Мы не знакомы с C#, мы все уже искали в google для тихого времени, пока нет хороших результатов. –

+0

Что значит «мы не знакомы с C#», тогда, возможно, вам нужно начать здесь [C# Basics Tutorial] (http://www.tutorialspoint.com/csharp/) удачи – MethodMan

ответ

0

Массив вы используете KlasStruct[] Klas; не инициализировать. вы можете использовать, как показано ниже:

struct KlasStruct 
{ 
public string Naam; 
public int AantalUur; 
} 

List<KlasStruct> Klas =new List<KlasStruct>(); 

private void btnMaakLessenrooster_Click(object sender, EventArgs e) 
{ 
    //add a try catch 
    string queryVakkenNaam = "SELECT Naam FROM Vakken"; 
    OleDbDataAdapter dAdapterVakkenNaam = new OleDbDataAdapter(queryVakkenNaam, 
     @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Project Officieel\Project_MagnusCurriculum\Project_MagnusCurriculum\Project.accdb"); 

    DataTable sourceVakkenNaam = new DataTable(); 
    dAdapterVakkenNaam.Fill(sourceVakkenNaam); 

    for (int i = 0; i <= sourceVakkenNaam.Rows.Count - 1; i++) 
    { 
     KlasStruct kStruct = new KlasStruct(); ; 
     kStruct.Naam = Convert.ToString(sourceVakkenNaam.Rows[i]["Naam"]); 

     Klas.Add(kStruct); 
    } 


} 
+0

@Michieldepaepe, если это вам помогло, тогда вы можете принять его как ответ. – Arshad

+0

Большое спасибо, это не дает ошибок при запуске программы, но когда я нажимаю кнопку, которая запускает код, эта ошибка возникает: «В Project_MagnusCurriculum.exe произошло необработанное исключение типа« System.NullReferenceException ». –

+0

вы можете добавить 'try-catch' и найти. – Arshad

0

Я думаю, вы пропустили Rows свойство внутри вашего цикла:

foreach (int i = 0; i < sourceVakkenNaam.Rows.Count; i++) 
{ 
    Klas[i].Naam = sourceVakkenNaam.Rows[i]["Naam"]; 
} 
Смежные вопросы