_EmptY™
...and only emptiness inside...
Гродненец
 Репутация: +17/-0
Offline
Пол: 
Сообщений: 151
И-и-и не толпитесь у меня под ногами!!!
|
 |
« : 25 Май 2010, 22:00:00 » |
|
Народ, помогите, пожалуйста! Нужно оформить вывод данных. В общем, есть база данных, сделанная в access'e, нужно оформить вывод данных, полученных запросом из таблицы. Первоначальный вариант получился с выводом в richTextBox, но, во-первых, это ничерта не красиво, а во-вторых, нет никакой возможности редактировании информации с последующим занесением сделанных изменений в таблицу. Пожалуйста объясните как данные можно вывести в dataGridView.
|
|
|
Записан
|
При рождении человек получает чистую книгу, и фломастеры чтобы на ней рисовать, все в наших руках, мы сами выбираем свою судьбу... Мы не можем вырвать из нашей жизни ни одной страницы… но можем бросить в огонь всю книгу...
|
|
|
coolasm
|
|
|
|
Записан
|
HTTP Error 404 - File or directory not found.
|
|
|
_EmptY™
...and only emptiness inside...
Гродненец
 Репутация: +17/-0
Offline
Пол: 
Сообщений: 151
И-и-и не толпитесь у меня под ногами!!!
|
спасибо большое! еще один вопрос: как записать изменения, сделанные в dataGridView, в саму таблицу? Пробовал так private void UpdateDB(string Path) { dAdapter.Update((DataSet)dataGridView1.DataSource); dAdapter.Update((DataSet)dataGridView2.DataSource); }
но не получается  пишет: "При обновлении не удалось найти TableMapping["Table"] или DataTable "Table"." есть еще такой вариант: string SelectCmd = "SELECT * FROM People"; OleDbDataAdapter dAdapter = new OleDbDataAdapter(SelectCmd, BaseConnect); OleDbCommandBuilder buildCmd = new OleDbCommandBuilder(dAdapter); dAdapter.InsertCommand = buildCmd.GetInsertCommand(); dAdapter.DeleteCommand = buildCmd.GetDeleteCommand(); dAdapter.UpdateCommand = buildCmd.GetUpdateCommand(); dAdapter.Update(dSet.Tables["People"]);
но он тоже не работает...
|
|
« Последнее редактирование: 01 Июнь 2010, 22:27:55 от _EmptY™ »
|
Записан
|
При рождении человек получает чистую книгу, и фломастеры чтобы на ней рисовать, все в наших руках, мы сами выбираем свою судьбу... Мы не можем вырвать из нашей жизни ни одной страницы… но можем бросить в огонь всю книгу...
|
|
|
|
_EmptY™
...and only emptiness inside...
Гродненец
 Репутация: +17/-0
Offline
Пол: 
Сообщений: 151
И-и-и не толпитесь у меня под ногами!!!
|
С биндингом разобрался давно (ошибка была глупейшая), но все равно спасибо за доп. инфу по нему - как говорится, информации много не бывает... А по поводу того, уверен ли я что возвращает dSet - ну DataTable я даже и нетрогал, так что... вот собственно и весь мой код: 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 WindowsFormsApplication2 {
public partial class Form1 : Form { string Path = @"H:\!Разное\!С диска С\My Documents\Visual Studio 2008\Projects\WindowsFormsApplication2\WindowsFormsApplication2\bin\Debug\empty.mdb"; DataSet dSet = new DataSet(); OleDbDataAdapter dAdapter = null; public Form1() { InitializeComponent(); SearchBtn.Visible = false; textBox3.Visible = false; textBox2.Visible = false; textBox1.Visible = false; поИмениToolStripMenuItem.Checked = false; }
private void Form1_Load(object sender, EventArgs e) { LoadBase(Path); dataGridView1.Visible = true; dataGridView2.Visible = true; }
private DataSet LoadBase(string Path) { string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;" + "data source=" + Path; OleDbConnection BaseConnect = new OleDbConnection(connectionString); string baseerrtxt = ""; DataSet dSet = new DataSet(); try { BaseConnect.Open(); baseerrtxt = "" + BaseConnect.State; if (baseerrtxt == "Open") { //MessageBox.Show("База открыта"); textBox3.Text = "" + baseerrtxt; } } catch (OleDbException ex) { MessageBox.Show("Не удалось открыть базу!" + "\n" + ex.Message); baseerrtxt = "" + BaseConnect.State; textBox3.Text = "" + baseerrtxt; } if ((поИмениToolStripMenuItem.Checked == false) && (запросSQLToolStripMenuItem.Checked == false)) //вывод исходной базы { string SelectCmd = "SELECT * FROM People"; dAdapter = new OleDbDataAdapter(SelectCmd, BaseConnect); dAdapter.Fill(dSet, "People"); SelectCmd = "SELECT * FROM Stuff"; dAdapter = new OleDbDataAdapter(SelectCmd, BaseConnect); dAdapter.Fill(dSet, "Stuff"); dSet.Relations.Add("nRelation", dSet.Tables["People"].Columns["ФИО"], dSet.Tables["Stuff"].Columns["ФИО"]); dataGridView1.DataSource = dSet; dataGridView1.DataMember = "People"; dataGridView2.DataSource = dSet; dataGridView2.DataMember = "People.nRelation"; } else if (поИмениToolStripMenuItem.Checked == true) //поиск в базе по ФИО сотрудника { string emp = textBox1.Text; if (emp != "") { string SelectCmd = "SELECT * FROM People WHERE ФИО = " + "'" + @emp + "'"; dAdapter = new OleDbDataAdapter(SelectCmd, BaseConnect); dAdapter.Fill(dSet, "People"); SelectCmd = "SELECT * FROM Stuff WHERE ФИО = " + "'" + @emp + "'"; dAdapter = new OleDbDataAdapter(SelectCmd, BaseConnect); dAdapter.Fill(dSet, "Stuff"); dSet.Relations.Add("nRelation", dSet.Tables["People"].Columns["ФИО"], dSet.Tables["Stuff"].Columns["ФИО"]); dataGridView1.DataSource = dSet; dataGridView1.DataMember = "People"; dataGridView2.DataSource = dSet; dataGridView2.DataMember = "People.nRelation"; } else if (emp == "") { MessageBox.Show("Введите ФИО"); }
} else if (запросSQLToolStripMenuItem.Checked == true) //отображение данных выданных с помощью SELECT-запроса { string SelectCmd = textBox2.Text; try { dAdapter = new OleDbDataAdapter(SelectCmd, BaseConnect); dSet.EnforceConstraints = false; dAdapter.Fill(dSet, "People"); dAdapter.Fill(dSet, "Stuff"); dataGridView1.DataSource = dSet; dataGridView1.DataMember = "People"; BaseConnect.Close(); } catch (OleDbException) { MessageBox.Show("Введен неправильный SQL-запрос!","Возможна ошибка"); }
} return dSet; }
private void button1_Click(object sender, EventArgs e) { if (запросSQLToolStripMenuItem.Checked == true) { LoadBase(Path); } else if (поИмениToolStripMenuItem.Checked == true) { LoadBase(Path); } } private void поИмениToolStripMenuItem_Click(object sender, EventArgs e) { textBox2.Visible = false; dataGridView2.Visible = true; SearchBtn.SetBounds(120, SearchBtn.Location.Y, SearchBtn.Width, SearchBtn.Height); запросSQLToolStripMenuItem.Checked = false; поИмениToolStripMenuItem.Checked = true; выводБазыToolStripMenuItem.Checked = false; SearchBtn.Visible = true; textBox1.Visible = true; textBox1.BringToFront(); }
private void запросSQLToolStripMenuItem_Click(object sender, EventArgs e) { SearchBtn.Visible = true; SearchBtn.SetBounds(623, SearchBtn.Location.Y, SearchBtn.Width, SearchBtn.Height); поИмениToolStripMenuItem.Checked = false; выводБазыToolStripMenuItem.Checked = false; textBox1.Visible = false; dataGridView2.Visible = false; textBox2.Visible = true; запросSQLToolStripMenuItem.Checked = true; }
private void выводБазыToolStripMenuItem_Click(object sender, EventArgs e) { dataGridView1.Visible = true; поИмениToolStripMenuItem.Checked = false; запросSQLToolStripMenuItem.Checked = false; выводБазыToolStripMenuItem.Checked = true; textBox1.Visible = false; textBox2.Visible = false; SearchBtn.Visible = false; dataGridView2.Visible = true; LoadBase(Path); }
private void UpdateDB(string Path) //корявая попытка апдейта исходной базы { dAdapter.Update(dSet, "People"); dAdapter.Update(dSet, "Stuff"); }
private void Form1_Closing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("Сохранить изменения?", "Сохранение", MessageBoxButtons.YesNo) == DialogResult.OK) { UpdateDB(Path); } } } }
собственно после написанного вами: не вижу у тебя наличие //create a DataTable to hold the query resultsDataTable dTable = new DataTable();//fill the DataTabledAdapter.Fill(dTable); появляется вопрос: обязательно ли работать в данном случае именно с DataTable?
|
|
« Последнее редактирование: 02 Июнь 2010, 04:43:03 от _EmptY™ »
|
Записан
|
При рождении человек получает чистую книгу, и фломастеры чтобы на ней рисовать, все в наших руках, мы сами выбираем свою судьбу... Мы не можем вырвать из нашей жизни ни одной страницы… но можем бросить в огонь всю книгу...
|
|
|
coolasm
|
|
|
« Последнее редактирование: 02 Июнь 2010, 13:21:52 от coolasm »
|
Записан
|
HTTP Error 404 - File or directory not found.
|
|
|
|