Bàn về chương trình tìm kiếm TỈNH, HUYỆN, XÃ trong nước

Liên hệ QC

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,930
Trước đây có vài người làm chương trình này rồi nhưng vài hôm trước tôi chợt nghĩ ra giải thuật tìm kiếm mới, tin chắc sẽ cho tốc độ tìm kiếm nhanh hơn rất nhiều so với những gì ta đã làm
Hiện tại tôi đang có trong tay:
- Toàn bộ CSDL tỉnh huyện xã trong nước
- Giải thuật tìm kiếm
Vấn đề đang gặp phải của tôi là:
- Tôi không biết người dùng cần 1 chương trình như thế nào?
- Người dùng cần 1 giao diện như thế nào?
- Tương tác giữa chương trình và bảng tính ra sao?

Vân.. vân...
Nói chung, tôi không làm trong cơ quan hành chính nhà nước nên chưa mường tượng được sẽ xây dựng chương trình này theo kiểu gì
Vậy hy vọng những ai cần dùng chương trình này đóng góp ý kiến (như phần tô màu xanh ở trên), tôi sẽ ra chương trình đúng như nhu cầu của số đông
(nói thêm rằng: tôi không cần dùng chương trình này để làm gì cả, chỉ là... có "hứng" muốn viết chơi)
 
Upvote 0
Tùy thuộc ứng dụng, nhưng hãy nghĩ đơn giản như Google 1 textbox đa chức năng, tìm hình ảnh, video , gợi ý từ quen ...vv

Còn nếu phức tạp thì Google phải có nhiều textbox cho hình ảnh, video, website, vvv

Trời đất! "Google 1 textbox" mà đơn giản.
Cả một giải thuật thống kê từ khoá của người ta...
 
Upvote 0
Chưa chắc đã chuẩn (?)
Chỉ chuẩn theo kiểu sách giáo khoa thôi
Vì ở đây dữ liệu tên tỉnh huyện phường xã,... đều là cùng kiểu cả đối tượng text cả và quy mô trong 1 nước số lượng cũng không nhiều, và Excel lại là môi trường database không chuẩn nếu không muốn nói là lỏng lẻo nên sử dụng quan hệ trong chính nội hàm của mã vẫn đáng giá hơn
Tùy thuộc ứng dụng, nhưng hãy nghĩ đơn giản như Google 1 textbox đa chức năng, tìm hình ảnh, video , gợi ý từ quen ...vv

Còn nếu phức tạp thì Google phải có nhiều textbox cho hình ảnh, video, website, vvv
Tôi đang mong chờ giải pháp của bạn đây, nói phải đi đôi với làm nhé bạn.
 
Upvote 0
@chủ thớt:
Tôi đã từng có vài năm làm quản lý đồ án phần mềm (software project manager). Đây là một số kinh nghiệm trong nghề.

Chiếu theo yêu cầu từ bài #1, bạn chỉ muốn hỏi ý kiến về cái giao diện cho người dùng, tức là cái User Interface.

Trong ngành phần mềm, không ai thiết kế một mạch từ ý kiến ban đầu đến sản phẩm cuối cùng cả. User Interface nó có giai trình tiến hoá.

- Cái bạn cần ở thời điểm này là vạch một bảng dự đoán tiến trình, và đưa ra cấp tốc một cái giao diện mẫu. Tiếng trong nghề gọi cái này là prototype. Đương nhiên lúc đưa ra bạn phải đưa kèm cái văn bản diễn tả những gì bạn nghĩ phần mềm này đáp ứng được và không đáp ứng được (đó là cái mà từ đầu tôi đã nhắc nhở về "phạm vi và giới hạn"). cái này tiếng trong nghề gọi là product description.
- Cái giao diện này không cần phải đẹp đẽ, không cần phải chạy nhanh, nó chỉ cần cung cấp các nhiệm vụ mà bạn muốn. Từ đó ngừoi ta sẽ thử dùng, và cho bạn biết những gì cần thêm bớt. Bạn cần nhắc nhở ngừoi dùng ở điểm đây chỉ là thử thách nhiệm vụ của phần mềm, không phải là sản phẩm cuối cùng nên đừng nói đến mẫu mã.
- Sau nhiều lần tiếp xúc với những ngừoi thử, và qua những lượt cải tiến, bạn sẽ tiến đến một mức khảng 75-85% cái dự đoán tiến trình mà bạn vạch ra ban đầu. Đó là lúc mà bạn sẽ bắt đầu chỉnh sửa mẫu mã và hiệu năng của gải thuật cũng như code.
- Bạn sẽ tiếp tục công việc cho đến khi đạt 100%. Sau đó là tung ra đợt bê ta.
- Sau thời gian bê ta, bạn sẽ chỉnh sửa lại đẻ có sản phẩm cuối cùng: Version 1

Lưu ý: đây là đồ án nhỏ, tôi giảm bớt đi phần vòng lại để sửa đổi thiết kế.
 
Upvote 0
Đơn giản về giao diện thấy vì bày ra nhiều

Bày ra nhiều còn không xơi nổi. Huống gì bạn muốn lờ (*) nó đi... Đến lúc muốn xơi...thì ôi thôi tại sao lúc đầu không lường trước.

(*) Lờ đi chỉ khi bạn xây dựng cho chính bạn dùng. Chứ không phải bạn làm cho người khác dùng.
 
Upvote 0
Bày ra nhiều còn không xơi nổi. Huống gì bạn muốn lờ (*) nó đi... Đến lúc muốn xơi...thì ôi thôi tại sao lúc đầu không lường trước.

(*) Lờ đi chỉ khi bạn xây dựng cho chính bạn dùng. Chứ không phải bạn làm cho người khác dùng.
Bạn thấy có google lờ đi hiệu ích nào cho người sử dụng không,
Tuy vậy có thể do tôi gõ nhầm từ "thay" (đã sửa trên) mà bạn nhầm chăng

Ở các bài trên liên quan tôi chỉ muốn đến giao diện đơn giản hiệu quả, tất nhiên code phía sau nó lại là chuyện khác vì 2 bài toán khác xa nhau
 
Upvote 0
Thử quản lý theo dạng Group xem sao:

Untitled.jpg
Muốn tìm chi tiết, bấm vào các dấu cộng
(File có dùng iGrid nên ai đang cài phiên bản Office 64 thì không dùng được)
 

File đính kèm

  • VNAddress_(iGridTest).xlsb
    176.8 KB · Đọc: 70
Upvote 0
Hi All.
em đang làm món này, tuy nhiên đang có một số vướng mắc, các anh chị xem giúp. có cách nào so sánh từng cell data tỉnh (63 tỉnh) với chuỗi text địa chỉ để tìm ko ah?
về VBA thì em mới nhập môn ko biết dùng vòng lặp. xin hỗ trợ.
 

File đính kèm

  • QUYEN HUYEN-PHUONG XA HAPV.xlsx
    3.9 MB · Đọc: 18
Upvote 0
Cải tiến tiếp như đã nói:

bằng cách thiết kế lại Sub AutoOpen như sau:
Mã:
Public dicVNAddress As Scripting.Dictionary
Public arrSource    As Variant
Public arrAddress   As Variant
Private Sub Auto_Open()
  Dim wksVNAddress      As Worksheet
  Dim lRow              As Long
  Dim strID             As String
  Dim strParentID       As String
  Dim strFullAddress    As String
  Dim strShortAddress   As String
  On Error Resume Next
  Set wksVNAddress = ThisWorkbook.Worksheets("VNAddress")
  arrSource = wksVNAddress.Range("A2", wksVNAddress.Range("C60000").End(xlUp)).Value
  ReDim arrAddress(LBound(arrSource, 1) To UBound(arrSource, 1), 1 To 1)
  Set dicVNAddress = New Scripting.Dictionary
  For lRow = 1 To UBound(arrSource, 1)
    strID = arrSource(lRow, 1)
    strShortAddress = arrSource(lRow, 3) & " " & arrSource(lRow, 2)
    If Len(strID) <= 2 Then
      strFullAddress = strShortAddress
    Else
      strParentID = Left(strID, Len(strID) - 2)
      strFullAddress = strShortAddress & ", " & dicVNAddress.Item(strParentID)
    End If
    arrAddress(lRow, 1) = strFullAddress
    dicVNAddress.Add strID, strFullAddress
  Next
  If Err.Number Then MsgBox Err.Description
End Sub
Các chỗ khác gần như để nguyên
Giờ mở form lên và chẳng hạn:
- Ta muốn tìm "Thạnh Phú" nhưng không nhớ nó là xã hay huyện, chỉ nhớ nó ở Đồng Nai, vậy ta gõ: thạnh phú*đồng nai rồi Enter sẽ có kết quả "Xã Thạnh Phú, Huyện Vĩnh Cửu, Tỉnh Đồng Nai"
- Nếu gõ thạnh phú*long an sẽ nhận được kết quả "Xã Thạnh Phú, Huyện Thuận Hóa, Tỉnh Long An"
- Nếu gõ thạnh phú*bến tre sẽ nhận được một đống kết quả (Bị Bến Tre có huyện Thạnh Phú nên dẫn đến có một đống xã liên quan)
- Tương tự như trên, cũng có một đống kết quả khi gõ đống đa*hà nội nhưng đống đa*gia lai thì chỉ có một
--------------------------------------------
Code còn chưa được "sáng" lắm, sẽ cải tiến tiếp!


Chào anh ndu96081631,
Tôi có 1 file form chuẩn của BHXH, thấy bài của anh giống như cái mà tôi đang cần.
VD:
1. ở các cột AG: khi tôi nhập 2 chữ cái đầu của tên tỉnh thì sẽ có list danh sách đổ xuống (ở sheet XA_HUYEN_TINH) với các tên tương ứng với 2 chữ cái đầu đó. Khi chọn đúng tên tỉnh thì sẽ lấy mã số ở cột D của sheet XA_HUYEN_TINH.
2. ở các cột AL, AN, AP, khi nhập từng chữ cái thì sẽ hiện ra list danh sách tương ứng (ở sheet XA_HUYEN_TINH) với từng chữ cái được nhập. Khi chọn xong thì sẽ lấy mã số ở cột B của sheet XA_HUYEN_TINH
Nhờ anh giúp cho cái code này với.
 

File đính kèm

  • TangLaoDong.xls
    1.8 MB · Đọc: 21
Lần chỉnh sửa cuối:
Upvote 0
Ừ thì sao cũng được!
Có nghĩa là mình biết là với cách bố trí dữ liệu như vậy, cách đặt mã như vậy... mình sẽ làm được tất cả mọi yêu cầu. Còn yêu cầu từng người dùng ra sao, có thể chỉnh sửa thoải mái
Có tình huống thế này:
- Anh bạn mới quen bảo rằng anh ấy ở Thuận An
- Tôi lại quên hỏi là Thuận An nào
- Tôi chỉ chắc rằng quê anh ấy không phải ở Miền Nam
- Vậy là tôi gõ từ khóa Thuận An vào form tìm kiếm, ra được kết quả thế này:

View attachment 190961

- Loại bỏ các vùng ở khu vực phía Nam, tôi có được 2 kết quả: Hoặc là thị trấn Thuận An ở Thừa Thiên Huế, hoặc là xã Thuận An ở Đắk Nông
Hợp lý chứ bộ!
Đương nhiên sắp tới đây, với cách đặt mã như thế, mình đã nghĩ đến sơ đồ dạng cây và đang tiến hành cải tiến
---------------------------------
Sửa lại 1 chút về cách gõ. Khỏi cần đánh dấu "*", chỉ cần các địa danh cách nhau bằng dấu phẩy là được
Ngồi buồn "vọc chơi":
- Gõ ku, lắk ---> ra một thúng
- Gõ lắk, ku ---> Hổng có cái nào
(kỳ vậy ta???)
Nhờ các Bạn giúp hiển thị thêm cột Mã vào listbox.
Mình áp dụng tìm Mã để điền vào bảng dữ liệu bằng cách sử dụng Lookup dò tìm theo Tỉnh - Huyện - Xã ( nhưng cột Xã thỉnh thoảng không ra kết quả theo ý muốn do nhiều xã trùng nhau ). Và cuối cùng là dùng Filter để dò Mã mình cần.
Xin cảm ơn.
 

File đính kèm

  • Danh muc TINH, HUYEN, XA_V1.4.xlsb
    217.2 KB · Đọc: 25
Upvote 0
Nhờ các Bạn giúp hiển thị thêm cột Mã vào listbox.
Mình áp dụng tìm Mã để điền vào bảng dữ liệu bằng cách sử dụng Lookup dò tìm theo Tỉnh - Huyện - Xã ( nhưng cột Xã thỉnh thoảng không ra kết quả theo ý muốn do nhiều xã trùng nhau ). Và cuối cùng là dùng Filter để dò Mã mình cần.
Xin cảm ơn.
Trong file, khi bạn gõ vào Textbox thì Listbox chưa cập nhật, mà phải Enter hoặc nhấp vào Listbox để được cập nhật. Do code trong Userform sử dụng sự kiện txtFindAddress_AfterUpdate(), nếu bạn muốn gõ gì để Listbox cập nhật, bạn sửa lại txtFindAddress_AfterUpdate() thành txtFindAddress_Change().
 
Upvote 0
Trong file, khi bạn gõ vào Textbox thì Listbox chưa cập nhật, mà phải Enter hoặc nhấp vào Listbox để được cập nhật. Do code trong Userform sử dụng sự kiện txtFindAddress_AfterUpdate(), nếu bạn muốn gõ gì để Listbox cập nhật, bạn sửa lại txtFindAddress_AfterUpdate() thành txtFindAddress_Change().
Cảm ơn Bạn đã giúp.
Ý của mình là muốn thêm cột Mã vào trong Listbox ( Trong Listbox hiện tại chỉ hiển thị cột Tỉnh Huyện Xã ) cho tiện việc cập nhật vào file dữ liệu ( mình chỉ cập nhật Mã - Nếu sau này cần thông tin mình sẽ tra Mã đấy ra Tỉnh - Huyện - Xã.
 
Upvote 0
Cảm ơn Bạn đã giúp.
Ý của mình là muốn thêm cột Mã vào trong Listbox ( Trong Listbox hiện tại chỉ hiển thị cột Tỉnh Huyện Xã ) cho tiện việc cập nhật vào file dữ liệu ( mình chỉ cập nhật Mã - Nếu sau này cần thông tin mình sẽ tra Mã đấy ra Tỉnh - Huyện - Xã.
Code của anh @ndu96081631 viết, bạn chờ anh ấy xuất hiện và hỗ trợ nhé.
Tôi chỉ viết mấy cái làng nhàng thôi, nếu bạn quan tâm listbox ngoài sheets, tham khảo bài này: Click
Có thể sửa lại và đưa vào UserForm.
 
Upvote 0
Upvote 0
Web KT
Back
Top Bottom