Ghi và lấy dữ liệu giữa Access Và Excel

Liên hệ QC
Mình cũng ko fai pro, chắc phải nghiên cứu đã.
Mình nghĩ là sẽ bỏ hàm xóa đi. Không ghi vào ID, mà dùng code tự insert id trong table access.
 
Mình cũng ko fai pro, chắc phải nghiên cứu đã.
Mình nghĩ là sẽ bỏ hàm xóa đi. Không ghi vào ID, mà dùng code tự insert id trong table access.

cảm ơn bạn vậy mình chờ xem tin tốt lành từ bạn ...hay có bạn xyz nào tham gia một chút thì hay....--=0
 
Sub Ghi dữ liệu sửa lại chút
Mã:
Option Explicit
Sub AccImport()
    Dim table As String
    table = Sheet1.Cells(1, 1)
    XoaCSDL
    Dim acc As New Access.Application
    acc.OpenCurrentDatabase "C:\Users\MyPC\Downloads\CSDL\CSDL.mdb", True, "1234"
    acc.DoCmd.TransferSpreadsheet _
            TransferType:=acImport, _
            SpreadSheetType:=acSpreadsheetTypeExcel12Xml, _
            TableName:=table, _
            Filename:=Application.ActiveWorkbook.FullName, _
            HasFieldNames:=True, _
            Range:="Sheet1$B4:r4000"
    acc.CloseCurrentDatabase
    acc.Quit
    Set acc = Nothing
End Sub
 
Sub Ghi dữ liệu sửa lại chút
Mã:
Option Explicit
Sub AccImport()
    Dim table As String
    table = Sheet1.Cells(1, 1)
    XoaCSDL
    Dim acc As New Access.Application
    acc.OpenCurrentDatabase "C:\Users\MyPC\Downloads\CSDL\CSDL.mdb", True, "1234"
    acc.DoCmd.TransferSpreadsheet _
            TransferType:=acImport, _
            SpreadSheetType:=acSpreadsheetTypeExcel12Xml, _
            TableName:=table, _
            Filename:=Application.ActiveWorkbook.FullName, _
            HasFieldNames:=True, _
            Range:="Sheet1$B4:r4000"
    acc.CloseCurrentDatabase
    acc.Quit
    Set acc = Nothing
End Sub

Mình xài office 2016 vậy muốn đổi File CSDL.mdb sang Access 2016 làm thế nào bạn nhỉ
 
Bạn ra đề đi rồi mọi người làm
Còn mình toàn hỏi google rồi sửa thôi. @@

Ok Bạn 1 ý Tưởng rất hay

Giờ ta làm từng cái nhỏ 1 như vậy để cho các Bạn mới làm quen tham gia với cho nó vui ...và Gió nó mới lên được nha...--=0

1/ Cách tạo một File CSDL.mdb áp dụng cho Office 2003 và cho 2010 To 2016

2/ Mình úp lên 1 file mẫu ta sẻ xử lý từ Excel trước khi lưu vào File CSDL

2.1/ Vùng dữ liệu lưu [A3:G25]
2.2/ Tổng hợp theo điều kiên [C4:C25] nếu có dữ liệu thì lưu vào CSDL
2.3/ Lưu dữ liệu nối xuống vào CSDL
.................
 

File đính kèm

  • Main.xlsb
    8.4 KB · Đọc: 27
Ok Bạn 1 ý Tưởng rất hay

Giờ ta làm từng cái nhỏ 1 như vậy để cho các Bạn mới làm quen tham gia với cho nó vui ...và Gió nó mới lên được nha...--=0

1/ Cách tạo một File CSDL.mdb áp dụng cho Office 2003 và cho 2010 To 2016

2/ Mình úp lên 1 file mẫu ta sẻ xử lý từ Excel trước khi lưu vào File CSDL

2.1/ Vùng dữ liệu lưu [A3:G25]
2.2/ Tổng hợp theo điều kiên [C4:C25] nếu có dữ liệu thì lưu vào CSDL
2.3/ Lưu dữ liệu nối xuống vào CSDL
.................

Cái này không làm đc rồi, nhờ các pro thôi.
 
Cái này không làm đc rồi, nhờ các pro thôi.
Thấy mới lạ tối qua tui keo chú Google tìm hoài link tinh ...cuối cùng lại thấy ngay trên GPE mà code dễ coi và hiểu hơn mấy trang nước ngoài + kế Toán khỉ ho gì gì đó

http://www.giaiphapexcel.com/forum/...i-truy-vấn-CSDL-từ-file-Excel-đến-file-Access

Thiệt tìm chi xa xôi mệt chết .... Code GPE vẫn là Hàng 1 mà ....//**/
 
Thấy mới lạ tối qua tui keo chú Google tìm hoài link tinh ...cuối cùng lại thấy ngay trên GPE mà code dễ coi và hiểu hơn mấy trang nước ngoài + kế Toán khỉ ho gì gì đó

http://www.giaiphapexcel.com/forum/...i-truy-vấn-CSDL-từ-file-Excel-đến-file-Access

Thiệt tìm chi xa xôi mệt chết .... Code GPE vẫn là Hàng 1 mà ....//**/
Uhm, Tham khảo bài viết của hai lúa. Mình đang sửa lại hàm ghi dữ liệu sử dụng SQL command xem có nhanh hơn không nhưng chưa được.
Hàm ghi ACCimport chạy mất 6-7s mới đc có vẻ hơi lâu
 
Uhm, Tham khảo bài viết của hai lúa. Mình đang sửa lại hàm ghi dữ liệu sử dụng SQL command xem có nhanh hơn không nhưng chưa được.
Hàm ghi ACCimport chạy mất 6-7s mới đc có vẻ hơi lâu

Mình thấy lấy nó bay cái vèo ...còn ghi vào nó chậm như Rùa..
 
Dùng SQL chắc nhanh hơn. Bạn hỏi HieuCD xem có giúp được không.

Bạn thử qua link sau ngâm cứu truy vấn xem hay đó

http://www.giaiphapexcel.com/forum/...-lọc-từ-Excel-đến-CSDL-Access-bằn-ADO-căn-bản

Mình cũng đang từng bước nghiên cứu Access xem để tạo một cái Databace cho chương trình Quản lý bán Hàng của mình ....mà thấy nó khó quá hay sao thấy ít bài quá

Ít bạn nổi gió với nó quá ...thấy bài link trên rất hay nhưng ít người chơi quá ...--=0...vắng vẻ quá ...!$@!!
 
Dùng SQL chắc nhanh hơn. Bạn hỏi HieuCD xem có giúp được không.
Ghi dữ liệu vào file khác hoạc sheet khác hoặc Access đều tương tự nhau. Quan trong là chuổi kết nối thôi.

[GPECODE=sql]

Sub HLMT_Insert()
With CreateObject("ADODB.Connection")
.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;"";")
.Execute ("insert into [Data$]([ID],[TEN],[SL]) SELECT [ID],[TEN],[SL] FROM [NhapLieu$A1:C100]")
End With
End Sub


[/GPECODE]
 

File đính kèm

  • InsertData.xls
    35.5 KB · Đọc: 21
Đóng góp thêm function kiểm tra sự tồn tại của bảng Access sử dụng Excel VBA

Mình vừa tìm được cái này để kiểm tra sự tồn tại của bảng để Ghi hoặc xóa dữ liệu nếu có.

Mã:
Option Explicit

 Function CheckExitTable(ByVal strField As String) As Boolean
'an Access object
Dim objAccess As Object
'connection string to access database
Dim strConnection As String
'catalog object
Dim objCatalog As Object
'connection object
Dim cnn As Object
Dim i As Integer
Dim intRow As Integer


Set objAccess = CreateObject("Access.Application")
'open access database


Call objAccess.OpenCurrentDatabase( _
"D:\Tai lieu co quan\PX15\PM CSCAK\GCSCAKNU.accdb")
'get the connection string
strConnection = objAccess.CurrentProject.Connection.ConnectionString
'close the access project
objAccess.Quit
'create a connection object
Set cnn = CreateObject("ADODB.Connection")
'assign the connnection string to the connection object
cnn.ConnectionString = strConnection
'open the adodb connection object
cnn.Open
'create a catalog object
Set objCatalog = CreateObject("ADOX.catalog")
'connect catalog object to database
objCatalog.ActiveConnection = cnn
'loop through the tables in the catalog object
intRow = 1
For i = 0 To objCatalog.Tables.Count - 1
    'check if the table is a user defined table
    If objCatalog.Tables.Item(i).Type = strField Then
        'ckeck
        strField = True
        Exit Function
        
    End If
Next i
strField = False
End Function


Sub test()
If CheckExitTable("2016") = False Then
    MsgBox ("Field exists")
Else
    MsgBox ("Field does not exist")
End If
End Sub
 
Bạn thử qua link sau ngâm cứu truy vấn xem hay đó

http://www.giaiphapexcel.com/forum/...-lọc-từ-Excel-đến-CSDL-Access-bằn-ADO-căn-bản

Mình cũng đang từng bước nghiên cứu Access xem để tạo một cái Databace cho chương trình Quản lý bán Hàng của mình ....mà thấy nó khó quá hay sao thấy ít bài quá

Ít bạn nổi gió với nó quá ...thấy bài link trên rất hay nhưng ít người chơi quá ...--=0...vắng vẻ quá ...!$@!!

Nhất trí, rất hay. Để khi nào ngâm cứu lại
 
Ghi dữ liệu vào file khác hoạc sheet khác hoặc Access đều tương tự nhau. Quan trong là chuổi kết nối thôi.

[GPECODE=sql]

Sub HLMT_Insert()
With CreateObject("ADODB.Connection")
.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;"";")
.Execute ("insert into [Data$]([ID],[TEN],[SL]) SELECT [ID],[TEN],[SL] FROM [NhapLieu$A1:C100]")
End With
End Sub


[/GPECODE]

Code của Hai lúa mình ko chỉnh được insert vào access

Mình có code này chạy nhanh
Mã:
Sub AddData()
Dim Cn As ADODB.Connection
Set Cn = New ADODB.Connection


Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Tai lieu co quan\PX15\PM CSCAK\Giai CSCA khoe13.xlsm;Extended Properties=Excel 8.0;" _
& "Persist Security Info=False"


Cn.Execute "INSERT INTO 2016 IN 'D:\Tai lieu co quan\PX15\PM CSCAK\GCSCAKNU.accdb' SELECT * FROM [DSNU$B5:P1000]"


Cn.Close
Set Cn = Nothing


End Sub
 
Mình vừa tìm được cái này để kiểm tra sự tồn tại của bảng để Ghi hoặc xóa dữ liệu nếu có.

Mã:
Option Explicit

 Function CheckExitTable(ByVal strField As String) As Boolean
'an Access object
Dim objAccess As Object
'connection string to access database
Dim strConnection As String
'catalog object
Dim objCatalog As Object
'connection object
Dim cnn As Object
Dim i As Integer
Dim intRow As Integer


Set objAccess = CreateObject("Access.Application")
'open access database


Call objAccess.OpenCurrentDatabase( _
"D:\Tai lieu co quan\PX15\PM CSCAK\GCSCAKNU.accdb")
'get the connection string
strConnection = objAccess.CurrentProject.Connection.ConnectionString
'close the access project
objAccess.Quit
'create a connection object
Set cnn = CreateObject("ADODB.Connection")
'assign the connnection string to the connection object
cnn.ConnectionString = strConnection
'open the adodb connection object
cnn.Open
'create a catalog object
Set objCatalog = CreateObject("ADOX.catalog")
'connect catalog object to database
objCatalog.ActiveConnection = cnn
'loop through the tables in the catalog object
intRow = 1
For i = 0 To objCatalog.Tables.Count - 1
    'check if the table is a user defined table
    If objCatalog.Tables.Item(i).Type = strField Then
        'ckeck
        strField = True
        Exit Function
        
    End If
Next i
strField = False
End Function


Sub test()
If CheckExitTable("2016") = False Then
    MsgBox ("Field exists")
Else
    MsgBox ("Field does not exist")
End If
End Sub

Thay thế:
For i = 0 To objRecordset.Fields.Count - 1
'check for a match
If strField = objRecordset.Fields.Item(i).Name Then
'exist function and return true
CheckExists = True
Exit Function
End If
Next i
'return false
CheckExists = False
 
Trích xuất dữ liệu Excel và Access

Chào các bạn,

Hôm nay mình tải bản đầy đủ được nghiên cứu chắp vá từ các diễn đàn về việc truy xuất dữ liệu Excel và Access
Trong đó có các hàm về:
+ Kết nối CSDL
+ Tạo bảng
+ Ghi dữ liệu
+ Xuất dữ liệu
+ Kiểm tra bảng
Khắc phục một số vấn đề về việc cải thiện tốc độ truy xuất vào CSDL.

Account: admin
Pass: Trungquang@123 hoặc admin@123
 

File đính kèm

  • PM CSCAK.rar
    395.1 KB · Đọc: 65
Web KT
Back
Top Bottom