Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обновление дочерней таблицы

69K
04 апреля 2011 года
me_den
2 / / 04.04.2011
Доброго времени суток.
Поиском пользовался - без толку, хотя может плохо искал...
Собственно сам вопрос:
Есть БД, в ней 2 связанные таблицы. Привязка идет по полю "Код". При попытке сохранить данные они падают только в родительскую таблицу не сохраняясь в дочерней.
Дальше код:
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.Common;


namespace rppvv
{
public partial class Form2 : Form
{
string rppConn = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + "\\rppv.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
string avtoSelect = "SELECT * From avto";
string zpSelect = "SELECT * From zp";
SqlDataAdapter avtoAdapter;
SqlDataAdapter zpAdapter;
DataSet rppDataSet;
SqlCommandBuilder avtoBuild;
SqlCommandBuilder zpBuild;
BindingSource bs = new BindingSource();
BindingSource zs = new BindingSource();


int i;


public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{

//Подключение к БД;
avtoAdapter = new SqlDataAdapter(avtoSelect, rppConn);
zpAdapter = new SqlDataAdapter(zpSelect, rppConn);
//Создание CommandBuilder
avtoBuild = new SqlCommandBuilder(avtoAdapter);
zpBuild = new SqlCommandBuilder(zpAdapter);
//Создание DataSet и заполнение его данными;
rppDataSet = new DataSet();
avtoAdapter.Fill(rppDataSet, "avto");
zpAdapter.Fill(rppDataSet, "zp");
//Создание связи между таблицами
DataRelation dr = new DataRelation("FK_zp_avto", rppDataSet.Tables["avto"].Columns["Код"], rppDataSet.Tables["zp"].Columns["Код"], true);
rppDataSet.Relations.Add(dr);


//Создание BindingSource

bs.DataSource = rppDataSet;
bs.DataMember = "avto";
zs.DataSource = bs;
zs.DataMember = "FK_zp_avto";

//Привязка данных к элементам формы;
lsAvto.DataSource = bs;
lsAvto.DisplayMember = "Тип";
lsAvto.ValueMember = "Код";
txtCode.DataBindings.Add("Text", bs, "Код");
txtType.DataBindings.Add("Text", bs, "Тип");
txtCapacity.DataBindings.Add("Text", bs, "Грузоподъемность");
txtSize.DataBindings.Add("Text", bs, "Объем");
txtFuel.DataBindings.Add("Text", bs, "Расход");
txtPorter.DataBindings.Add("Text", zs, "Грузчик");
txtDriver.DataBindings.Add("Text", zs, "Водитель");
txtExp.DataBindings.Add("Text", zs, "Экспедитор");
txtCodeZp.DataBindings.Add("Text", zs, "Код");
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}

//Сохранение в БД
private void btnSave_Click(object sender, EventArgs e)
{
//Проверка корректности вводимых значений
try
{

Convert.ToString(txtType.Text);
Convert.ToDouble(txtCapacity.Text);
Convert.ToDouble(txtSize.Text);
Convert.ToDouble(txtFuel.Text);

//Обновление БД;
bs.EndEdit();
zs.EndEdit();

avtoAdapter.Update(rppDataSet.Tables["avto"]);
zpAdapter.Update(rppDataSet.Tables["zp"]);

MessageBox.Show("База данных обновлена!");
}
catch
{
MessageBox.Show("Введите корректные данные!");
}
}



private void btnAdd_Click(object sender, EventArgs e)
{
try
{
Convert.ToString(txtType.Text);
Convert.ToDouble(txtCapacity.Text);
Convert.ToDouble(txtSize.Text);
Convert.ToDouble(txtFuel.Text);
lsAvto.SelectedIndex = 0;
i = lsAvto.Items.Count;
DataRow newRow = rppDataSet.Tables["avto"].NewRow();
DataRow zpRow = rppDataSet.Tables["zp"].NewRow();
rppDataSet.Tables["avto"].Rows.Add(newRow);
rppDataSet.Tables["zp"].Rows.Add(zpRow);
lsAvto.SelectedIndex = i;
txtCode.Text = Convert.ToString(i + 1);
txtCodeZp.Text = txtCode.Text;
}
catch
{
MessageBox.Show("Введите корректные данные!!!");
}

}

private void btnDel_Click(object sender, EventArgs e)
{
int k = lsAvto.SelectedIndex;
rppDataSet.Tables["avto"].Rows[k].Delete();
}

}
}

В чем причина, подскажите кто чем может...

PS: не в тот подраздел тему кинул - пардоньте...
69K
04 апреля 2011 года
me_den
2 / / 04.04.2011
Вопрос снят. Проблема была с ключевым столбцом. Добавил:
rppDataSet.Tables["avto"].Columns["Код"].AutoIncrement = true;
rppDataSet.Tables["avto"].Columns["Код"].AutoIncrementSeed = 1;
rppDataSet.Tables["avto"].Columns["Код"].AutoIncrementStep = 1;

rppDataSet.Tables["zp"].Columns["Код"].AutoIncrement = true;
rppDataSet.Tables["zp"].Columns["Код"].AutoIncrementSeed = 1;
rppDataSet.Tables["zp"].Columns["Код"].AutoIncrementStep = 1;

И все пошло...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог