Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Loại bỏ trùng ID khi import từ file exel vào Access
#1
Chào diễn đàn. Nhờ các bạn chỉ giúp mình trường hợp khi import dữ liệu từ file excel vào table danh sách có cách nào loại trừ một người đã có tên trước đó trong danh sách theo điều kiện ngày duyệt hồ sơ. Tuất là danh sách sẽ nhận biết nếu dữ liệu import trùng tên và trùng ngày xét duyệt thì danh sách được import sẽ không nhận dữ liệu của ngừơi trùng đó. Xin cảm ơn
Chữ ký của tronghieu9792 Xin chào, mình là tronghieu9792, Tham gia http://thuthuataccess.com/forum từ ngày 10-01 -14.
Reply
Những người đã cảm ơn
#2
Bạn sẽ làm thông qua:
- 1 table tạm: dùng để import file excel. Vd: tblExcelImportTemp
- Table danh sách chính có thêm cột CheckCode. Vd: tblDanhSach
- 1 Update query table tạm: dùng để tạo cột phụ (ví dụ: checkCode). CheckCode: là kết hợp Mã thí sinh (người nộp hồ sơ) + Ngày giờ duyệt hồ sơ. Vd: TS0001140520161200 (TS0001+14/05/2016 12:00)
- 1 Select query để lọc nhưng người không cùng CheckCode. So sánh 2 bảng table import tạm và table danh sách chính.
--------------------
SELECT tblExcelImportTemp.*
FROM tblExcelImportTemp LEFT JOIN tblDanhSach ON tblExcelImportTemp.CheckCode = tblDanhSach.CheckCode
WHERE (((tblDanhSach.CheckCode) Is Null));
--------------------
- Từ query nhưng người không trùng, bạn insert vào tblDanhSach.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tronghieu9792 , Che_Guevara
#3
Cảm ơn ongke0711, mình đã làm được.
Chữ ký của tronghieu9792 Xin chào, mình là tronghieu9792, Tham gia http://thuthuataccess.com/forum từ ngày 10-01 -14.
Reply
Những người đã cảm ơn
#4
Chào mọi người! 
em có vài vấn đề khi import dữ liệu từ excel vào một table của access mong mọi người giúp đỡ, vấn đề của em như sau:
1. em có tạo 1 table trong đó có cột (MaKH (khóa chính), Phone) định dạng text và cột (id) định dạng AutoNumber
    sau đó em có tạo 1 form có 1 textbox để chứa link đến file excel, một button để chọn đường link, và một button để thực hiện lệnh import

    khi chạy chương trình nếu dữ liệu khóa chính không trùng thì truyền dữ liệu vào table ok, nếu có dữ liệu khóa chính trùng thì sẽ hiện một thông báo hệ thống nếu chọn yes thì 
    sẽ ghi những giữ liệu không trùng vào table, chọn no thì không ghi

    xin mọi người giúp em sửa lại code sao cho nếu dữ liệu khóa chính trùng sẽ không hiện thông báo của hệ thống nữa mà hiển thị 1 thông báo dạng  msgbox yes/no có hiển thị 
    có bao nhiêu dữ liệu trùng nếu chọn yes thì ghi dữ liệu không trùng, chọn no thì không ghi
2. cột id khi import em để trống nhưng khi vào table thì hệ thống không tự nhảy số mong mọi người giải đáp giúp em

Đây là code mở hộp thoại browse tới file
          
Mã:
Function getFile(Tit As String, formatName As String, formatType As String)
Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
With dlgOpen
   .Title = Tit
   .Filters.Clear
   .Filters.Add formatName, formatType
   .AllowMultiSelect = False
   result = .Show
   If (result <> 0) Then
getFile = Trim(dlgOpen.SelectedItems.Item(1))
End If
End With

End Function


Code cho textbox
          
Mã:
Private Sub text_Click()
t1.Value = getFile("Select Data File", "data file", "*.xls")
End Sub

Code cho button thực hiện lệnh import
Mã:
Private Sub IP_Click()
Dim sTenTable As String
   sTenTable = "TAB"
   DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
   sTenTable, t1, True
   
End Sub

em có gửi link file của em luôn nếu cần mọi người tải về xem nha Download File
Chữ ký của dutuan80637 dutuan80637,gia nhập Thủ Thuật Access từ 22-02 -17.
Reply
Những người đã cảm ơn
#5
Bạn tham khảo bài này.
http://thuthuataccess.com/forum/post-308...l#pid30869
- Bạn thay đổi CheckCode trong ví dụ bằng Mã KH và làm tương tự. Nó đơn giản hơn nhiều.
- Còn vụ nhảy số id tự động, bạn phải set index cho nó là No Duplicate thì nó mới tự động nhảy số.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
Trong access em có tạo 1 form import
mong muốn của e là mọi người giúp em chỉnh sửa đoạn code thực hiện lệnh import sao cho khi có dữ liệu trùng thì nó không hiện thông báo của hệ thống mà hiện thông báo msgbox ok/cancel "trùng dữ liệu bạn có muốn ghi dữ liệu không trùng?" nếu chọn ok thì thì ghi còn chọn no thì dừng lệnh
"nameTable": là tên table cần ghi dữ liệu
"txtLink": là textbox chứa đường dẫn đến file excel
Cảm ơn mọi người!
Code:
Mã:
Private Sub cmdImport_Click()
Dim sTenTable As String
   sTenTable = "nameTable"
   DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
   sTenTable, txtLink, True
   End Sub
Chữ ký của dutuan80637 dutuan80637,gia nhập Thủ Thuật Access từ 22-02 -17.
Reply
Những người đã cảm ơn
#7
(23-02-17, 10:48 AM)dutuan80637 Đã viết: Trong access em có tạo 1 form import
mong muốn của e là mọi người giúp em chỉnh sửa đoạn code thực hiện lệnh import sao cho khi có dữ liệu trùng thì nó không hiện thông báo của hệ thống mà hiện thông báo msgbox ok/cancel "trùng dữ liệu bạn có muốn ghi dữ liệu không trùng?" nếu chọn ok thì thì ghi còn chọn no thì dừng lệnh

- Đã trùng dữ liệu thì ghi làm gì mà bạn phải chọn Ok hoặc Cancel? 
- Còn bạn muốn ghi đè lên dữ liệu trùng thì lại tốn thêm nhiều dòng code cho nó --> lãng phí
- Nếu bạn muốn chọn No thì chỉ ghi dữ liệu không trùng thì cũng tốn 1 đống code và query xử lý nó --> lãng phí
Theo cách tôi hướng dẫn ở trên thì bạn chỉ cần dùng 1 query để loại tất cả các dòng trùng trước khi import rồi chỉ cần chọn có Lưu hay không thôi.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#8
[/quote]

- Đã trùng dữ liệu thì ghi làm gì mà bạn phải chọn Ok hoặc Cancel? 
- Còn bạn muốn ghi đè lên dữ liệu trùng thì lại tốn thêm nhiều dòng code cho nó --> lãng phí
- Nếu bạn muốn chọn No thì chỉ ghi dữ liệu không trùng thì cũng tốn 1 đống code và query xử lý nó --> lãng phí
Theo cách tôi hướng dẫn ở trên thì bạn chỉ cần dùng 1 query để loại tất cả các dòng trùng trước khi import rồi chỉ cần chọn có Lưu hay không thôi.
[/quote]

nếu dùng phương pháp này thì có cách nào đếm số dữ liệu trùng rồi đưa vào msgbox không anh
Chữ ký của dutuan80637 dutuan80637,gia nhập Thủ Thuật Access từ 22-02 -17.
Reply
Những người đã cảm ơn
#9
Bạn dùng Find Duplicate Query để so sánh tìm dữ liệu trùng rồi dùng "SELECT Count ( * )FROM FindDuplicateQuery" để ra số record trùng.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Hỏi đáp access nguyentuyen220 2 135 11-04-17, 10:38 AM
Bài mới nhất: tranthanhan1962
  [Hỏi] Hỏi Query tính giá trị trung bình luonguct 2 201 17-12-16, 07:21 PM
Bài mới nhất: ongke0711
Question [Help] Cần giúp đỡ tạo query lấy giá trị của dòng liền trước để tính giá trị trung bình luonguct 4 138 23-11-16, 12:33 AM
Bài mới nhất: luonguct
  [Help] Nhờ các bạn hỗ trợ cách tính số tháng tăng và giảm trong query (access 2003) tronghieu9792 2 328 25-05-16, 12:04 PM
Bài mới nhất: tronghieu9792
  côg thức xếp loại điểm honglv157 1 413 12-10-15, 12:50 PM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ