Thảo luận về bài: ADO căn bản "Kết nối truy vấn CSDL từ file Excel đến file Access."

Liên hệ QC
còn cái tạo đường dẩn cố định tới file muốn lấy dữ liệu thì sao bạn?
ví dụ: trong 2 folder1 và 2 nằm tại ổ D:\folder1\vidu.xls

Thì bạn tìm cái strFileName mà thay thế cái đường dẫn của bạn vào, nhớ thêm 2 dấu "" bao quanh đường dẫn nhé
VD: "D:\folder1\vidu.xls"
 
Mình sẽ làm thử nhưng bạn làm hộ mình để mình đối chiếu coi mình sai chổ nào nhé!

sao mình làm không đc bạn ơi bạn làm hộ mình với!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình sẽ làm thử nhưng bạn làm hộ mình để mình đối chiếu coi mình sai chổ nào nhé!

sao mình làm không đc bạn ơi bạn làm hộ mình với!

Bạn test thử code ở file Access:

Mã:
Option Compare Database
Private Sub cmdCapNhat_Click()
Dim strFileName As String
  strFileName = "D:\folder1\vidu.xls"
  With DoCmd
        .SetWarnings (False)
        sSQL = "UPDATE [TB hang hoa] b " _
          & "RIGHT JOIN " _
          & "[Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & strFileName & "].[Sheet1$B4:G18] a " _
          & "ON a.Mahang=b.Mahang " _
          & "SET b.ngay=a.ngay,b.Mahang=a.Mahang,b.tenhang=a.tenhang," _
          & "b.makholuutru=a.makholuutru,b.tenkholuutru=a.tenkholuutru," _
          & "b.Soluongban=a.Soluongban " _
          & "where a.mahang is not null"
        DoCmd.RunSQL sSQL
        Me.RecordSource = "TB hang hoa"
        .SetWarnings (True)
    End With
End Sub

Private Sub cmdLayDuLieu_Click()
Dim strFileName As String
  strFileName = "D:\folder1\vidu.xls"
    With DoCmd
        .SetWarnings (False)
        .RunSQL "Delete * from [TB hang hoa]"
        .TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
            "TB hang hoa", strFileName, True, "B4:G18"
         Me.RecordSource = "TB hang hoa"
        .SetWarnings (True)
    End With

End Sub
 
nó báo lổi không đc bạn à
Mã:
Private Sub cmdCapNhat_Click()
Dim strFileName As String
  strFileName = "D:\HocAccess\Folder02\vidu.xls"
  With DoCmd
        .SetWarnings (False)
        sSQL = "UPDATE [TB hang hoa] b " _
          & "RIGHT JOIN " _
          & "[Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & strFileName & "].[Sheet1$B4:G18] a " _
          & "ON a.Mahang=b.Mahang " _
          & "SET b.ngay=a.ngay,b.Mahang=a.Mahang,b.tenhang=a.tenhang," _
          & "b.makholuutru=a.makholuutru,b.tenkholuutru=a.tenkholuutru," _
          & "b.Soluongban=a.Soluongban " _
          & "where a.mahang is not null"
        [COLOR=#ff0000]DoCmd.RunSQL sSQL lổi đầu tiên[/COLOR]
        Me.RecordSource = "TB hang hoa"
        .SetWarnings (True)
    End With
End Sub

Private Sub cmdLayDuLieu_Click()
Dim strFileName As String
  strFileName = "D:\HocAccess\Folder02\vidu.xls"
    With DoCmd
        .SetWarnings (False)
        .RunSQL "Delete * from [TB hang hoa]"
        [COLOR=#ff0000].TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
            "TB hang hoa", strFileName, True, "B4:G18"[/COLOR] lổi thứ 2
         Me.RecordSource = "TB hang hoa"
        .SetWarnings (True)
    End With

End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
nó báo lổi không đc bạn à
Private Sub cmdCapNhat_Click()
Dim strFileName As String
strFileName = "D:\HocAccess\Folder02\vidu.xls"
With DoCmd
.SetWarnings (False)
sSQL = "UPDATE [TB hang hoa] b " _
& "RIGHT JOIN " _
& "[Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & strFileName & "].[Sheet1$B4:G18] a " _
& "ON a.Mahang=b.Mahang " _
& "SET b.ngay=a.ngay,b.Mahang=a.Mahang,b.tenhang=a.tenhang," _
& "b.makholuutru=a.makholuutru,b.tenkholuutru=a.tenkholuutru," _
& "b.Soluongban=a.Soluongban " _
& "where a.mahang is not null"
DoCmd.RunSQL sSQL lổi đầu tiên
Me.RecordSource = "TB hang hoa"
.SetWarnings (True)
End With
End Sub

Private Sub cmdLayDuLieu_Click()
Dim strFileName As String
strFileName = "D:\HocAccess\Folder02\vidu.xls"
With DoCmd
.SetWarnings (False)
.RunSQL "Delete * from [TB hang hoa]"
.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
"TB hang hoa", strFileName, True, "B4:G18"
lổi thứ 2
Me.RecordSource = "TB hang hoa"
.SetWarnings (True)
End With

End Sub

Bạn nên kiểm tra chính xác lại đường dẫn nhé, tôi thấy file bạn gửi lần trước có tên "Folder 02" (Khó cách trắng), còn sửa trong code thì không có, bạn kiểm tra lại nhé.
 
bạn a mình có sưa lại thư mục cho phù hợp mà vẩn báo lổi bạn à
bạn thử tạo vào file và gửi lên mình download về thử xem!
 
bạn a mình có sưa lại thư mục cho phù hợp mà vẩn báo lổi bạn à
bạn thử tạo vào file và gửi lên mình download về thử xem!
Vấn đề chắc chắn là do đường dẫn của bạn.

Mã:
Option Compare Database
Private Sub cmdCapNhat_Click()
Dim strFileName As String
  strFileName = [B][COLOR=#0000ff]"D:\HocAccess\Folder 02\vi du.xls"[/COLOR][/B]
  With DoCmd
        .SetWarnings (False)
        sSQL = "UPDATE [TB hang hoa] b " _
          & "RIGHT JOIN " _
          & "[Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & strFileName & "].[Sheet1$B4:G18] a " _
          & "ON a.Mahang=b.Mahang " _
          & "SET b.ngay=a.ngay,b.Mahang=a.Mahang,b.tenhang=a.tenhang," _
          & "b.makholuutru=a.makholuutru,b.tenkholuutru=a.tenkholuutru," _
          & "b.Soluongban=a.Soluongban " _
          & "where a.mahang is not null"
        DoCmd.RunSQL sSQL
        Me.RecordSource = "TB hang hoa"
        .SetWarnings (True)
    End With
End Sub

Private Sub cmdLayDuLieu_Click()
Dim strFileName As String
  strFileName = [B][COLOR=#0000cd]"D:\HocAccess\Folder 02\vi du.xls"[/COLOR][/B]
    With DoCmd
        .SetWarnings (False)
        .RunSQL "Delete * from [TB hang hoa]"
        .TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
            "TB hang hoa", strFileName, True, "B4:G18"
         Me.RecordSource = "TB hang hoa"
        .SetWarnings (True)
    End With

End Sub
 
ồ đúng tại lổi mình không sưa đường dẩn file excel
còn phần code của excel bạn làm luôn hộ mình nhé!

ở nút update ra excel sao nó không chạy bạn? nó không chuyển dữ liệu qua excel mà lại lấy từ excel vào!
 
Chỉnh sửa lần cuối bởi điều hành viên:
ồ đúng tại lổi mình không sưa đường dẩn file excel
1./ còn phần code của excel bạn làm luôn hộ mình nhé!

2./ ở nút update ra excel sao nó không chạy bạn? nó không chuyển dữ liệu qua excel mà lại lấy từ excel vào!

1./ Thì bạn dựa vào đó mà đổi đường dẫn, hãy cố làm trước vậy mới mau tiến bộ.

2./ Do bạn không nói rõ là update từ excel qua hay là update đến file excel. Để mình xem lại.
 
bạn xem lại chưa? nút update ra excel mà không cần mở file excel đó!
 
bạn xem lại chưa? nút update ra excel mà không cần mở file excel đó!

Người ta đang giúp bạn hay là lính của bạn để bạn hối người ta vậy? Trưa thế này người ta còn ăn uống, nghỉ ngơi nữa chứ!

Muốn gì thì cứ gửi file của bạn lên, xem bạn làm tới đâu mới có hướng giúp bạn, chứ tưởng tượng mà làm thì chỉ có Hai Lúa Miền Tây có đủ kiên nhẫn để giúp bạn thôi!
 
Lần chỉnh sửa cuối:
mình không biết mới lên diễn đàn nhờ những người giỏi hơn giúp đỡ, mình đã gửi file rồi! tôi nghĩ bạn tự nâng cao mình, rồi chọc chĩa tùm lum làm mất quan điểm người khác thì cho dù bạn có gỏi đi chăng nữa tôi cũng chẳng nhờ bạn giúp đỡ!
không như bạn Hai Lúa Miền Tây nhiệt tình mình rất cảm ơn bạn ấy!
 
mình đã làm đc ở file excel rồi!còn lại file access update qua excel nữa thôi!
 
thực sự là mình muốn tạo ra file của người khác mình lấy dữ liệu của người ta và tạo dữ liệu lại để người ta có dữ liệu mới để làm việc tiếp bạn à

bạn ơi cho mình hỏi cái tại sao những ô dạng text khi mình đánh số vào thì nó lại không updete được
 
Chỉnh sửa lần cuối bởi điều hành viên:
khi mình gỏ dạng text vào những ô trong access định dạng là text thì được
nhưng khi gỏ là số vào thì không tài nào update được!
 
khi mình gỏ dạng text vào những ô trong access định dạng là text thì được
nhưng khi gỏ là số vào thì không tài nào update được!

Code updata trong Excel:

[GPECODE=sql]Sub HLMT_Update()
On Error GoTo loi
Set Cn = CreateObject("ADODB.Connection")
Dim mySQL As String
Dim strFileName
strFileName = Application.GetOpenFilename()
With Cn
mySQL = "UPDATE [TB hang hoa] b " _
& "right JOIN " _
& "[Excel 8.0;HDR=Yes;IMEX=1;DATABASE=" _
& ThisWorkbook.FullName & "].[Sheet1$B4:G600] a " _
& "ON b.Mahang=a.Mahang " _
& "SET b.ngay=a.ngay,b.Mahang=a.Mahang,b.tenhang=a.tenhang," _
& "b.makholuutru=a.makholuutru,b.tenkholuutru=a.tenkholuutru," _
& "b.Soluongban=a.Soluongban " _
& "where a.mahang is not null"
.Provider = "Microsoft Jet 4.0 OLE DB Provider"
.ConnectionString = "Data Source=" & strFileName
.CursorLocation = adUseClient
.Open
.Execute mySQL
.Close
End With
Set Cn = Nothing
Exit Sub
loi:
MsgBox Err.Description

End Sub

[/GPECODE]
 
bạn xem file minh họa nhé!
 

File đính kèm

  • THDH.zip
    74.4 KB · Đọc: 43
Web KT
Back
Top Bottom