Da budem iskren, kada sam poceo da se bavim .NET-om, prvi primjeri na koje sam naletio, sadrzavali su rjesenja sa DataSet-om i tako sam nastavio da ih primjenjujem.
DataSet je, kao sto si i sam naveo, kolekcija od DataTables. Ako je DataTable, da je tako nazovem, implementacija jedne tabele, iz baze podataka, u memoriji racunara, onda je DataSet implementacija vise tabela, iz baze, u memoriji.
Recimo, rezultate SELECT upita, iz vise tabela, mozes da smjestis u vise tabela jednog DataSet-a:
Code:
komanda.CommandText = upit; // setuj property CommandText (za instancu SqlCommand)
adap.SelectCommand = komanda; // setuj property SelectCommand (za instancu SqlDataAdapter)
adap.Fill(podaci, imeTabele); // ucitaj podatke iz navedene tabele
Onda mozes da, primjera radi, koristis odredjenu tabelu, iz DataSet-a, kao DataSource za dataGridView:
Code:
dataGridView1.DataSource = dSet.Tables[indeks]; // ili : dSet.Tables["ImeTabele"];
Ja DataSet koristim kada kreiram relacije (DataRelation) izmedju tabela. Recimo:
Code:
BindingSource jobovi;
BindingSource takeOff;
DataSet podaci;
DataRelation relJobTakeOff = new DataRelation("RelJobTakeOff",
podaci.Tables["JobsInfo"].Columns["ID"],
podaci.Tables["JobTakeOff"].Columns["IDJob"]);
podaci.Relations.Add(relJobTakeOff); // dodaj relaciju
jobovi.DataMember = "JobsInfo";
jobovi.DataSource = podaci;
takeOff.DataMember = "RelJobTakeOff";
takeOff.DataSource = jobovi;
E sad, da li postoji razlika izmedju: dSet.Clear() i dTable.Clear(), ja zaista ne znam ...
Ako ne mozes drugacije da se snadjes, mozes pokusati i ovako (uzmi u obzir da ja radim u C#-u - ako sam dobro vidio tvoj primjer, radi se o VB?):
- koristi samo jedan upit (ako sam dobro razumio, koristis istu tabelu u oba upita), koji ti vraca podatke iz kolona: 'a', 'b', 'c', 'd', 'e',
- dodaj kolone (u DesignView-u) u svoj dataGridView i nazovi ih, recimo: 'a', 'b', 'c', 'd', 'e',
- kolonu 'a', u dataGridView-u, setuj kao nevidljivu: 'Visible' = 'false',
- setuj 'DataSource' property (od dataGridView-a) na sledeci nacin:
Code:
// pretpostavimo da si podatke ucitao u DataSet, koji se zove: 'pod'
dataGridView1.AutoGenerateColumns = false;
dataGridView1.Columns["a"].DataPropertyName = pod.Tables["ImeTabele"].Columns["a"].ColumnName;
dataGridView1.Columns["b"].DataPropertyName = pod.Tables["ImeTabele"].Columns["b"].ColumnName;
dataGridView1.Columns["c"].DataPropertyName = pod.Tables["ImeTabele"].Columns["c"].ColumnName;
dataGridView1.Columns["d"].DataPropertyName = pod.Tables["ImeTabele"].Columns["d"].ColumnName;
dataGridView1.Columns["e"].DataPropertyName = pod.Tables["ImeTabele"].Columns["e"].ColumnName;
dataGridView1.DataSource = pod.Tables["ImeTabele"];
// zavisno od konteksta (upita) setuj kolonu 'a' da je visible/not visible
Programming is fun, but writing good software is hard ...