Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
hoatran_gha

hỏi về thao tác với CSDL bằng VBA

Các bài được khuyến nghị

Em đang học về VBA trong autoCAD nhưng đến phần CSDL thì thấy mắc quá. Bác nào giúp em doạn code tạo 1 file diem.MDB sau đó nhập tọa độ của 1 điểm gồm X và Y(tu 1file .txt), sau đó truy xuất từ file diem.MDB đó vẽ trên autocad với ạ

Cảm ơn các bác nhiều!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tôi chưa thử link giữa CAD và Access bao giờ, nhưng nếu bác chịu khó đọc cái này (tiếng Anh :leluoi: ) chắc sẽ được, hướng dẫn rất căn bản và chi tiết:

 

VBA: Integrating with Microsoft Access - Part 1

VBA: Integrating with Microsoft Access - Part 2

VBA: Integrating with Microsoft Access - Part 3

From Autodesk.com

 

Ngoài ra còn rất nhiều vấn đề khác, tấc cả về AutoCAD các bác tham khảo tại AutoCAD Services & Support

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Em đang học về VBA trong autoCAD nhưng đến phần CSDL thì thấy mắc quá. Bác nào giúp em doạn code tạo 1 file diem.MDB sau đó nhập tọa độ của 1 điểm gồm X và Y(tu 1file .txt), sau đó truy xuất từ file diem.MDB đó vẽ trên autocad với ạ

Cảm ơn các bác nhiều!

Mình cũng tập tành làm việc với VBA trong cad. sau đây là đoạn code về đọc dữ liệu từ file MDB và vẽ lại trong CAD của mình

đây là ứng dụng cụ thể về việc đọc 1 file MDB được export từ chương trình Sap 8.203

đầu tiên là modun về tạo FileDialog để mở file MDB (cái này do mình ko đủ ocx để tạo commondialog nên phài nhờ ông anh làm hộ :s_big: )

=======================

Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Public Type OPENFILENAME

lStructSize As Long

hwndOwner As Long

hInstance As Long

lpstrFilter As String

lpstrCustomFilter As String

nMaxCustFilter As Long

nFilterIndex As Long

lpstrFile As String

nMaxFile As Long

lpstrFileTitle As String

nMaxFileTitle As Long

lpstrInitialDir As String

lpstrTitle As String

flags As Long

nFileOffset As Integer

nFileExtension As Integer

lpstrDefExt As String

lCustData As Long

lpfnHook As Long

lpTemplateName As String

End Type

Public Function SelectFileDialog(ByVal isOpen, ByVal FileFilter, ByVal initDir)

Dim strTemp, strTemp1, pathStr As String

Dim I, n, J As Long

Dim OpenFile As OPENFILENAME

Dim lReturn As Long

Dim sFilter As String

Dim Fname As String

OpenFile.lStructSize = Len(OpenFile)

If FileFilter = "" Then

sFilter = "Text Files (*.txt)" & Chr(0) & "*.TXT" & Chr(0)

Else

sFilter = FileFilter

End If

If FileFilter = "" Then

OpenFile.lpstrInitialDir = initDir

Else

OpenFile.lpstrInitialDir = "d:\"

End If

If isOpen = True Then

OpenFile.lpstrTitle = "Open"

Else

OpenFile.lpstrTitle = "Save"

End If

 

OpenFile.lpstrFilter = sFilter

OpenFile.nFilterIndex = 1

OpenFile.lpstrFile = String(257, 0)

OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1

OpenFile.lpstrFileTitle = OpenFile.lpstrFile

OpenFile.nMaxFileTitle = OpenFile.nMaxFile

OpenFile.flags = 0

lReturn = GetOpenFileName(OpenFile)

If lReturn = 0 Then

SelectFileDialog = ""

Else

SelectFileDialog = Trim(OpenFile.lpstrFile)

End If

End Function

===========================

tiếp theo là modun vẽ

============

Public Sub Ve3DThap()

Dim strSQL

Dim Line As Variant

Dim SP As Variant, EP As Variant

Dim StartPoint(0 To 2) As Double

Dim EndPoint(0 To 2) As Double

Dim bytSoDotCu As Byte

Dim DBKT As Database

Dim RS As Recordset, RS1 As Recordset

Dim bytI As Byte

Dim intSoThanhCu, intSoThanhMoi

Dim CaoTrinh As Double

Dim SQL As String

Dim fileName As String

fileName = SelectFileDialog(True, "Data Files (*.mdb)" & Chr(0) & "*.mdb" & Chr(0), "D:")

If Not (fileName = "") Then

Call MoCSDL(DBKT, Trim(fileName))

'Doc du lieu tu bang [Connectivity - Frame/Cable]

strSQL = "SELECT Fr.Frame, JC1.XorR as XorR1, JC1.Y as Y1 , JC1.Z as Z1, JC2.XorR AS XorR2, JC2.Y as Y2 , JC2.Z as Z2 " & _

"FROM ([Connectivity - Frame/Cable] AS Fr INNER JOIN [Joint Coordinates] AS JC1 ON Fr.JointI = JC1.Joint) " & _

"INNER JOIN [Joint Coordinates] AS JC2 ON Fr.JointJ = JC2.Joint"

Set RS = DBKT.OpenRecordset(strSQL)

RS.MoveFirst

Do While Not RS.EOF

StartPoint(0) = RS.Fields("XorR1")

StartPoint(1) = RS.Fields("Y1")

StartPoint(2) = RS.Fields("Z1")

EndPoint(0) = RS.Fields("XorR2")

EndPoint(1) = RS.Fields("Y2")

EndPoint(2) = RS.Fields("Z2")

Set Line = ThisDrawing.ModelSpace.AddLine(StartPoint, EndPoint)

RS.MoveNext

Loop

'§ãng RS më bëi c©u truy vÊn strSQL

RS.Close

Else

MsgBox "Chon Lai Duong Dan File Du Lieu"

End If

End Sub

Mình sẽ up file mdb cho bạn tiện sử dụng

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Và Đây là đường link của file MDB

http://www.cadviet.com/upfiles/db1.zip

cái SQL nó phụ thuộc vào cấu trúc của bảng trong MDB

Có gì thắc mắc có thể liên hệ với em qua địa chỉ yaho: bisok2@yahoo.com

Em rất mong được chia sẻ kinh nghiệm :s_big:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

bài trước em thiếu một modun em xin phép bổ sung

====================================================

Public Sub MoCSDL(strDBName As Database, strFileName As String)

On Error GoTo ErrorHandler:

' blnKetThuc = False

If strFileName = "" Then

' blnKetThuc = True

MsgBox "Nhap lai duong dan File du lieu", vbCritical

Exit Sub

End If

Set strDBName = OpenDatabase(strFileName)

Exit Sub

ErrorHandler:

MsgBox "Kh«ng më ®­îc CSDL! Chän l¹i File MDB !" & Err.Description

' blnKetThuc = True

Exit Sub

End Sub

==================================================

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×