ngocvaneahleo
Thành viên mới

- Tham gia
- 2/3/16
- Bài viết
- 19
- Được thích
- 3
Muốn làm được điều đó thì những người trong lớp phải có cái gì đó khác nhau, Vd mỗi HS phải có một Mã HS riêng, nếu không có thì dựa vào cái gì để cập nhật nếu lỡ có 2 người trùng tên họ và chữ lót thì sao.
Muốn làm được điều đó thì những người trong lớp phải có cái gì đó khác nhau, Vd mỗi HS phải có một Mã HS riêng, nếu không có thì dựa vào cái gì để cập nhật nếu lỡ có 2 người trùng tên họ và chữ lót thì sao.
Chính vì sửa nên cần phải có cái gì để nhận biết học sinh cần sửa so với học sinh khác, nếu lỡ tên học sinh trùng thì biết sửa học sinh nào.file trên là dữ liệu của 1 lớp đó, do phần sửa dữ liệu bị lỗi sau khi tìm kiếm (nó insert thêm 1 dòng mới chứ không phải sửa ngay vị trí mình cần sửa) nên trong file ghi lung tung để cho mọi người dễ phát hiện ra thôi.
có gì nhờ mọi người giúp đỡ ạ.
file trên là dữ liệu của 1 lớp đó, do phần sửa dữ liệu bị lỗi sau khi tìm kiếm (nó insert thêm 1 dòng mới chứ không phải sửa ngay vị trí mình cần sửa) nên trong file ghi lung tung để cho mọi người dễ phát hiện ra thôi.
có gì nhờ mọi người giúp đỡ ạ.
- Đầu tiên bất cứ dữ liệu nào cũng vậy cần phải có primary key. Như vậy từ primary key bạn có thể chỉnh sửa foreign key.
- File của bạn mình mặc định tên hoc sinh và stt sẽ ko thể sửa dc.
- Khi bạn muốn thêm mới thì bấm nút xóa nhanh để nhập dữ liệu vào. (nhưng theo mình thấy nếu đã có tên hs này rồi thì ko cho nhập mới nữa hay là trong 1 lớp ko dc có 2 người trùng tên vvv...) Cái này bạn từ tìm hiểu thêm vậy.
- Nhưng trước mắt bạn test thử file mình sửa lại xem sao !
Thì thêm dòng màu đỏ vào là được.phần sửa dữ liệu thì ok rồi, nhưng còn 1 lỗi nhỏ nữa.
ví dụ như khi tìm kiếm từ " Nguyen Van An" thì sẽ hiện ra kết quả, nhưng khi sửa dữ liệu thì vẫn chưa update lên listbox mà mới chỉ update trong file excel thôi. anh xem cách nào update luôn trên listbox sau khi sửa dữ liệu luôn không.
Private Sub CM_SuaDuLieu_Click()
If Trim(Me.TextBox1.Text) = "" Then
Dim iRow As Long, i As Long, MyCtrls()
MyCtrls = Array(TB_stt, TB_Hovaten, TB_lOP, Val(TB_Toan), Val(TB_Hoa), Val(TB_Ly), Val(TB_Anh), Val(TB_Van))
Range("ListBoxTheoDoi").Offset(ListBox1.ListIndex).Resize(1).Value = MyCtrls
For i = 0 To 7
MyControls(i).Text = ""
Next
Exit Sub
Else
Dim dong As Long, Gttim As String, gim As String
Gttim = Trim(Me.TB_Hovaten.Value)
dong = Sheet1.Range("B:B").Find(Gttim, LookIn:=xlValues).Row
Sheet1.Cells(dong, 3).Value = Me.TB_lOP.Value
Sheet1.Cells(dong, 4).Value = Me.TB_Toan.Value
Sheet1.Cells(dong, 5).Value = Me.TB_Hoa.Value
Sheet1.Cells(dong, 6).Value = Me.TB_Ly.Value
Sheet1.Cells(dong, 7).Value = Me.TB_Anh.Value
Sheet1.Cells(dong, 8).Value = Me.TB_Van.Value
End If
[COLOR=#ff0000][B]Call TextBox1_Change[/B][/COLOR]
End Sub
Thì thêm dòng màu đỏ vào là được.
Và cách làm này thì không đổi tên được bạn nhé, bạn sẽ gặp khó khăn với code này nếu gặp dữ liệu khác (sớm hay muộn thôi). Còn nguyên nhân bạn sẽ tự phát hiện nếu gặp dữ liệu đó.Mã:Private Sub CM_SuaDuLieu_Click() If Trim(Me.TextBox1.Text) = "" Then Dim iRow As Long, i As Long, MyCtrls() MyCtrls = Array(TB_stt, TB_Hovaten, TB_lOP, Val(TB_Toan), Val(TB_Hoa), Val(TB_Ly), Val(TB_Anh), Val(TB_Van)) Range("ListBoxTheoDoi").Offset(ListBox1.ListIndex).Resize(1).Value = MyCtrls For i = 0 To 7 MyControls(i).Text = "" Next Exit Sub Else Dim dong As Long, Gttim As String, gim As String Gttim = Trim(Me.TB_Hovaten.Value) dong = Sheet1.Range("B:B").Find(Gttim, LookIn:=xlValues).Row Sheet1.Cells(dong, 3).Value = Me.TB_lOP.Value Sheet1.Cells(dong, 4).Value = Me.TB_Toan.Value Sheet1.Cells(dong, 5).Value = Me.TB_Hoa.Value Sheet1.Cells(dong, 6).Value = Me.TB_Ly.Value Sheet1.Cells(dong, 7).Value = Me.TB_Anh.Value Sheet1.Cells(dong, 8).Value = Me.TB_Van.Value End If [COLOR=#ff0000][B]Call TextBox1_Change[/B][/COLOR] End Sub
Private Sub CM_SuaDuLieu_Click()
If Trim(Me.TextBox1.Text) = "" Then
Dim iRow As Long, i As Long, MyCtrls()
MyCtrls = Array(TB_stt, TB_Hovaten, TB_lOP, Val(TB_Toan), Val(TB_Hoa), Val(TB_Ly), Val(TB_Anh), Val(TB_Van))
Range("ListBoxTheoDoi").Offset(ListBox1.ListIndex).Resize(1).Value = MyCtrls
For i = 0 To 7
MyControls(i).Text = ""
Next
Exit Sub
Else
Dim dong As Long, Gttim As String, gim As String
Gttim = Trim(Me.TB_Hovaten.Value)
dong = Sheet1.Range([COLOR=#0000ff]"A:A"[/COLOR]).Find(Gttim, LookIn:=xlValues).Row
[COLOR=#0000ff] Sheet1.Cells(dong, 1).Value = Me.TB_stt.Value[/COLOR]
[COLOR=#0000ff] Sheet1.Cells(dong, 2).Value = Me.TB_Hovaten.Value[/COLOR]
Sheet1.Cells(dong, 3).Value = Me.TB_lOP.Value
Sheet1.Cells(dong, 4).Value = Me.TB_Toan.Value
Sheet1.Cells(dong, 5).Value = Me.TB_Hoa.Value
Sheet1.Cells(dong, 6).Value = Me.TB_Ly.Value
Sheet1.Cells(dong, 7).Value = Me.TB_Anh.Value
Sheet1.Cells(dong, 8).Value = Me.TB_Van.Value
End If
Call TextBox1_Change
End Sub
dong = Sheet1.Range([COLOR=#0000FF]"A:A"[/COLOR]).Find(Gttim, LookIn:=xlValues).Row
Dòng này công dụng là sao bạn biết không? Tìm Gttim ở cột B, nếu bạn sửa tên rồi thì ở cột này tìm có Gttim nửa hay không?
Đã bảo ở trên rồi, mỗi người sẽ có một mã số (mã số này là không thay đổi được, nó được nhập lúc HS vào trường đến lúc ra trường luôn). Có mã này mới tính tiếp việc sửa như thế nào. Còn nếu bạn muốn sửa đại đi thì tôi giúp theo kiểu đại đi được không?vậy anh sừa lại code làm sao để sửa dc các cột luôn được k ạ, với code trên lỡ như đánh sai tên muốn sửa lại thì k dc rồi.
Mình đã giải thích cho bạn hiểu trong bất kỳ CSDL hay database nào cũng cần phải có primary key. Ở đây Primary key mình đặt là họ và tên của học sinh. Như vậy khi đã có primary key bạn có dựa vào nó để chỉnh sửa thuộc tính của foreign key.vậy anh sừa lại code làm sao để sửa dc các cột luôn được k ạ, với code trên lỡ như đánh sai tên muốn sửa lại thì k dc rồi.
Đã bảo ở trên rồi, mỗi người sẽ có một mã số (mã số này là không thay đổi được, nó được nhập lúc HS vào trường đến lúc ra trường luôn). Có mã này mới tính tiếp việc sửa như thế nào. Còn nếu bạn muốn sửa đại đi thì tôi giúp theo kiểu đại đi được không?
+ Như vậy theo như file của bạn nếu như lỡ đánh sai tên HS thì chỉ có cách là xóa đi đánh lại (làm thêm 1 nút xóa tên là dc rồi)
sao trên máy em nó chạy toàn lỗi mấy hàm trim, left gì không vậy thầy nhỉ.Tại bạn muốn thì mình chiều, chứ mình sẽ không chịu trách nhiệm về đoạn code này đâu nghe. Tôi nhẹ dạ lắm ai thích thì chiều, ai liều thị chạy...
góp ý đến bạn:sau khi nhập dữ liệu vào ô tìm kiếm, hiện ra kết quả dò tìm thì ok, nhưng khi sửa dữ liệu vừa mới tìm kiếm thì bị lỗi.
cụ thể, sau khi sửa thì nó lại insert thêm 1 dòng mới chứ không phải sửa ngay vị trí mình cần sửa
anh chị sửa lại giúp em với