![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Здравствуйте.
Скажите пожалуйства, а как мне отобразить данные из 4-5 связанных таблиц (из БД Access) в одном Datagridview или двух Datagridview , затем чтобы можно их (данные) было редактировать (в Datagridview) и результаты редактирования обязательно записывались в базу данных Access. лучше поподробнее, совсем недавно юзаю С#. |
|||
|
||||
| LOPUH |
|
|||
![]() Растение ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 15.2.2008 Где: Красноярск Репутация: нет Всего: 4 |
Ну,судя по всему, с такой штукой как SQL вы незнакомы, иначе подобный вопрос вряд ли возник. SQL- язык запросов, при помощи которого вы сможете извлечь необходимые данные из одной или нескольких таблиц, сформировать при этом соответствующее представление данных, отредактировать имеющиеся данные в таблицах, а также создать либо удалить сами таблицы.
То есть.если вы хотите писать приложения, работающие с данными, SQL необходим для изучения. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
SQL запрос я смогу сформировать, а куда его прописать в windows приложении к Базе данных. ? как настроить datagridview для редактирования?
|
|||
|
||||
| kin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 9.5.2008 Репутация: нет Всего: 6 |
Блин, чудны, господи, дети твои!... Anddros, по всей видимости, вы думаете, что для того чтобы долететь до Марса, достаточно знать, где у Шаттла находиться педаль газа...
А такой мысли, как обратиться к господам google.ru, yandex.ru, rambler.ru и попросить у них материал на тему "Программирование БД на C#" у Вас, часом, никогда не возникала??? Это сообщение отредактировал(а) kin - 13.3.2012, 12:40 |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Обращался уже.
Но всё равно спасибо за совет. |
|||
|
||||
| fedyunina |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 1.3.2012 Где: Питер Репутация: нет Всего: нет |
||||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Спасибо, обязательно посмотрю.
|
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Загрузить данные в Datagridview можно,на пример, таким образом
А вобще тема уже не раз обсуждаль на форуме, на пример тут |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
>А вобще тема уже не раз обсуждаль на форуме, на пример тут
Эту тему я внимательно просмотрел ранее. Но тамошний пример мне не подходит. В присоединённом там файле ( Project_Test.rar) , рассматривается одна таблица БД Access (мне нужно 4). к тому же код выдаётся ошибка при попытке редактирования. >вот тут все очень доступно и по порядку http://sernam.ru/book_cbd.php Работа с базами данных на языке C#. Технология ADO.NET: Учебное пособие / сост. О. Н. Евсеева, А. Б. Шамшев А здесь рассмаривается отображение двух таблиц в режиме master-detail. Так что только две таблицы. А если , например, использовать 4 таблицы , то даже не могу представить как осуществить редактирование, чтобы измененные данные передавались в БД. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Опишите ситуацию более подробно, какие таблицы, по каким полям связаны?
Какую задачу решаете? |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Имеются таблицы базы данных Access: Book, Izdatelstva, Zhanri, Prodazhi.
Book является дочерней таблицей для Zhanri и Izdatelstva. и является родительской для таблицы Prodazhi. У табл. Zhanri ключевое поле ID_zhanr , у таблицы Izdatelstva ключевое поле ID_izdat. Таблица Book связана с ними по этими полям. Таблица Book имеет ключевое поле Id_knigi (яляется родительской для табл Prodazhi) и связано по этому полю с дочерней таблицей Prodazhi. т.е. связи между родительскими и дочерними : один ко многим. Далее необходимо использовать класс Datagridview, чтобы можно было вывести содержимое таблиц и предусмотрено редактирование этих связанных таблиц и результаты редактирования обязательно записывались в базу данных Access. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Так, давайте по порядку.
Для начала нужно загрузить данные в Datagridview, я так понимаю у вас это получилось, т.к.
а куда его прописать в windows приложении я уже писал Покажите, каким образом загружаете данные в Datagridview? |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
<Покажите, каким образом загружаете данные в Datagridview?
Я смогу загрузить данные в 4 Datagridview. По одной таблице в каждый Datagridview. Я смогу это сделать с помощью мастера. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
||||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
SQL запрос для каждого DatagrigView думаю сделать не составит труда.
Добавлено через 5 минут и 25 секунд В прилагаемом Вами коде запрос осуществляется к одной таблице. А тогда в моём случае как нужно сделать? |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Можно так попробовать
Я написал для 2х таблиц, думаю сделать тоже самое для 4х, будет понятно. Можно заполнять dataGridView в контексте не одного соедения, как я сделал в этом примере, а создавать новое подключение для каждого селекта. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Спасибо. обязательно попробую.
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Данные из 2-х таблиц получилось увидеть на форме. Не с первого раза конечно. Пока не поместил пространстов имен using System.Data.OleDb; и не закинул файл БД в папку Bin\Debug
А для редактирования тогда как быть? Что можете посоветовать? |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Читать MSDN,по ссылке которую я давал ранее (Практическое руководство. Обновление записей в базе данных). Там описано достаточно просто, подробно и с примерами. Если что то не получится пишите - поможем-подскажем. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
System.Data.SqlClient.SqlConnection sqlConnection1 =
new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING "); System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(); cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText = "DELETE Region WHERE RegionID = 5 AND RegionDescription = 'NorthWestern'"; cmd.Connection = sqlConnection1; sqlConnection1.Open(); cmd.ExecuteNonQuery(); sqlConnection1.Close(); Вот это вобще не понятно. просидел 4 часа и бес толку. Вычитал , что SqlConnection, SqlCommand, SqlDataAdapter соответствует OleDbConnection, OleDbCommand, OleDbDataAdapter. Сколько не менял, ничего не получилось. А System.Data.SqlClient это вообще наверное тоже относится к MS SQL Server. Здесь нужно наверное как то производить подключение к Dataset и Dataadapter. Прошу прощения за свою неразумность. |
|||
|
||||
| metis |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Все верно. Если хотите выполнить хранимую процедуру (на пример),которая уже существует в БД, к вашему коду нужно добавить SqlDataAdapter
Если вы хотите формировать SQL запрос в клиенте советую почитать про SqlCommandBuilder. P.S. А при чем тут вобще работа с БД SQL сервера, вы же кажется с БД Acces работаете? |
||||
|
|||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Да . верно , что с Access. Но в примере , который в MSDN, ссылку на который Вы мне скинули , речь идёт о взаимодействии именно с SQL сервером. Вот у меня и возникли трудности по поводу того, как удалять из таблицы строки и как обновлять базу данных.
Добавлено через 2 минуты и 47 секунд Поэтому я и не смог разобраться на основе того примера со своим случаем . Добавлено через 7 минут и 16 секунд А хранимые процедуры , к сожалению, БД Access не поддерживаются вроде. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Поэтому, всё же интересует вопрос как реализовать функции редактирования в СУБД Access с помощью C#.
Добавлено через 10 минут и 17 секунд DELETE Region WHERE RegionID = 5 AND RegionDescription = 'NorthWestern", connection1 А что значит цифра пять? это удаление 5ой строки? В моём случае значит должно быть DELETE Book WHERE ID_knigi AND Nazv_knigi AND Avtor AND ID_zhanr AND ID_izdat AND Cena = Bookshop, connection1 |
|||
|
||||
| metis |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Нужно вызвать метод Update у датаадаптера
или
Это сообщение отредактировал(а) metis - 16.3.2012, 19:38 |
||||
|
|||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
>А что значит цифра пять?
Так что она тут значит в этом запросе? А метод Update это тоже относится к удалению строки или для обновления таблицы? |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Что значит цифра 5 это вы должны знать, я просто скопировал ваз запрос и вставил его в свой пример.
Это все описано в руководстве по обновлению данных в БД, ссылку на которое я уже давал. Читайте, вникайте, пробуйте... |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
<Читайте, вникайте, пробуйте...
Надеюсь мне хватит времени ко времени "Ч". Добавлено через 7 минут и 55 секунд <Это все описано в руководстве по обновлению данных в БД, ссылку на которое я уже давал. К сожалению, там описано касаемо MS SQL сервер. Добавлено через 11 минут и 8 секунд <DELETE Region WHERE RegionID = 5 Это из того примера , что в MSDN. что Вы дали в ссылке. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Касаемо MS SQL сервера, в руководстве описан метод обновления данных с помощью командных объектов, остальные примеры описаны вполне понятно и могут подойти для решения вашей задачи, если вы собираетесь изменять данные путем редактирования информации в datagridview.
Код в "студию", что именно не получается?Какая ошибка? А еще мне интересно, вы говорите про удаление и редактирование данных, а процедура добавления записи в БД у вас уже написана? Это сообщение отредактировал(а) metis - 18.3.2012, 19:17 |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Процедура удаления тоже не написана. Данные из БД вывел в datagridview и вот застрял на удалении. дальше не касался. Добавления записей конечно тоже нет. Код есть тот , что Вы скинули остальные свои собственные разработки уже удалил, т.к. там бред.
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Наверное нужно заново производить подключение к БД чтобы удалить и отдельно чтобы добавить данные. и по новому подкючать dataadapter и datatable
|
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Начинать, по крайней мере я так считаю, нужно все же с добавления данных в БД.
На пример, надо загрузить, обновить, удалить данные из таблицы ФИО, состоящей из 2 полей (столбцов) id числовое поле (автоинкремент) и fio текстовое поле. Я бы сделал следующим образом: 1. Создал форму и разместил бы на ней несколько элементов управления (текстбокс и кнопка) 2. В текстбокс пишем фио и нажимаем кнопку сохранить
Для начала попробуйте сделать добавление данных, обновление и удаление выполняется аналогично, тут главное правильно написать SQL запрос. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
А если меня интересует именно DataGridView. т.е я вношу данные в DataGridView они становится видны в гриде ну и естественно в БД.
Добавлено через 1 минуту и 35 секунд Получается такой же код: string table = "metable"; string dbase = "mydb.mdb"; string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase; OleDbConnection connection = new OleDbConnection(conStr); OleDbDataAdapter adapter = new OleDbDataAdapter(); Необходим и при добавлении и при удалении данных? Добавлено через 5 минут и 54 секунды или текстбокс соединять с ячейкам DatagridView ? |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
А если вы создаете строку в датагридвью, то нужно воспользоваться методом апдейт TableAdapter-а
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Вот это да. опять што но новенькое
Добавлено через 8 минут и 59 секунд TableAdapter.Update(DataSet) Это вот это? |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
или так dataAdapter.Update((DataTable)dataGridView1.DataSource);
|
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Можете выложить ваш проект?
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
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.OleDb; namespace Bookshop { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string dbase = "Bookshop_old.mdb"; string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase; DataSet dataSet = new DataSet(); dataSet.Tables.Add("Zhanri"); dataSet.Tables.Add("Book"); OleDbConnection connection = new OleDbConnection(conStr); OleDbDataAdapter adapter = new OleDbDataAdapter(); connection.Open(); OleDbCommand command1 = new OleDbCommand("SELECT * FROM Zhanri", connection); command1.ExecuteNonQuery(); adapter.SelectCommand = command1; adapter.Fill(dataSet.Tables[0]); dataGridView1.DataSource = dataSet.Tables[0]; OleDbCommand command2 = new OleDbCommand("SELECT * FROM Book", connection); command2.ExecuteNonQuery(); connection.Close(); adapter.SelectCommand = command2; adapter.Fill(dataSet.Tables[1]); dataGridView2.DataSource = dataSet.Tables[1]; adapter.Update(dataSet.Tables[0]); adapter.Update(dataSet.Tables[1]); connection.Close(); } private void button1_Click(object sender, EventArgs e) // довабление строки в datagridview { string table = "Zhanri"; string dbase = "Bookshop_old.mdb"; string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase; OleDbConnection connection = new OleDbConnection(conStr); OleDbDataAdapter adapter = new OleDbDataAdapter(); try { connection.Open(); ну а тут хочу вставить код для добавления в datagrid строк ZhanriTableAdapter.Update(BookshopDataSet); command.ExecuteNonQuery(); connection.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } } } Я основываюсь на Вашем коде. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Попробуйте такой вариант
Это сообщение отредактировал(а) metis - 20.3.2012, 20:07 |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Данные при редактирование обновились в в Базе Данных. а удаление не работает.
На удаление надо что то другое? |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
А почему когда я хочу тоже самое сделать для отображения второй таблицы в Datagridview2
то выскакивает ошибка Error 1 Type 'Bookshop.Form1' already defines a member called 'GetData' with the same parameter types d:\Bookshop\Bookshop\Form1.cs 54 21 Bookshop а я всего лишь добавил ниже dataGridView1.DataSource = bindingSource; GetData("select * from Zhanri"); Добавлено через 1 минуту и 35 секунд т.е. добавил dataGridView2.DataSource = bindingSource; GetData("select * from Zhanri"); ну и такой же код на обработчик событий по нажатию кнопки Button2 |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Хотя на удаление тоже работает и на добавление.
Просто там не удалялось потому что не выделил всю строку. и ошибка выскакивала потому что таблицы же связанные. А как тогда отобразить другие таблицы в остальных datagridview (datagridview2, datagridview3....) все тот же вопрос с GetData. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Проще всего создать для каждой таблицы BindingSource и OleDbDataAdapter и отдельную процедуру получения данных.
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
А покажи пожалуйста как это сделать , у меня так и не получилось.
Вроде понятно, а на самом деле не получается сколько я не пытаюсь. Мне край надо. Я занимаюсь совсем недавно C#. |
|||
|
||||
| metis |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Ну если совсем по простому, то как то так:
Чтобы датагридвью заполнить
Чтобы изменения сохранить
И на конец процедура получения данных
Думаю принцип понятен. |
||||||||
|
|||||||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Жаль что Вы всё время исчезаете и только лишь ненадолго появляетесь вечером.
Добавлено через 11 минут и 17 секунд Почему то ругается Error 1 The type 'Bookshop.Form1' already contains a definition for 'bindingSource1' d:\Bookshop\Bookshop\Form1.Designer.cs 100 52 Bookshop |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Да и на GetData1 и GetData2 ругается
Добавлено через 4 минуты и 44 секунды Еще вот пишет - The name Getdata1 does not exist in the current context |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Ой . прошу прощения. вроде получилось
Добавлено через 4 минуты и 8 секунд Теперь для лучшей наглядности, мне кажется, нужно сделать , чтобы при выборе родительской таблице в дочерней таблице появлялись записи касаемо этой строки. т.е. это так называемый master-detail Добавлено через 14 минут и 19 секунд Вы случаем не знаете как это можно сделать для двух таблиц. Думаю это последнее что мне нужно. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Это наверное здесь не получится, потому что нету объекта DataSet . Ведь в объекте DataSet должны вроде храниться две таблицы
|
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Если я правильно понял, то нужно, чтобы н/р при выборе жанра в dataGridView1, в dataGridView2 загружались все книги этого, выбранного жанра?
Если так то нужно просто передать процедуре заполнения другой запрос, который будет осуществлять выборку из нужной таблицы с указанным условием. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
<Если я правильно понял, то нужно, чтобы н/р при выборе жанра в dataGridView1, в dataGridView2 загружались все книги этого, выбранного жанра?
Да . Вы правы. именно так. Добавлено через 1 минуту и 21 секунду < .....который будет осуществлять выборку из нужной таблицы с указанным условием. Вот это Вы сказанули. Добавлено через 3 минуты и 31 секунду А Вы случаем не знаете как это сделать? В книге я нашел подобный вариант, но мне там трудно разобраться. нашел вот тут4.4.3. Объект DataGridView Добавлено через 4 минуты и 26 секунд |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Ну во первых я не знаю какая у вас БД (какие таблицы по каким полям связаны),
а во вторых SQL запросы это вам в другую ветку форума. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Мдя. вот это да. что же делать, что же делать
Добавлено через 3 минуты и 25 секунд Связаны то они по ключевому полю ID_zhanr. Но тут в таком случае, наверное, и весь код будет выглядеть по другому. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
А как по Вашему такой вариант
DataSet ds = new DataSet(); ds.Tables.Add("Zhanri"); ds.Tables.Add("Book"); ds.Relations.Add("myRelation", ds.Tables["Zhanri"].Columns["ID_zhanr"], ds.Tables["Book"].Columns["ID_knigi"]); dataGridView1.DataSource = ds; dataGridView2.DataSource = ds; dataGridView1.DataMember = "Zhanri"; dataGridView2.DataMember = "Zhanri.myRelation"; Правда у меня ошибку пишет {"'column' argument cannot be null.\r\nParameter name: column"} на ds.Tables["Book"] ругается. код нашел на форуме. |
|||
|
||||
| Anddros |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
metis, а Вы не подскажите как вот в этом коде сделать обновление datagridview1 и datagridview2. Этот код рабочий и вроде то что надо, в родительской таблице (datagridview1) отображаются данные из дочерней таблицы (datagridview2)
Добавлено через 5 минут и 22 секунды Ну то есть , Вы раньше писали Чтобы изменения сохранить
А здесь тогда как по Вашему? |
||||
|
|||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Так пробовали:
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Не работает. пишет что ds не существует . Добавлено через 1 минуту и 11 секунд Error 1 The name 'dataAdapter1' does not exist in the current context d:\3\Bookshop_3\Form1.cs 67 13 Bookshop_3 Добавлено через 3 минуты и 36 секунд Я уже тут долго сижу и ищу как можно обновить. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Так вы создавайте дата-адаптер и датасет так же как создавали BindingSource
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
<так вы создавайте дата-адаптер и датасет так же как создавали BindingSource
А не сможете показать на моем примере? Добавлено через 33 секунды Я уже пробывал вчерашний Ваш код. Добавлено через 1 минуту и 43 секунды Ведь дата-адаптер и датасет уже созданы, а их еще раз получается нужно создавать. Добавлено через 2 минуты и 23 секунды т.е. я пробывал вчерашний код вставлять в этот. никак. |
|||
|
||||
| metis |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Нет вы их создайте 1 раз, а потом просто обращайтесь к ним, как во вчерашнем примере. Получается в вашем примере нужно просто убрать строку
и добавить
попробуйте сделать так. Это сообщение отредактировал(а) metis - 22.3.2012, 19:33 |
||||||
|
|||||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Теперь ругается на dataAdapter в обработчике кода кнопки
Добавлено через 2 минуты и 35 секунд The name 'dataAdapter' does not exist in the current context. Добавлено через 4 минуты и 20 секунд Как то получается , что dataAdapter не видно в обработчике кода кнопи Button |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Ну так и dataAdapter нужно так же создавать как и датасет
И так же нужно убрать создание адаптера в процедуре заполнения Это сообщение отредактировал(а) metis - 22.3.2012, 19:53 |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Неа . не хочет обновлять. и всё тут. ошибка выскакивает.
Добавлено через 1 минуту и 24 секунды Тут же ещё dataAdapter2 создаётся. Добавлено через 3 минуты и 48 секунд А без него. т.е. именно dataAdapter2 программа ругается Добавлено через 8 минут и 14 секунд {"Update requires a valid UpdateCommand when passed DataRow collection with modified rows."} Вот что пишет при обновлении теперь Добавлено через 10 минут и 17 секунд Я уже и так сделал
|
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
||||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Все это я уже делал.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |