Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 10 của 10
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Không biết là đoạn code bạn gởi có đủ không. Nếu chỉ là như vậy thì khi Update sẽ không được vì đối tượng DataAdapter chỉ có mỗi câu lệnh select (SelectCommand).

    Để thông qua DataAdapter để thực hiện việc Update những thay đổi dữ liệu từ DataTable lên CSDL, đối tượng DataAdapter phải có thêm các lệnh InsertCommand, UpdateCommand, DeleteCommand (tùy vào thao tác bạn muốn thực hiện).

    Trong trường hợp, bạn muốn sử dụng CommandBuilder để tạo ra các lệnh Insert, Update và Delete (căn cứ trên lệnh Select) thì bảng mà bạn truy vấn phải có PrimaryKey.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tnphong
    Trong trường hợp, bạn muốn sử dụng CommandBuilder để tạo ra các lệnh Insert, Update và Delete (căn cứ trên lệnh Select) thì bảng mà bạn truy vấn phải có PrimaryKey.
    Bản Test của mình chỉ đơn giản hai column ID, Name (ID: PrimaryKey).
    Sau khi đổ toàn bộ dữ liệu từ database (Test table) lên đối tượng dTable, ko biết có phải đặt lại khóa ko...
    Và đặt như thế nào nhỉ

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Update dữ liệu từ DataGridView trên WinForm bị lỗi: Dynamic SQL generation for the UpdateCommand is not supported


    public partial class ThongKe : Form
    {
    SqlConnection conn = new SqlConnection();
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    SqlCommandBuilder cBuilder ;
    DataTable dTable =new DataTable();


    public ThongKe()
    {
    InitializeComponent();
    }

    private void loadData_Click(object sender, EventArgs e)
    {
    //Query database
    conn.ConnectionString = "Server=Shang;Database=vanedb;UID=dba;PWD=1234 56;" ;
    conn.Open();
    dAdapter = new SqlDataAdapter("SELECT * FROM Test", conn);
    cBuilder = new SqlCommandBuilder(dAdapter);

    //Get result
    dAdapter.Fill(dTable);

    //Display result
    dataGridView1.DataSource = dTable;


    conn.Close();
    }



    private void updateData_Click(object sender, EventArgs e)
    {

    dAdapter.Update(dTable);///Lỗi ở đây

    }
    }
    Thông báo lỗi là: Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information

    ...
    Mình phải set primary key cho dTable, nhưng ko biết có đúng hok...và code ntn

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nhuan07
    Thông báo lỗi là: Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information

    ...
    Mình phải set primary key cho dTable, nhưng ko biết có đúng hok...và code ntn
    "supported"!!!!!!!![IMG]images/smilies/dont_know.gif[/IMG]

    Bạn dùng SQL bao nhiêu!!!???

  5. #5
    SQL Server 2008 R2

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nhuan07
    SQL Server 2008 R2
    Mình thì đang dùng 2k5 nên 2k8 thì ko rành lắm!!![IMG]images/smilies/dont_know.gif[/IMG][IMG]images/smilies/dont_know.gif[/IMG]

    Bạn làm thêm xoá sửa trên datagridview ah???

  7. #7
    Ngày tham gia
    Dec 2015
    Bài viết
    0
    Trích dẫn Gửi bởi cchangkhongayngo
    Mình thì đang dùng 2k5 nên 2k8 thì ko rành lắm!!![IMG]images/smilies/dont_know.gif[/IMG][IMG]images/smilies/dont_know.gif[/IMG]

    Bạn làm thêm xoá sửa trên datagridview ah???
    Đâu có đâu, thằng SqlDataAdapter nó hổ trợ sẵn hết rồi. ... Việc bây giờ là PHẢI chỉ cho nó hiểu để nó biết mà làm thế nào...

    Vì thằng dTable nó đang dữ một table, mà table này là kết quả của câu truy vấn, vì vậy thông tin chứa trong dTable có thể do nhiều table khác gộp thành.

    Vậy bây giờ, mình nhấn Update...nó biết update cái gì và update tới đâu..đâu ..vậy đó.

  8. #8
    Anh/em nào mới nhập môn thì cùng phân tích cho vui nhé.
    ...

    SqlDataAdapter: nhận nhiệm vụ liên lạc, vận chuyển giúp, giống máy ông đi xe bưu điện chuyển thư từ, hàng hóa đó. Nhận hàng của người gửi đêm đến cho người nhận.

    DataTable or DataSet: DataSet có một thuộc tính là Table, thuộc tính này lưu trữ các đối tượng của DataTable. Khi có nhu cầu nhận nhiều table thì dùng DataSet, nếu chỉ dùng một thì dùng DataTable.
    DataTable, là người nhận, theo như ví dụ trên. Nó sẽ tạo ra vùng nhớ, lưu trữ toàn bộ dữ liệu gửi đến...Nó hơi ngu ngu một chút, tất các các thuộc tính của đối tượng gửi đến nó đều biết hết, ngoại trừ PHẢI chỉ ra khóa cho table đó. Nếu làm trên ORACLE thì ok...nó tự động tạo khóa. Máy cha lập trình ở MS ngủ quên...quên làm cho SQL.

    DataGridView...thực ra chỉ là màn hình tivi...lấy dữ liệu từ DataTable và hiển thỉ lên...LƯU Ý: mọi thao tác sờ mó trên DataGridView chính là trên DataTable...Vậy hiển nhiên..chẳng có khái niểm...DataGridView Select.Insert.Update.Delete..ảnh hưởng trực tiếp đến database.

    Ok...vậy bây giờ...Phải chỉ khóa cho nó (DataTable)..chỉ như thế nào nhỉ [IMG]images/smilies/wink.png[/IMG][IMG]images/smilies/wink.png[/IMG]

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cái này của mình sẽ giải quyết mọi vấn đề trên thăng datagrdview!!

    Cũng giống cái của bác nhuận đang làm đó!

    Bên dự án source code có bài!

    Tổng hợp các demo...

    cái file Demo Datagridview.rar[IMG]images/smilies/biggrin.png[/IMG]

    Ăn cơm đã!![IMG]images/smilies/18.gif[/IMG]

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Kiểm tra table Test có primary key chưa?
    Thân ^^

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •