Вроде все связи установила, расписала в коде.. ну почему-то все еще ошибка на 69 строчке
Код:
bindingSourceGroups = new BindingSource(bindingSourceSpec, "профиль-группа");
- Аргумент "column" не может быть пустым
и читала как связи делать между таблицами , и по бд самой все правильно вроде записано.
и при чем ругается на вторую таблицу, когда инициализирует данные
может что-то переделать надо? или дописать , чтоб правильно работало?
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.ProviderBase;
using System.Data.Common;
using System.Data.Odbc;
using System.Data.Sql;
using System.Data.SqlTypes;
using System.Collections;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
OleDbConnection conn;
OleDbDataAdapter adapterSpec;
OleDbDataAdapter adapterGroups;
OleDbDataAdapter adapterStudents;
DataSet dataSet;
BindingSource bindingSourceSpec;
BindingSource bindingSourceGroups;
// BindingSource bindingSourceStudents;
public Form1()
{
InitializeComponent();
string commandText1 = "select * from профиль";
string commandText2 = "select * from группа";
// string commandText3 = "select * from студенты";
string ConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data Source=D:\УЧЕБА\univer (mdb).mdb";
conn = new OleDbConnection(ConnectString);
conn.Open();
adapterSpec = new OleDbDataAdapter(commandText1, conn);
adapterGroups = new OleDbDataAdapter(commandText2, conn);
adapterStudents = new OleDbDataAdapter(commandText2, conn);
dataSet = new DataSet();
adapterSpec.Fill(dataSet, "профиль");
adapterGroups.Fill(dataSet, "группа");
adapterStudents.Fill(dataSet, "студенты");
DataRelation dr1;
dr1 = new DataRelation("профиль-группа", //название связи
dataSet.Tables["профиль"].Columns["id_профиль"],//первичный ключ главной таблицы
dataSet.Tables["группа"].Columns["id_профиль"]);//внешний ключ подчиненной таблицы
//DataRelation dr2;
//dr2 = new DataRelation("группа-студенты", //название связи
//dataSet.Tables["группа"].Columns["id_профиль"], //первичный ключ главной таблицы
//dataSet.Tables["студенты"].Columns["Группа"]);//внешний ключ подчиненной таблицы
bindingSourceSpec = new BindingSource(dataSet, "профиль");
spec.DataSource = bindingSourceSpec;
bindingSourceGroups = new BindingSource(bindingSourceSpec, "профиль-группа");
groups.DataSource = bindingSourceGroups;
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "_univer__mdb_DataSet.студенты". При необходимости она может быть перемещена или удалена.
this.студентыTableAdapter.Fill(this._univer__mdb_DataSet.студенты);
// TODO: данная строка кода позволяет загрузить данные в таблицу "_univer__mdb_DataSet.группа". При необходимости она может быть перемещена или удалена.
this.группаTableAdapter.Fill(this._univer__mdb_DataSet.группа);
// TODO: данная строка кода позволяет загрузить данные в таблицу "_univer__mdb_DataSet.профиль". При необходимости она может быть перемещена или удалена.
this.профильTableAdapter.Fill(this._univer__mdb_DataSet.профиль);
}
}
}
меняю на такое :
Код:
bindingSourceSpec = new BindingSource(dataSet, "профиль");
spec.DataSource = bindingSourceSpec;
bindingSourceGroups = new BindingSource(dataSet, "группа");
groups.DataSource = bindingSourceGroups;
Запускается, но ничего не происходит
выбирает все из всех,а я хочу чтоб выбрав определенный профиль - можно было выбрать только из групп которые в него входят. а этого нет
как сделать правильно, чтоб работало?подскажите пожалуйста