01/10/2018, 11:48

Thắc mắc về vấn đề xài id nhưng hiển thị tên của database trong C#

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 ạ

Dark.Hades viết 13:53 ngày 01/10/2018

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

Bảo Ngọc viết 13:51 ngày 01/10/2018

thanks bạn nhiều…

Tuyen Van Do viết 14:03 ngày 01/10/2018

Còn hiển thị thì dùng cái join và alias trong sql statement

Mình không hiểu lắm, phiền bạn có thể cho mình link ví dụ ko ạ

Dark.Hades viết 13:52 ngày 01/10/2018

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.

https://www.w3schools.com/sql/sql_alias.asp

Tuyen Van Do viết 13:55 ngày 01/10/2018

Cảm ơn bạn nhiều!!!

Thuc Nguyen Tan viết 14:04 ngày 01/10/2018

Ấ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…

Tuyen Van Do viết 14:00 ngày 01/10/2018

Cảm ơn bạn nhiều…

Tuyen Van Do viết 14:03 ngày 01/10/2018

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

Thuc Nguyen Tan viết 13:59 ngày 01/10/2018
    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.

Tuyen Van Do viết 14:00 ngày 01/10/2018

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

Thuc Nguyen Tan viết 14:01 ngày 01/10/2018

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

Tuyen Van Do viết 13:54 ngày 01/10/2018

thanks bạn nhiều, mình làm đc rồi

Bài liên quan
0