thắc mắc về datagridview trong vb.net mong các bạn giúp đỡ

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi ZKeitherZ, 28/6/09.

  1. ZKeitherZ

    ZKeitherZ The Warrior of Light Lão Làng GVN

    Tham gia ngày:
    28/7/05
    Bài viết:
    2,248
    Nơi ở:
    Blizzard
    hiên tại mình đang học vb.net

    mình học kết nối CDSL (access) vào vb.net và xữ lý các biến cố thêm xóa sữa, và đã xữ lý dc nhưng phải use các textbox để làm trung gian

    hình 1

    giờ mình muốn thực hiện các thao tác trên ngay trên datagridview luôn

    ví dụ như sao khi thêm 2 dòng mới trên datagridview thì bấm nút update cái nó sẽ ghi lại 2 dòng đó vào CSDL luôn

    hình 2

    mình lập trình với VB.NET

    thanks các bạn
     

    Các file đính kèm:

  2. thanhtungtnt

    thanhtungtnt The Pride of Hiigara Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    9,380
    Nơi ở:
    Balamb City
    Có cái code nho nhỏ bạn tham khảo xem (cái này viết theo mô hình 3 lớp nhé, viết trong lớp DAO) :
    Mã:
    Public Sub Them(ByVal nvDto As NhanVienDto)
            Dim cn As OleDbConnection
            'B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = Database.ConnectionData()
            'B3: Tao chuoi strSQL thao tac CSDL
            Dim strSQL As String
            strSQL = "Insert into NhanVien(MaNV, TenNV, GioiTinh, CMND, NgaySinh, DiaChi, MaDV) values (?, ?, ?, ?, ?, ?, ?)"
    
            'B4: Thuc thi chuoi strSQL
            Dim cmd As New OleDbCommand(strSQL, cn)
    
            cmd.Parameters.Add("@MaNV", OleDbType.Integer)
            cmd.Parameters.Add("@TenNV", OleDbType.WChar)
            cmd.Parameters.Add("@GioiTinh", OleDbType.WChar)
            cmd.Parameters.Add("@CMND", OleDbType.WChar)
            cmd.Parameters.Add("@NgaySinh", OleDbType.Date)
            cmd.Parameters.Add("@DiaChi", OleDbType.WChar)
            cmd.Parameters.Add("@MaDV", OleDbType.Integer)
    
            cmd.Parameters("@MaNV").Value = nvDto.MaNV
            cmd.Parameters("@TenNV").Value = nvDto.TenNV
            cmd.Parameters("@GioiTinh").Value = nvDto.GioiTinh
            cmd.Parameters("@CMND").Value = nvDto.CMND
            cmd.Parameters("@NgaySinh").Value = nvDto.NgaySinh
            cmd.Parameters("@DiaChi").Value = nvDto.DiaChi
            cmd.Parameters("@MaDV").Value = nvDto.MaDV
    
            cmd.ExecuteNonQuery()
    
            strSQL = "Select @@IDENTITY"
            cmd = New OleDbCommand(strSQL, cn)
            nvDto.MaNV = cmd.ExecuteScalar()
            'B5: Dong ket noi CSDL
            cn.Close()
        End Sub
    
     
  3. ZKeitherZ

    ZKeitherZ The Warrior of Light Lão Làng GVN

    Tham gia ngày:
    28/7/05
    Bài viết:
    2,248
    Nơi ở:
    Blizzard
    để mình tìm hiểu cái này, nhưng mà cái này kết nối CSDL SQL

    còn mình đang làm access

    dù sao cũng cám ơn bạn
     
  4. tomorrowneverdies

    tomorrowneverdies Bạch Diện Thư Sinh

    Tham gia ngày:
    6/6/02
    Bài viết:
    4,306
    Nơi ở:
    The World Of Games
    Bài của bạn trên là làm Access mà(OleDb đó thay), còn bạn muốn làm bằng SQL thì thay đổi các câu lệnh của nó một xíu thôi. Bản chất 2 cái là y như nhau chỉ thay tên hàm :).
     
  5. thanhtungtnt

    thanhtungtnt The Pride of Hiigara Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    9,380
    Nơi ở:
    Balamb City
    Oledb cả sql, oracle đều chiến được nhưng chậm hơn (nhớ mang máng là còn mấy cái thư viện khác dành riêng cho cả 2 thằng chứ ko chỉ có oledb)
     
  6. ZKeitherZ

    ZKeitherZ The Warrior of Light Lão Làng GVN

    Tham gia ngày:
    28/7/05
    Bài viết:
    2,248
    Nơi ở:
    Blizzard
    mình coi rồi mà chưa hiểu lắm

    code đó cao siêu quá mà mình thì chỉ mới học căn bản thôi

    mình làm dc như vậy nè, mà khi thêm vào CSDL nó lại là dữ liệu trống (tức là NULL đó)

    Mã:
    Dim BangP As DataTable = LT_Bang.Doc("Select * From PHONG")
    
            Dim Dong As DataRow = BangP.NewRow
    
            Dim rowNumber As Integer = 1
    
            For Each curRow As DataGridViewRow In Luoi.Rows
    
                If (curRow.IsNewRow()) Then
    
                    Dong("TENPHONG") = curRow.Cells("TENPHONG").Value
    
                    Dong("DONGIA") = curRow.Cells("DONGIA").Value
    
                End If
    
            Next
    
            BangP.Rows.Add(Dong)
    
            LT_Bang.Ghi(BangP, "PHONG")
    mình chỉ thắc mắc ở chỗ làm sao lấy dc cái dữ lliệu mà mình nhập trên datagridview đó
    chỉ cần lấy dc là mình có thể thêm vào CSDL ngay

    nhưng tìm hoài cũng ko cách nào lấy dc cả

    giúp mình nhé

    cám ơn bạn nhiều lắm
     
  7. ZKeitherZ

    ZKeitherZ The Warrior of Light Lão Làng GVN

    Tham gia ngày:
    28/7/05
    Bài viết:
    2,248
    Nơi ở:
    Blizzard
    Mã:
            Dim BangP As New DataTable
    
            BangP = Luoi.DataSource
    
            LT_Bang.Ghi(BangP, "PHONG")
    
    mình đã thêm dòng ngay trên datagridview dc rồi

    nhưng mà sửa dữ liệu và dele ngay trên datagridview thì nó báo lỗi

    làm thế nào để mình biết là 1 ô nào đó trên datagridview đã bị thay đỗi dữ liệu vậy

    thanks
     
  8. thaitrung

    thaitrung Legend of Zelda

    Tham gia ngày:
    30/5/06
    Bài viết:
    926
    Nơi ở:
    CastleVania
    Làm database mà bằng Access thì hình như là trung học chuyên nghiệp thi phải
     
  9. great_hung

    great_hung Mr & Ms Pac-Man

    Tham gia ngày:
    2/1/09
    Bài viết:
    271
    Nơi ở:
    HN
    Ai bảo, t Đại học đây mà vẫn làm ASP với MSDB Access đây này, chả có cái gì là phải cấp này hay cấp kia mới hoc được cả, cái nào tối ưu và mang lại lợi ích thì làm thôi
     

Chia sẻ trang này