[HELP] Lưu tạm thông tin Form đã load cho lần mở sau? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Congtunho

Thành viên mới
Tham gia
16/12/17
Bài viết
48
Được thích
6
Giới tính
Nam
Chào cả nhà!

Em có tìm được trên mạng 1 file có form tìm kiếm.
Mọi thứ Ok nếu như data tìm kiếm ít. Nhưng nếu như data lớn vài nghìn dòng thì khi form load sẽ mất vài giây.
Không biết là có cách nào để form load data xong sẽ lưu tạm vào bộ nhớ để khi đóng form lần sau mở lại sẽ nhanh hơn không ạ?
Em có đính kèm file ở dưới ạ.
Nhấp đúp hoặc chuột phải ở sheet Nhan Ma sẽ hiện form lên.

Mong cả nhà hỗ trợ em với.
 

File đính kèm

Chỗ nào Unload form thì đổi lại thành form Hide thôi
 
Upvote 0
Mình thử đổi thanh form. Hide rồi thì lần sau mở lên ngay lập tức nhưng không hiểu sao mình nhập text ở ô tìm kiếm form nó cứ lag lag.

Thử mấy cách rồi mà ko ăn thua, ko biết có phải do máy ko nữa.
 
Upvote 0
Kg phải do máy hay load form. Bạn debug vào txt change, các hàm Filterxxx gì đấy mà xem tại sao lag
 
Upvote 0
Bạn giúp mình với, mình ko rành lắm. Mình edit đc mấy code cơ bản thôi. Còn cái này bó tay á.
 
Upvote 0
Ráng đọc, debug, cố hiểu đi bạn, vậy mới lên tay nghề được
 
Upvote 0
Oài, mình dân tay ngang mà, khi nào cần cái gì mới lên gg tìm code thôi bạn. Được cái đọc hiểu tiếng anh sơ sơ nên edit đc mấy cái code đơn giản. Chứ ko phải dân chuyên hay muốn học vba nè bạn hjx.
 
Upvote 0
Chào cả nhà!

Em có tìm được trên mạng 1 file có form tìm kiếm.
Mọi thứ Ok nếu như data tìm kiếm ít. Nhưng nếu như data lớn vài nghìn dòng thì khi form load sẽ mất vài giây.
Không biết là có cách nào để form load data xong sẽ lưu tạm vào bộ nhớ để khi đóng form lần sau mở lại sẽ nhanh hơn không ạ?
Em có đính kèm file ở dưới ạ.
Nhấp đúp hoặc chuột phải ở sheet Nhan Ma sẽ hiện form lên.

Mong cả nhà hỗ trợ em với.
Bạn xem thử
 

File đính kèm

Upvote 0
Lỗi đơ đơ, lag máy là do sub loc() viết và được call chưa tốt đó bạn à. Bạn cố động não viết lại nó, call nó hợp lý đi.
Gợi ý:
1.
Mã:
   dl = Sheet2.Range("A4:C1403").Value
   ReDim darr(1 To UBound(dl), 1 To 3)
Mỗi khi sub loc() đươc call, nó phải lấy lại dữ liệu từ sheet2. Nếu sau này sheet2 vùng dữ liệu này phình to ra nữa thì càng chậm.
2. Vẫn còn code Unload Me
 
Upvote 0
Lỗi đơ đơ, lag máy là do sub loc() viết và được call chưa tốt đó bạn à. Bạn cố động não viết lại nó, call nó hợp lý đi.
Gợi ý:
1.
Mã:
   dl = Sheet2.Range("A4:C1403").Value
   ReDim darr(1 To UBound(dl), 1 To 3)
Mỗi khi sub loc() đươc call, nó phải lấy lại dữ liệu từ sheet2. Nếu sau này sheet2 vùng dữ liệu này phình to ra nữa thì càng chậm.
2. Vẫn còn code Unload Me
Theo mình thấy nó bị chậm là do nó load từng phần tử trong mảng vào listbox, mình đã thay thế bằng cách add toàn bộ mảng vào listbox.list. Tốc độ mình nghĩ nó cũng có cải thiện hơn kha khá. Ko biết bạn còn cách nào tối ưu hơn nữa không, xin chia sẻ để mọi người cũng tham khảo. Cám ơn bạn.
 
Upvote 0
Hì hì, mình chỉ biết nói cái miệng thôi bạn, giờ lười code rồi ;)
 
Upvote 0
Mình rành về code thì nói như bạn đc, chứ mình biết mô tê gì đâu mà cố. Hjx
Lỗi đơ đơ, lag máy là do sub loc() viết và được call chưa tốt đó bạn à. Bạn cố động não viết lại nó, call nó hợp lý đi.
Gợi ý:
1.
Mã:
   dl = Sheet2.Range("A4:C1403").Value
   ReDim darr(1 To UBound(dl), 1 To 3)
Mỗi khi sub loc() đươc call, nó phải lấy lại dữ liệu từ sheet2. Nếu sau này sheet2 vùng dữ liệu này phình to ra nữa thì càng chậm.
2. Vẫn còn code Unload Me
 
Upvote 0
Đây sẽ là câu trả lời dành cho bạn:

Chỉ cần khởi tạo biến toàn cục ở Code Userform , và khởi tạo sớm khi UserForm load
với thủ tục UserForm_Initialize() thì các biến được khởi tạo sẽ tồn tại cho đến khi UserForm Unload

Lỗi ở code của bạn dẫn đến chậm:
1. Sự kiện LB_KeyUp và TB_Change chọn 1 trong 2, không thì phải tắt EventsEnable
2. Quá trình hiển thị ListBox ra Form không đồng nhất.
3. ActiveCell (mỗi lần gọi là một lần khởi tạo lại lệnh gọi) khác với With ActiveCell (một lần gọi duy nhất)

PHP:
Dim dl, udl&, udl2%, tdl(), temp1$, temp2$, Rng As Range
Option Compare Text
Private Sub CommandButton1_Click()
  With Rng
    .Offset(0, 1).Value = temp2
    .Value = temp1
  End With
  Unload Me
End Sub
Private Sub LB_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  With Rng
    .Offset(0, 1).Value = LB.List(LB.ListIndex, 1)
    .Value =LB.List(LB.ListIndex, 0)
  End With
  Unload Me
End Sub
Private Sub TB_Change()
  Call GetData(TB.Value)
End Sub

Private Sub LB_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  AddTemp
End Sub

Private Sub UserForm_Initialize()
  dl = ThisWorkbook.Worksheets("DMDVKH").[mm].Value
  udl = UBound(dl): udl2 = UBound(dl, 2)
  ReDim tdl(1 To udl, 1 To udl2)
  DM.LB.List = dl
  TB.Value = ""
  Set  Rng  = selection(1, 1)
End Sub

Private Sub AddTemp()
  temp1 = LB.List(LB.ListIndex, 0)
  temp2 = LB.List(LB.ListIndex, 1)
End Sub

Private Sub GetData(FindText$)
  Dim i&, k&, j%, tmp()
  DM.LB.Clear
  For i = 1 To udl
    If dl(i, 1) <> "" Then
      If dl(i, 1) Like "*" & FindText & "*" _
      Or dl(i, 2) Like "*" & FindText & "*" Then
        k = k + 1
        For j = 1 To udl2
          tdl(k, j) = dl(i, j)
  Next: End If :End If: Next
  If k > 0 Then GoSub MakeList
  Exit Sub
MakeList:
  ReDim tmp(1 To k, 1 To udl2)
  For i = 1 To k
    For j = 1 To udl2
      tmp(i, j) = tdl(i, j)
  Next j , i
  DM.LB.List = tmp
Return
End Sub
 
Upvote 0
Mình fix giùm bạn Zandy đây, cũng tàm tạm, ương ương à, không ưng ý lắm, bạn Zandy test lại, xem nó còn lag nữa hay không
Ghét cái redim của ông nội VB/VBA này quá, không redim array nhỏ hơn khi mãng nhiều chiều.
Nhớ hồi còn code, có viết 1 dll bằng Visual C++, support các hàm UDF cho VB/VBA, trong đó nhớ có hàm redim smaller cho array của VB/VBA
 

File đính kèm

Upvote 0
Cảm ơn mọi người rất nhiều. Công việc bận quá nên chỉ lên đây rep comt của mọi người thôi, chưa có time để test code của mọi người nữa.
Khi nào check xong mình sẽ review lại code của từng người luôn.
 
Upvote 0
Cái này có nhược điểm là khi db_click ở ô nào thì sau khi chọn nó sẽ trả giá trị bắt đầu từ ô đó. Nên sửa lại theo hướng mình db_click vào bất cứ chỗ nào trên bảng là nó hiện tìm kiếm, còn khi chọn xong giá trị thì kết quả trả về bắt đầu từ cột A mới hợp lý. Vì các cột từ C trở đi tôi nghĩ bạn còn có nhiều thông tin cần điền

Mình góp ý chút như vậy. 219390
 
Upvote 0
Mình chỉnh lại "chút chút" theo yêu cầu bạn DarKLov3, bạn down lại, test thử xem sao. Có fix 1 bug nhỏ và 1 vài optmize nhỏ
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
File của bạn mình thử cho data lên 20k dòng thấy vẫn load nhanh. Hay quá bạn ạ! Chỉ có điều mình ko rành code nên không biết được bạn tối ưu nó kiểu gì.
Mình chỉnh lại "chút chút" theo yêu cầu bạn DarKLov3, bạn down lại, test thử xem sao. Có fix 1 bug nhỏ và 1 vài optmize nhỏ
File của bạn tốc độc load ngang với bạn khanhhero, nhưng mà nhìn vào code thấy bạn chỉnh sửa hầu như 80% code luôn, bỏ luôn cả modul có sẵn, chèn vào trong listbox luôn. Không nghĩ bạn lại bỏ nhiều thời gian như vậy để edit lại file của mình. Cảm ơn bạn rất nhiều.
Đọc 2 file này mình thấy mỗi cái có 1 cái hay riêng dù không hiểu nhiều lắm, mình nghĩ là có thể gộp lại cái hay của 2 file này.

Cảm ơn 2 bạn rất nhiều! Công việc của mình cần dùng cái này nhiều lắm luôn :)
Bài đã được tự động gộp:

Đây sẽ là câu trả lời dành cho bạn:

Chỉ cần khởi tạo biến toàn cục ở Code Userform , và khởi tạo sớm khi UserForm load
với thủ tục UserForm_Initialize() thì các biến được khởi tạo sẽ tồn tại cho đến khi UserForm Unload

Lỗi ở code của bạn dẫn đến chậm:
1. Sự kiện LB_KeyUp và TB_Change chọn 1 trong 2, không thì phải tắt EventsEnable
2. Quá trình hiển thị ListBox ra Form không đồng nhất.
3. ActiveCell (mỗi lần gọi là một lần khởi tạo lại lệnh gọi) khác với With ActiveCell (một lần gọi duy nhất)

PHP:
Dim dl, udl&, udl2%, tdl(), temp1$, temp2$, Rng As Range
Option Compare Text
Private Sub CommandButton1_Click()
  With Rng
    .Offset(0, 1).Value = temp2
    .Value = temp1
  End With
  Unload Me
End Sub
Private Sub LB_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  With Rng
    .Offset(0, 1).Value = LB.List(LB.ListIndex, 1)
    .Value =LB.List(LB.ListIndex, 0)
  End With
  Unload Me
End Sub
Private Sub TB_Change()
  Call GetData(TB.Value)
End Sub

Private Sub LB_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  AddTemp
End Sub

Private Sub UserForm_Initialize()
  dl = ThisWorkbook.Worksheets("DMDVKH").[mm].Value
  udl = UBound(dl): udl2 = UBound(dl, 2)
  ReDim tdl(1 To udl, 1 To udl2)
  DM.LB.List = dl
  TB.Value = ""
  Set  Rng  = selection(1, 1)
End Sub

Private Sub AddTemp()
  temp1 = LB.List(LB.ListIndex, 0)
  temp2 = LB.List(LB.ListIndex, 1)
End Sub

Private Sub GetData(FindText$)
  Dim i&, k&, j%, tmp()
  DM.LB.Clear
  For i = 1 To udl
    If dl(i, 1) <> "" Then
      If dl(i, 1) Like "*" & FindText & "*" _
      Or dl(i, 2) Like "*" & FindText & "*" Then
        k = k + 1
        For j = 1 To udl2
          tdl(k, j) = dl(i, j)
  Next: End If :End If: Next
  If k > 0 Then GoSub MakeList
  Exit Sub
MakeList:
  ReDim tmp(1 To k, 1 To udl2)
  For i = 1 To k
    For j = 1 To udl2
      tmp(i, j) = tdl(i, j)
  Next j , i
  DM.LB.List = tmp
Return
End Sub
Mình không hiểu code lắm nên mình chỉ xài file mới so sánh được tốc độ thôi.
Cảm ơn bạn đã góp ý nha!

Không biết nếu mình học code thì khoảng bao lâu có thể master đc nhỉ? Tự dưng thấy khoái code ghê gớm!
 
Upvote 0
Bạn lên vài chục ngàn dòng, hay triệu dòng thì mới thấy được.
Chỉ sợ listbox của Msform chịu kg nổi thôi
 
Upvote 0
Mình nghĩ data mà lên hàng triệu dòng thì chắc phải chục năm nữa á bác. Mà chục năm nữa thì mình ko cần xài file này nữa rồi.
À, file của bạn có 1 nhược điểm nhỏ là khi data có thay đổi thì form nó ko load lại, phải lưu file đóng đi mở lại thì form mới load data mới.
 
Upvote 0
Mình tính trước các câu hỏi của bạn rồi
Nếu mình sai thì bạn sửa, modidy code mình ra sao ?
 
Upvote 0
Modify được thì nói làm chi nữa bạn hehe mình đã nói là code của bạn cao siu quá. Đọc có hiểu gì mấy đâu. Nhưng mà để mình mò, dù sao vẫn cảm ơn bạn rất nhiều. Nhiệt tình quá mức.
 
Upvote 0
File của bạn mình thử cho data lên 20k dòng thấy vẫn load nhanh. Hay quá bạn ạ! Chỉ có điều mình ko rành code nên không biết được bạn tối ưu nó kiểu gì.

File của bạn tốc độc load ngang với bạn khanhhero, nhưng mà nhìn vào code thấy bạn chỉnh sửa hầu như 80% code luôn, bỏ luôn cả modul có sẵn, chèn vào trong listbox luôn. Không nghĩ bạn lại bỏ nhiều thời gian như vậy để edit lại file của mình. Cảm ơn bạn rất nhiều.
Đọc 2 file này mình thấy mỗi cái có 1 cái hay riêng dù không hiểu nhiều lắm, mình nghĩ là có thể gộp lại cái hay của 2 file này.

Cảm ơn 2 bạn rất nhiều! Công việc của mình cần dùng cái này nhiều lắm luôn :)
Bài đã được tự động gộp:


Mình không hiểu code lắm nên mình chỉ xài file mới so sánh được tốc độ thôi.
Cảm ơn bạn đã góp ý nha!

Không biết nếu mình học code thì khoảng bao lâu có thể master đc nhỉ? Tự dưng thấy khoái code ghê gớm!
2 phút cho việc đọc code, 5 phút cho việc code và debug
 
Upvote 0
Cho mình hỏi thêm 1 xíu nữa nha!
Làm sao để khi form được load lên thì con trỏ chuột tự động nhấp vào ô tìm kiếm vậy?
Bài đã được tự động gộp:

2 phút cho việc đọc code, 5 phút cho việc code và debug
Haiz đối với cao thủ thôi bạn, không rành code như mình thì đó là điểu ko tưởng :)
 
Upvote 0
Bạn lên vài chục ngàn dòng, hay triệu dòng thì mới thấy được.
Chỉ sợ listbox của Msform chịu kg nổi thôi
Triệu dòng là nó hết luôn cái file excel rồi anh ơi :D
Bài đã được tự động gộp:

Cho mình hỏi thêm 1 xíu nữa nha!
Làm sao để khi form được load lên thì con trỏ chuột tự động nhấp vào ô tìm kiếm vậy?

Dùng sự kiện Userform_Initialize
 
Upvote 0
Chỉ mình rõ luôn đi bạn hehe mình biết dùng như nào đâu.
ĐÂY LÀ CODE HIỆN CÓ
Private Sub UserForm_Initialize()
dl = ThisWorkbook.Worksheets("DMDVKH").[mm].Value
udl = UBound(dl): udl2 = UBound(dl, 2)
ReDim tdl(1 To udl, 1 To udl2)
DM.LB.List = dl
TB.Value = ""
Set Rng = selection(1, 1)
End Sub

SỬA LẠI THÀNH:
Private Sub UserForm_Initialize()
dl = ThisWorkbook.Worksheets("DMDVKH").[mm].Value
udl = UBound(dl): udl2 = UBound(dl, 2)
ReDim tdl(1 To udl, 1 To udl2)
DM.LB.List = dl
TB.Value = ""
TB.setfocus
Set Rng = selection(1, 1)
End Sub
 
Upvote 0
Vậy là chỉ cần thêm dòng
TB.setfocus là xong à. Hay quá bạn.
 
Upvote 0
Mình thử với 10,000 dòng, nó bắt đầu lag rồi. Đã thử optimize hàm FilterData dùng hàm InStr nhưng kg ăn thua
Thử dùng hàm API của shlwapi.dll với 66,000 dòng thử
 
Upvote 0
Với mình, tốc độ như này là đủ dùng rồi bạn. Ko cần nhanh hơn nữa. Vì data của mình chỉ gần 20k dòng thôi. Dự kiến 5 năm nữa lên khoảng 30k dòng.
 
Upvote 0
Vậy là máy bạn nhanh đó, chứ cái PC mình già nua lắm, mười mấy năm rồi.
Mình hay dùng máy này để remote debug với WinDbg và test tốc độ chương trình
Đã thử lên 70,000 dòng, tốc độ cũng không ưng ý lắm, vẫn còn hơi lag
Do giới hạn của VBA khi copy array = vòng For, không dùng memcpy 1 block như C được.

Edit: Thua, hết cách optimize rồi, không tìm ra hàm nào nhanh hơn hàm StrStrIW nữa.
Chỉ còn cách viết dll = C, viết hàm fast strstr = C hay assembly rồi call từ VBA thôi.

Nội dòng LB.Clear thôi, với dữ liệu lớn nó cũng đã chậm, giựt.
Bản này coi như bảng final, tốc độ tạm chấp nhận được với data lớn.
Test trên máy cực chậm :)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Máy 10 mấy năm mà chạy đc cỡ đó thì cũng quá trâu bò rồi bạn. Lap mình mới mua đc 2 năm, core i5 đời thứ 6, mà xài win 10 nó chạy cũng hơi chậm. Ko mượt như win 7 xưa. Có điều kiện nâng cấp ssd thì may ra.

Điều mình cần mọi người đã support nhiệt tình xong rồi. Rất cảm ơn cả nhà. Khi nào có gì hot mình lại lên hỏi tiếp. Hi vọng bạn sức khỏe dồi dào để support nhiều người như mình.
 
Upvote 0
Mình mới update lại file, các bạn down về test hộ, xem tốc độ có cải thiện chút nào không, chứ mình thì hết cách optimize rồi :)
 
Upvote 0
Mình mới update lại file, các bạn down về test hộ, xem tốc độ có cải thiện chút nào không, chứ mình thì hết cách optimize rồi :)
Theo em thấy nếu muốn nó nhanh thì nên dùng sự kiện keydown bắt enter key, để khi kết thúc nhập liệu tìm kiếm bằng phím enter thì nó mới chạy vòng lặp, như vậy nó sẽ nhanh hơn rất nhiều. Bắt sự kiện change này gõ một ký tự nó lặp một lần, nên tất nhiên là phải lâu rồi. Còn về bản chất vẫn phải truyền vào mảng rồi đưa vào list.
 
Upvote 0
Hì hì, cách bạn thì chỉ là đánh lừa cảm giác của user thôi, chứ bản thân cái hàm lọc đó nó có nhanh hơn đâu. Cuối cùng cũng phải qua hàm lọc
Còn mình thì tập trung vào cải tiến tốc độ cũa hàm lọc.
Trong hàm FilterData của mình, thay vì dùng LB.Clear, mình set ListIndex = -1 và List assign thôi, đã tránh được listbox giựt, đơ 1 cái khi clear
Dùng hàm StrStrIW Unicode thay cho hàm Ansi StrStrIA để tránh được convert dư từ Unicode qua Ansi khi search. Hàm này nhanh hơn nhiều so với Like hay InStr của VB/VBA
Tách biểu thức Or ra thành 2 If để tránh tính toán 2 lần StrStrI trên 1 if.
....
 
Upvote 0
Bài viết tới nay vẫn chưa xong? Có vẻ khó khăn về giải thuật

Tôi nghĩ nên thêm 1 vài kỹ thuật tối ưu hơn 1 tí:
1. Thêm ràng buộc độ dài chuỗi phải lơn hơn bằng (x) mới thực hiện Search (khi data quá lớn).
2. Sau khi text change thì lưu lại mảng đã duyệt để tiếp tục duyệt cho ký tự tiếp theo, length text mà nhỏ hơn (x) thì trở lại từ đầu
PHP:
If Len(Text.Value) < x Then
    Exit Sub
ElseIf Len(Text.Value) = x Then
    Arr = FullArr
Else
    If Len(Text.Value) < LastLenX Then
        Arr = SmallArr2
    Else
        Arr = SmallArr1
    End if
End If

'SmallArr2 Sẽ lưu lại Arr'
'SmallArr1 Sẽ lưu lại Arr đã duyệt'
 
Upvote 0
Hì hì, vẫn sai bạn ơi.
1. Không thể bắt buộc user phải search vơi 1 len yêu cầu
2. Nếu kiểm tra len = x thì buồn buồn tui select 1 vài ký tự nào đó, rồi Ctrl-V chuổi khác vào thì sao, len vẫn không đổi.
3. Đang search 4, 5 ký tự, buồn buồn tui Ctrl-A, delete thì sao ? Hay Ctrl-A, Ctrl-V chuỗi khác ?
 
Upvote 0
Hì hì, vẫn sai bạn ơi.
1. Không thể bắt buộc user phải search vơi 1 len yêu cầu
2. Nếu kiểm tra len = x thì buồn buồn tui select 1 vài ký tự nào đó, rồi Ctrl-V chuổi khác vào thì sao, len vẫn không đổi.
3. Đang search 4, 5 ký tự, buồn buồn tui Ctrl-A, delete thì sao ?
Bác cứ đưa ra các điều kiện mới, thì ta thêm ràng buộc mới, các giải thuật mới. Bác định viết cả một ứng dụng hay giúp đỡ cơ bản cho bạn ấy hay sao mà sung sức thế.
 
Upvote 0
Hì hì, tính tui code xưa giờ cầu toàn, đã không làm thì thôi, làm thì phải tới nơi tới chốn, hết cách mới thôi.
Chứ dỡ dỡ ương, code bậy bạ cho chạy được thôi thì tôi tối kỵ.
File tồn kho của tôi gần 300 000 tấm đá, mỗi tấm 1 mã, còn chạy phà phà trên cái máy cùi này, 70 000 dòng thì ăn thua gì
 
Upvote 0
Hì hì, tính tui code xưa giờ cầu toàn, đã không làm thì thôi, làm thì phải tới nơi tới chốn, hết cách mới thôi.
Chứ dỡ dỡ ương, code bậy bạ cho chạy được thôi thì tôi tối kỵ.
File tồn kho của tôi gần 300 000 tấm đá, còn chạy phà phà trên cái máy cùi này, 70 000 dòng thì ăn thua gì
"Cái cây to mọc lấn rào nhà người ta, người ấy chỉ có thể chặt bỏ những nhánh lấn rào, chứ không thể sang chặt luôn cái cây" , "cầu toàn cũng như muốn cày cho xong cái ruộng nhưng nữa chừng gặp cơn mưa ngập cả cái ruộng"
 
Upvote 0
Hì hì, tính tui code xưa giờ cầu toàn, đã không làm thì thôi, làm thì phải tới nơi tới chốn, hết cách mới thôi.
Chứ dỡ dỡ ương, code bậy bạ cho chạy được thôi thì tôi tối kỵ.
File tồn kho của tôi gần 300 000 tấm đá, mỗi tấm 1 mã, còn chạy phà phà trên cái máy cùi này, 70 000 dòng thì ăn thua gì
Bác lại đụng chạm đến tâm hồn e rồi. Mình cũng là người cầu toàn đây. Nhìn code của bạn mình ko hiểu chứ ko là cũng nghịch cho ra hết rồi đó hehe.
 
Upvote 0
"Cái cây to mọc lấn rào nhà người ta, người ấy chỉ có thể chặt bỏ những nhánh lấn rào, chứ không thể sang chặt luôn cái cây" , "cầu toàn cũng như muốn cày cho xong cái ruộng nhưng nữa chừng gặp cơn mưa ngập cả cái ruộng"
Dân quảng bá gú gồ gì mà yếu vậy.
Thời buổi bi giờ bị cây lấn chỉ việc cứa cành tróc vỏ, trét thuốc diệt cỏ đậm đặc vào. Vài lần là cây chết queo. Chủ cây bắt buộc phải cưa nó thôi.
 
Upvote 0
Dân quảng bá gú gồ gì mà yếu vậy.
Thời buổi bi giờ bị cây lấn chỉ việc cứa cành tróc vỏ, trét thuốc diệt cỏ đậm đặc vào. Vài lần là cây chết queo. Chủ cây bắt buộc phải cưa nó thôi.
Không được đâu. Ngay cả tự vệ cũng phải tự vệ chính đáng chứ không đi tù như chơi. Cái gì cũng có giới hạn. Chống trộm là chính đáng, nhưng không thể căng dây điện trần ngấm ngầm được đâu. Thằng trộm nó chết là mình đi nghỉ mát miễn phí. À không, đúng hơn là "miễn cưỡng". :D
 
Upvote 0
Không được đâu. Ngay cả tự vệ cũng phải tự vệ chính đáng chứ không đi tù như chơi. Cái gì cũng có giới hạn. Chống trộm là chính đáng, nhưng không thể căng dây điện trần ngấm ngầm được đâu. Thằng trộm nó chết là mình đi nghỉ mát miễn phí. À không, đúng hơn là "miễn cưỡng". :D
Ý tôi nói là nếu mình muốn chơi luật rừng thì cũng có cách gú gô ra tên thuốc diệt cỏ.
Chứ nếu chơi cho đúng đắn thì dân ngoài tuổi tự học vê bê a như tôi cũng biết gú gô luật pháp về luật bảo vệ bờ rào.
Điển hình, theo luật chỗ ở thì cái cây nó sẽ không có chỗ đứng nếu nó vi phạm đến cơ cấu nhà (ví dụ rễ ăn bể cống). Nếu nó không chạm cơ cấu nhà nhưng gây thiệt hại tài sản; ví dụ như lá cây làm ngập máng xối thì bạn có quyền mướn người vét máng và đòi chủ cây bồi thường.
Nếu nó không gây thiệt hại gì cả thì sẽ xử theo luật tiền định (tiếng Tây gọi là case law). Lúc ấy cái cây sẽ thuộc về sự thoả thuận giữa hai chủ đất. Nếu bạn là chủ đất trước khi cái cây nó lớn đến mức độ lấn đất thì bạn có quyền đòi hỏi chủ phải thường xuyên cắt vén. Nếu bạn là chủ đất sau khi cái cây đã lớn (bạn mua nhà sau này) thì phải xem lại thoả thuận của chủ nhà trước đó. Nếu chủ nhà trước đó không hề đòi hỏi chủ cây thu vén thì coi như đã thoả thuận tự thu vén - coi như bạn xui.
 
Upvote 0
Chủ đề này có vẻ hơi bị lạc trôi rồi nhỉ.
 
Upvote 0
Kéo các bác lại với hiện tại nè!

Cho mình hỏi tiếp 1 cái nữa nha.

Làm sao mình quy định việc nhấp đúp chỉ ở 1 cột nào đó thì nó mới hiện lên form kia. Hiện tại nhấp chỗ nào nó cũng hiện hết.

Cảm ơn các bác!
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom