Chào cả nhà, cho mình hỏi, mình đang tìm hiểu về dạng như thế này:
có 2 table:
Khách hàng(id, tên khách hang, doanh nghiệp ID,)
Doanh nghiệp(id. tên doanh nghiệp)
Làm trên C# thì làm sao để phần mục Doanh nghiệp ID( table khách hàng ) sử dụng ID của table doanh nghiệp, nhưng hiển thị tên của doanh nghiệp đó (tương ứng với ID).
Cả nhà cho mình hỏi đó là dạng gì, muốn tìm hiểu thì kiếm tên như thế nào ạ
Thắc mắc về vấn đề xài id nhưng hiển thị tên của database trong C#
Cái này là sql statement thôi chứ đã leo lên phần program đâu
Bạn thiết kế table theo relationship thì sẽ gọi được one-to-many thôi
Còn hiển thị thì dùng cái join và alias trong sql statement
thanks bạn nhiều…
Mình không hiểu lắm, phiền bạn có thể cho mình link ví dụ ko ạ
JOIN là để gộp nội dung ở nhiều bảng lại trong 1 query statement result.
Bạn xem JOIN ở đây:
https://www.w3schools.com/sql/sql_join.asp
Alias thì như tên gọi của nó, là 1 tên giả, giả sử cột đó tên ban đầu là id_khach_hang
thì sau khi dùng alias as
sẽ chuyển thành name_khach_hang
và ở trong array trả về sẽ có dạng y như vậy.
Cảm ơn bạn nhiều!!!
Ấy chết, đặt tên cho bạn bè hiểu mình thì đặt như thế còn làm thực tế thì hơi phiền nhé bạn
theo mình nên đặt tên không dấu
khach_hang(id, ten_khach,doanh_nghiep_id)
doanh_nghiep(id,ten_doanh_nghiep)
thường thì nên bỏ luôn cái sau -->
khach_hang(id, ten,doanh_nghiep_id)
doanh_nghiep(id,ten)
hix, xem có gọn hơn không
Khi hiển thị theo yêu cầu của bạn thì bạn query như sau
select kh.id as Mã khách hàng, kh.ten as Tên khách, dn.ten as Tên doanh nghiệp
from khach_hang kh, doanh_nghiep dn
where dn.id=kh.doanh_nghiep_id
ok chưa?
Vậy là đưa lên grid thôi. Võ vẽ vài dòng như thế có gì sai thì bạn sửa lại nhé, lâu quá rồi không làm C#
ý quên nói nhỏ bạn nhé, mấy thầy ở trường thì dạy làm thế, nhưng hiện nay dân giang hồ họ không còn chơi cái này nữa đâu…
Cảm ơn bạn nhiều…
Chào bạn, phiền bạn cho mình hỏi thêm ạ, khi hiển thị lên gridview nên làm gì để hiển thị tên thay vì ID ạ
Xin cảm ơn bạn nhiều
string connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=your .mdb file;";
string sql = "SELECT * FROM Authors";
OleDbConnection connection = new OleDbConnection(connetionString);
OleDbDataAdapter dataadapter = new OleDbDataAdapter(sql, connection);
DataSet ds = new DataSet();
connection.Open();
dataadapter.Fill(ds, "Authors_table");
connection.Close();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Authors_table";
Cái query kia sẽ ra kết quả đó bạn.
Khi bạn viết cứ post code lên mọi người sẽ chỉ điểm cho, còn nói chay thì khó cho hai bên.
Nhưng mặc định bạn quất cái DataSource là nó hiển thị cái query kia, các alias sẽ nhảy lên header.
Sorry bạn mình không biết áp dụng vô trường hợp mình
private void showData()
{
DatactyDataContext db = new DatactyDataContext();
var customerlist = db.khach_hangs.ToList();
gcCustomers.DataSource = customerlist;
}
Đây là code mình sử dụng show lên gridview
uh, bạn xài linq…sao lại không ra và hiện tại nó ra cái gì???
Vấn đề của bạn là các truy vấn linq đúng không, hãy xem ví dụ dưới và tự áp dụng nhé
var teacherGroup = from t in context.Teachers
join g in context.Groups on t.ID equals g.TeacherID
where num == t.ID
select new {
t.Id ,
g.Name,
t.xxxx
};
and then
xxxx.DataSource = teacherGroup;
Muốn cái field thành header thì phải làm thế này
class ProjectInfo
{
public string Name {get; set; }
public long Id {get; set; }
}
public List<ProjectInfo> GetProjectForCombo()
{
using (MyDataContext db = new MyDataContext (DBHelper.GetConnectionString()))
{
var query = from pro in db.Projects
select new ProjectInfo(){ Name = pro.ProjectName, Id = pro.ProjectId };
return query.ToList();
}
}
cái default của datagrid thì thế thôi còn muốn uyển chuyển hơn , bạn phải dùng template
thanks bạn nhiều, mình làm đc rồi