Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Отобразить в dataGridView1 связные таблицы . . .


Автор: potkin 10.9.2008, 13:03
Товарищи программеры подскажите ПОЖАЛУЙСТА :

Есть в БД 2-е таблицы (MS SQL Server 2005 Express):

source (id,  name) 
documents_source (id,  id_source)


Надо отобразить в Гриде таблицу "documents_source", но вместо поля "id_source" надо отобразить поле "name" таблицы "source".

Вот это то к чему я пока пришёл:
Код


            strCommand = "SELECT id, name FROM source";
            myData = new SqlDataAdapter(strCommand, myConn);
            myData.Fill(DataSet1, "source");

            strCommand = "SELECT id, id_source, id_documents FROM documents_source where id_documents=1";
            myData.SelectCommand.CommandText = strCommand;
            myData.Fill(DataSet1, "documents_source");

            parentColumn = DataSet1.Tables["source"].Columns["id"];
            childColumn = DataSet1.Tables["documents_source"].Columns["id_source"];
            rel = new DataRelation("s_d", parentColumn, childColumn);
            DataSet1.Relations.Add(rel);

            builderDocuments_source = new SqlCommandBuilder(myData);
            builderDocuments_source.RefreshSchema();

            DataGrid1.DataSource = DataSet1.(???????????????)





 + надо ещё вносить данные в DataGridView и сохранять их: 

Код


myData.Update(DataSet1, "documents_source");



ПОЖАЛУЙСТА подскажите: Правельный ли код и если "Правельный" то что надо записать вместо "(???????????????)"
Может кто сталкивался с подобной проблемой и решил её . . . может захочет вылочить "код" . . .

СПОСИБО  ВСЕМ  ОТКЛИКНУВШИМСЯ !!!

Автор: MasterOfCode 11.9.2008, 06:31
Код

SqlCommand cmdSQL = new SqlCommand(connectionString, sqlConnection); //подставь свои параметры
cmdSQL.CommandText = "SELECT d.id, s.name, d.id_documents FROM documents_source d, source s where s.id=d.id_source id_documents=1";
myData.Fill(DataSet1, "documents_source");
DataGrid1.DataSource = DataSet1.Table["documents_source"];



Цитата(potkin @  10.9.2008,  15:03 Найти цитируемый пост)
+ надо ещё вносить данные в DataGridView и сохранять их: 

1 TOPик = 1 Вопрос.

Автор: potkin 11.9.2008, 09:13
Код


SqlCommand cmdSQL = new SqlCommand(connectionString, sqlConnection); //подставь свои параметры
cmdSQL.CommandText = "SELECT d.id, s.name, d.id_documents FROM documents_source d, source s where s.id=d.id_source id_documents=1";
myData.Fill(DataSet1, "documents_source");
DataGrid1.DataSource = DataSet1.Table["documents_source"];



  На данный момент ОНО так у меня и работает и сохранняю каждую запись "сразу" в БД так:

Код


commandText = @"INSERT INTO documents_source (id_source)values(" + dGSource.CurrentRow.Cells["id"].Value  + ")";
SqlCommand myCommand = new SqlCommand(commandText, conn);
conn.Open();
myCommand.ExecuteNonQuery();



  Но прикол в том, что такое не подходит: Надо в Грид вставить, отредактировать, удалить некоторые записи, а потом уже всё вместе сохранить.  А как это сделать ?????  Вот ВОПРОС !!!

Цитата

1 TOPик = 1 Вопрос.


ОК !!!  Создам новый топик !!!
  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)