Kết nối SQL server với Access

trieule

New Member
Hội viên mới
Ðề: Kết nối SQL server với Access

Mục đích của các làm này là giữ nguyên cái file mdb cũ để lưu trữ, để có gì thì xài lại cái cũ: :D

Tạo một database mới trong SQL Server.
Dùng EM của SQL Server làm thao tác import data từ Access và database mới này.
Sau đó vào Access, tạo một file adp mới: File - New - Project using existing data.
Tiến hành cho connect với file database đã tạo -> trang Tables của file adp sẽ hiển thị các table của database là OK.
Tiếp theo là import các form, report, module của file mdb cũ vào file adp để sử dụng.

Lưu ý:
Trong code chỗ nào dùng CurrentDB thì phải đổi lại là CurrentProject.
Khi dùng Recordset thì phải ghi rõ là DAO.Recordset hay ADO.Recordset, vì mặc định sẽ dùng thư viện ADO. Mà thuộc tính và phương thức của 2 thư viện này có khác biệt.
Query tạo trong mdb có thể không import được vào database SQL server do cú pháp không tương thích. Do vậy nếu cần phải tạo view lại.

Ngoài ra, có thể sử dụng công cụ Upsizing Wizard của Access để "nâng" data lên SQL Server database: menu Tools - Database Utilities - Upsizing Wizard. Vào đó làm theo hướng dẫn.
to:phatnq2002
-Thì đúng là như thế, tôi sd Upzizing Wizard để úp file mdb lên SQL nhưng khi sd lại các form nó bị "trơ" ra hết. Khôg truy xuấduoc9775 data.:-((
-Cái nữa, tôi củng làm theo cách của phatnq2002 rối. Tức là tạo 1 database mới trên SQL sau đó tạo 1 adp mới hoàn toàn & connect đến database trên SQL. Connect tốt nhưng đến khi inport các form & report thj cũng chẵng chạy được.
NÓ báo "Violation .....", chán wa rồi.
- Hiện đang sd SQL 2000.
- File mdb thì chạy good mà qua cái adp sau "bỡ cả hơi tay"
- Mong moi người giúp nhá!:tuivotoi:
 

LoveBlue

Member
Hội viên mới
Ðề: Kết nối SQL server với Access

to:phatnq2002
-Thì đúng là như thế, tôi sd Upzizing Wizard để úp file mdb lên SQL nhưng khi sd lại các form nó bị "trơ" ra hết. Khôg truy xuấduoc9775 data.:-((
-Cái nữa, tôi củng làm theo cách của phatnq2002 rối. Tức là tạo 1 database mới trên SQL sau đó tạo 1 adp mới hoàn toàn & connect đến database trên SQL. Connect tốt nhưng đến khi inport các form & report thj cũng chẵng chạy được.
NÓ báo "Violation .....", chán wa rồi.
- Hiện đang sd SQL 2000.
- File mdb thì chạy good mà qua cái adp sau "bỡ cả hơi tay"
- Mong moi người giúp nhá!:tuivotoi:
Có một số trường hợp bạn không dùng file *. adp như mdb được. Nhất là khi Upsize rất dễ gặp trường hợp như trên.
Hầu như các connect phải thiết kế lại cho phù hợp

Trong trường hợp của bạn. Mình nghĩ bạn nên dùng file mdb nhưng các table thì liên kết với SQL server thông qua các kiểu liên kết khác. ( thường mình dùng ODBC).Còn lại dùng file mdb bình thường, chỉ có data là được lưu trên SQL server
Chúc may mắn!

Có 1 bài viết về dùng MDB kết hợp với SQL server thông qua liên kết ODBC.
Mới bạn tham khảo!
KHOA H?C PH? THNG - Cng Ngh? & Thng Tin - Chia S? ?am M

________________________________________________________________________________________________
Blog Thủ Thuật Access
Thủ thuật Access|Access Cơ bản|Access nâng cao|Thế giới văn phòng|Giao lưu giải trí|Vui cười|Phim Hài|Góc thơ
 
Sửa lần cuối:

dannynguyen

New Member
Hội viên mới
Ðề: Kết nối SQL server với Access

Các bác xem hộ em xem đoạn code (.adp file ) này của em bị lỗi ở đâu mà khi gọi hàm DeleteTable không xóa được bảng.
*************************************************
Option Compare Database
Option Explicit

Function DeleteTable(ByVal TableName As String) As Boolean

'References: Microsoft Access 11.0 Object Library, Microsoft DAO 3.6 Object Library
'Set references by Clicking Tools and Then References in the Code View window
' Deletes a Table with a given TableName that exists in a database
' Accepts
' TableName: Name of table
' Returns True on success, false otherwise
'USAGE: DeleteTable "TABLENAME"


On Error GoTo errhandler

Dim db As ADODB.Connection
Dim strSql As String
Set db = CurrentProject.Connection

'Create the Delte SQL Code from our Three Strings
strSql = "DROP TABLE " & TableName

If ifTableExists(TableName) = True Then

'Print the SQL so we can paste into the query builder if there are errors
Debug.Print strSql

'delete table if found
db.Execute strSql
End If

'If no errors return true
DeleteTable = True

ExitHere:

Set db = Nothing
'Notify the user the process is complete.
MsgBox "Delete Table Completed"
Exit Function

errhandler:
'There is an error return false
DeleteTable = False

With Err
MsgBox "Error " & .Number & vbCrLf & .Description, _
vbOKOnly Or vbCritical, "DeleteTable"
End With

Resume ExitHere

End Function

**************************************************
Function ifTableExists(TableName As String) As Boolean
Dim rs As ADODB.Recordset, db As ADODB.Connection

' DAO Vars
'References: Microsoft Access 11.0 Object Library, Microsoft DAO 3.6 Object Library
'Set references by Clicking Tools and Then References in the Code View window
'Checks if Table exists.
'USAGE: ifTableExists "TABLENAME"

On Error GoTo NoTable 'If there is no table capture the error.

Set db = CurrentProject.Connection

'If Table is there open it
Set rs = db.OpenRecordset("Select * from " & TableName & ";")
ifTableExists = True
rs.Close
db.Close

Exit Function
NoTable:
'If table is not there close out and set function to false
Set rs = Nothing
db.Close
Set db = Nothing

ifTableExists = False
Exit Function
End Function
*************************************************************
file access chạy rất ngon.
link demo đây: VBA_Delete_Table_Function_SAMPLE.zip
Các bác giúp cho 1 tay nhé.
 

lehongduc

Member
Hội viên mới
Ðề: Kết nối SQL server với Access

Nó hơi mất thời gian thôi bác ơi, chứ em cũng đã xử lý được rồi. Tuy nhiên em không thích lặp đi lặp lại các thao tác giống hệt nhau. Sử dụng mấy phần mềm chuyển đổi dữ liệu nhưng chẳng thấy cái nào giữ được key như ban đầu, phải thiết lập toàn bộ lại bằng tay.
Nhưng bác cho em hỏi làm sao để 1 file ADP có thể vừa kết nối với 1 CSDL SQL , vừa kết nối với 1 CSDL bằng access. Tức là khi người dùng không muốn cài đặt SQLServer(dùng cho 1 máy đơn) ta cho kết nối với data access, còn khi dùng cho nhiều người dùng ta cho kết nối với SQLserver.
Chào Bạn,
Nếu Bạn thiết kế 1 ADP thì không thể làm được việc này một cách đơn giản. Bởi vì: mọi công việc lưu trữ và xử lý dữ liệu trong ADP đều do SQL Server phụ trách cả; nếu làm khác đi sẽ làm cho ADP mất tác dụng.
Dễ dàng nhất là: Bạn thiết kế 1 MDB, trong đó toàn bộ việc kết nối đều được thông qua các thủ tục VBA. Lúc đó Bạn tha hồ tùy chọn nguồn dữ liệu để kết nối (kể cả kết nối với MySQL hoặc Oracle).
Bạn cũng có thể dễ dàng tìm được các đoạn code mẫu để làm việc trên bằng cách dùng Google với từ khóa thích hợp hoặc vào website sau: ConnectionStrings.com - Forgot that connection string? Get it here!
 

tuannhcs

Member
Hội viên mới
Ðề: Kết nối SQL server với Access

-hiện tại mình đã hoàn thiện ứng dụng quản lý bán hàng
bằng access project+sql server và đã được ứng dụng cho một số cửa hàng,siêu thị mini
-Do phiên bản access project+sql server tôi chưa biết cách đóng gói bộ sql server vào cùng phần mềm
nên chưa đưa lên mạng
-Các bạn muốn tham khảo thì liên hệ ,tôi sẽ chuyển phần mềm cho
nick yahoo:hoanbhxhls
-Phiên bản access mdb tôi để tại địa chỉ
Gi?i thi?u ph?n m?m k? ton doanh nghi?p
 

Võ Bình Tâm

New Member
Hội viên mới
Chào Phatnq2002
co cach nao 1 file access chia se nhieu may cung su dung (su dung split database nhưng code không hỉu)
liên kết table với form, query......(table đặt trên ổ đĩa shere)
xin chỉ giáo thêm...
 

Thanhtandofico

New Member
Hội viên mới
Anh phatnq2002 ơi!
Khi kết nối ADP với SQL từ máy trạm thì servername phải khai như thế nào ạ?
Thank Anh
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top