Otóż poradziłem sobie z połączeniem grida z bazą danych, nie jest to wielka filozofia, ale chciałbym aby w jednym gridzie były wybrane pola z dwóch tabel. Powiedzmy, że będzie to grid do zamówień i chcę żeby było np. imię, nazwisko i telefon klienta, a z drugiej tabeli nazwa sprzętu i cena.
0
2
Słowa klucz na dziś: SELECT, JOIN
0
Walczę już jakiś czas z tymi 'Kluczami', które mi podałeś... W tej chwili mam coś takiego:
string kwerenda = string.Format("SELECT Klient.Imie, Klient.Nazwisko, Klient.Telefon FROM Klient JOIN Zamowienia ON Id_Klient={0}", textBoxKupiec.Text);
I do tego błąd "Błąd składniowy w klauzuli FROM.". Mam pecha z tą składnią. :(
0
Nie masz pecha, tylko nie chce ci się manuala poczytać.
SELECT Klient.Imie, Klient.Nazwisko, Klient.Telefon FROM Klient JOIN Zamowienia ON Klient.Id = Zamowienia.IdKlienta
Filtrujesz albo w Bindingu, albo przez View.
0
Wciąż próbuję sobie poradzić z tą klauzulą, ale może problem tkwi w czym innym, tutaj podrzucam kod w którym może być jakiś mankament:
private void WypelnienieGridu()
{
string połączenie = @"Provider=Microsoft.JET.OLEDB.4.0;data source=" + _path;
OleDbConnection oleConnection = new OleDbConnection(połączenie);
oleConnection.Open();
string kwerenda = string.Format("SELECT Klient.Imie, Klient.Nazwisko, Klient.Telefon FROM Klient JOIN Zamowienia ON Klient.Id_Klient = Zamowienia.Id_Klient", textBoxKupiec.Text);
_oleAdapter = new OleDbDataAdapter(kwerenda, oleConnection);
_dataSet = new DataSet();
_oleAdapter.Fill(_dataSet, _nazwaTabeli);
for (int licznikKolumn = 0; licznikKolumn < _listaKolumnTabeli.Count; licznikKolumn++)
{
gridZamowienia.Columns.Add(_listaKolumnTabeli[licznikKolumn].NazwaKolumny, _listaKolumnTabeli[licznikKolumn].OpisKolumny);
}
gridZamowienia.Columns[0].Visible = false;
gridZamowienia.Columns[1].Visible = false;
gridZamowienia.Columns[2].Visible = false;
int liczbaWierszy = _dataSet.Tables[_nazwaTabeli].Rows.Count;
for (int licznikWierszy = 0; licznikWierszy < liczbaWierszy; licznikWierszy++)
{
gridZamowienia.Rows.Add();
gridZamowienia.Rows[licznikWierszy].Cells[0].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[0];
gridZamowienia.Rows[licznikWierszy].Cells[1].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[1];
gridZamowienia.Rows[licznikWierszy].Cells[2].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[2];
gridZamowienia.Rows[licznikWierszy].Cells[3].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[3];
gridZamowienia.Rows[licznikWierszy].Cells[4].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[4];
gridZamowienia.Rows[licznikWierszy].Cells[5].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[5];
gridZamowienia.Rows[licznikWierszy].Cells[6].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[6];
gridZamowienia.Rows[licznikWierszy].Cells[7].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[7];
gridZamowienia.Rows[licznikWierszy].Cells[8].Value = _dataSet.Tables[_nazwaTabeli].Rows[licznikWierszy].ItemArray[8];
}
oleConnection.Close();
}
0
Ale kombinujesz...
private void WypelnienieGridu()
{
string polaczenie = @"Provider=Microsoft.JET.OLEDB.4.0;data source=" + _path;
OleDbConnection oleConnection = new OleDbConnection(polaczenie);
oleConnection.Open();
string kwerenda = string.Format("SELECT Klient.Imie, Klient.Nazwisko, Klient.Telefon FROM Klient JOIN Zamowienia ON Klient.Id_Klient = Zamowienia.Id_Klient", textBoxKupiec.Text);
_oleAdapter = new OleDbDataAdapter(kwerenda, oleConnection);
_dataSet = new DataSet();
_oleAdapter.Fill(_dataSet, _nazwaTabeli);
gridZamowienia.DataSource=_dataSet;
gridZamowienia.DataMember=_nazwaTabeli;
oleConnection.Close();
}
KONIEC