[ADO.NET] Работа со связанными таблицами через один DataGridView
а сделать одну таблицу, тем же иннер джоином на стдии получения несудьба?
как её потом вернуть в базу, если она получена через DataAdapter?
2 таблы:
fucks(id, name); fucksinfo(fuck_id, fuck_info);
SqlCommand sel = new SqlCommand("select fucks.id as fuck_id, fucks.name as fuck_name, fucksinfo.fuck_info
from fucks inner join fucksinfo on fucks.id = fucksinfo.fuck_id",cn);
SqlCommand upd = new SqlCommand("update fucksinfo set fuck_info = @fi where fuck_id = @id; select fucks.id as fuck_id, fucks.name as fuck_name, fucksinfo.fuck_info from fucks inner join fucksinfo on fucks.id = fucksinfo.fuck_id",cn); // не уверен что нада после upd писать текст select комманды - но мастер вроде так делает.
upd.Parameters.Add(new SqlParameter( "@fi", System.Data.SqlDbType.VarChar, 128, "fuck_info";
upd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, System.Byte0 System.Byte0 "fuck_id", System.Data.DataRowVersion.Original, null;
SqlCommand del = new SqlCommand("delete from fucksinfo where fuck_id = @id",cn);
del.Parameters.Add(new SqlParameter"@id", SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, System.Byte0 System.Byte0 "fuck_id", System.Data.DataRowVersion.Original, null;
SqlDataAdapter da = new SqlDataAdapter;
da.SelectCommand = sel;
da.UpdateCommand = upd;
da.DeleteCommand = del;
По идее этот адаптер должен обслуживать изменение и удаление записей в таблице fucksinfo (поменял, поудалял через DataGridView, сделал da.Update(dt) - и всё зашибись типа. dt это DataSource у GridView). Чтобы можно было ещё добавлять элементы - ната изьебнуться и написать InsertCommand которая сразу в 2 таблицы будет добавлять. Это я с ходу не могу придумать, а проверить - нету возможности.
ps. Сам я особо не шарю в этом, когда то что то пробовал писать - так что за правильность и за грамотность кода не ручаюсь.
![](/images/graemlins/smile.gif)
и зачем нужно inner join? вместе с конструкцией on ...?
такой код возвращает одну таблицу:
select NAMETABLE.NAME, INFOTABLE.ID, INFOTABLE.INFO from NAMETABLE, INFOTABLE
where INFOTABLE.ID = NAMETABLE.ID
![](/images/graemlins/smile.gif)
но разбираться в генерируемом коде геморно - слишком много, на мой взгляд параметров добавляет. Да и InsertCommand генерирует немного неправильно - в ней лучше select SCOPE_IDENTITY as id юзать, чем @@itity, имхо. Так что лучше самому адаптер делать.
ps. Так было в VS2003, как с этим в VS2005 - хз
а эти селект команды не обновляют ли локальную таблицу после инсерта?
code:select NAMETABLE.NAME, INFOTABLE.ID, INFOTABLE.INFO from NAMETABLE, INFOTABLEНу значит пофигу
where INFOTABLE.ID = NAMETABLE.ID
![](/images/graemlins/smile.gif)
я в sql не силён
а эти селект команды не обновляют ли локальную таблицу после инсерта?Ну по идее да, только вот хз нужно ли это. По идее ты же сначала инсертишь в локальную таблицу ...
хотя в общем я и в этом не силён
![](/images/graemlins/smile.gif)
ап! где в 2к5-ой студии достать этот мастер?
Читай документацию, тупик.
это ты к чему?
Оставить комментарий
agaaaa
Есть две таблицы (DataTable). Одна содержит пары ID-NAME, другая инфу, связанную с ID.Требуется в DataGridView отображать с возможностью редактирования вторую (столбец ID не нужно уметь редактировать где вместо ID выводить NAME из первой