Gridview i relacje

0

Witam,

Próbuję znaleźć rozwiązanie mojego problemu.

Mam dwie tabele (lekarz i pacjent) połączone relacją jeden lekarz do wielu pacjentów. W tabeli pacjent umieszczam idlekarza i jest ok.

Chcę znaleźć pacjentów należących do lekarza. W SQL robie to tak:

select pacID, pacImie, pacNazwisko, pacPESEL, pacDataUr, pacAdres, pacWzrost, pacWaga, pacTelefon, pacEmail, pacUwagi from pacjent where lekID=(Select lekID from lekarz where lekLogin='jankow');

Ma to działać dynamicznie i te 'jankow' mam zapisane pod Label1. Chciałbym to wstawić jakoś do zapytania ale nie udaje mi się to. Robiłem to używając Gridview i robiąc własne zapytanie ale nie mogę nie mogę dodać where i ustawić wartość kontrolki label1 jak to czyniłem wcześniej w przypadku zapytania do jednej tabeli.

Mój custom SQL statement wygląda tak:

SELECT pacjent.pacID, pacjent.pacImie, pacjent.pacNazwisko, pacjent.pacPESEL, pacjent.pacDataUr, pacjent.pacAdres, pacjent.pacWzrost, pacjent.pacWaga, pacjent.pacTelefon, pacjent.pacEmail, pacjent.pacUwagi, pacjent.lekID FROM lekarz INNER JOIN pacjent ON lekarz.lekID = pacjent.lekID

Co wyświetla mi oczywiście wszystkich pacjentów.

W tym wątku jest schemat bazy, ale myślę że główny problem opisałem tutaj:

http://4programmers.net/Forum/Bazy_danych/121134-schemat_bazy_do_analizy

0
using System.Data.SqlClient;
string AddWhereClause()
{
string sql="where 1=1 "
if(!string.IsNullOrEmpty(label1.Text))
{
sql+="and lekarz.lekLogin='"+label.Tetxt+"'";
}
return sql;}
void FillGrid(){
 ... SqlConnection cn = new SqlConnection(); 
con.ConnectionString = "Data Source=(local);" + "Initial Catalog=myDatabaseName;" + "Integrated Security=SSPI"; 
con.Open(); 
string sqlQuery ="SELECT pacjent.pacID, pacjent.pacImie, pacjent.pacNazwisko, pacjent.pacPESEL, pacjent.pacDataUr, pacjent.pacAdres, pacjent.pacWzrost, pacjent.pacWaga, pacjent.pacTelefon, pacjent.pacEmail, pacjent.pacUwagi, pacjent.lekID
,lekarz.lekLogin
 FROM lekarz INNER JOIN pacjent ON lekarz.lekID = pacjent.lekID "+AddWhereClause();
using(IDbCommand cmd = con.CreateCommand())
{
cmd.CommandText=sqlQuery;
using (DbDataAdapter da = dbf.CreateDataAdapter())
{
((IDbDataAdapter)da).SelectCommand = cmd;
using (DataTable dt = new DataTable()){
da.Fill(dt);
grdMain.DataSource=dt.DefaultView;
grdMain.DataBind();
}
}
con.Close();  
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1