乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 21|回复: 0

autocad vba与数据库的连接

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2008-5-14 12:06:00 | 显示全部楼层 |阅读模式
本人最近想编一个小程序,用来统计DWG中的零件数据,程序如下,已能运行,但不知道为什么不能录入英文,有哪位大侠能帮忙指导一下,运界面如附件:
Option Explicit
Dim adoCon As Connection    '连接对象
Dim adoRs As Recordset '记录集对象
Dim strPath As String
Private Sub cmdAdd_Click()
    Dim control As control
    For Each control In Form1.Controls
        If TypeOf control Is TextBox Then
            If control.Text = "" Then
                MsgBox "参数不能为空,请重新输入!", vbCritical
                Exit Sub
            End If
        End If
    Next
   
    On Error GoTo errHandle
    '添加新的记录
    With adoRs
        .AddNew
   
        .Fields(0) = txtId.Text
        .Fields(1) = txtptStX.Text
        .Fields(2) = txtptStY.Text
        .Fields(3) = 0
        .Fields(4) = txtptEnX.Text
        .Fields(5) = txtptEnY.Text
        .Fields(6) = 0
        
        .Update
    End With
   
    Exit Sub
errHandle:
    If Err.Number = -2147467259 Then
        MsgBox "首先修改文本框中的数值,然后单击“添加”按钮,完成添加的操作。", vbCritical
    End If
    Err.Clear
   
    '由于添加数据失败,不能更新数据库,故取消更新
    adoRs.CancelUpdate
End Sub
Private Sub cmdDelete_Click()
    On Error Resume Next
   
    If MsgBox("删除当前记录?", vbYesNo, "确认删除") = vbYes Then
        adoRs.Delete adAffectCurrent
        
        If adoRs.EOF Then
            adoRs.MoveLast
        Else
            adoRs.MoveNext
        End If
    End If
   
    ExchangeData False
End Sub
Private Sub cmdExit_Click()
    Unload Me
End Sub
Private Sub cmdFirst_Click()
    adoRs.MoveFirst
   
    ExchangeData False
End Sub
Private Sub cmdLast_Click()
    adoRs.MoveLast
   
    ExchangeData False
End Sub
Private Sub cmdModify_Click()
    ExchangeData True
End Sub
Private Sub cmdNext_Click()
    On Error Resume Next
   
    '如果已经到达末尾
    If adoRs.EOF Then
        adoRs.MoveLast
    Else
        adoRs.MoveNext
    End If
   
    ExchangeData False
End Sub
Private Sub cmdPrevious_Click()
    On Error Resume Next
   
    If adoRs.BOF Then
        adoRs.MoveFirst
    Else
        adoRs.MovePrevious
    End If
   
    ExchangeData False
End Sub
Private Sub UserForm_Initialize()
    '必须首先获得当前的工程路径
    strPath = ThisDrawing.Application.VBE.ActiveVBProject.FileName
   
    '连接数据库
    Set adoCon = New Connection
    adoCon.CursorLocation = adUseClient
    adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
        Left(strPath, Len(strPath) - 8) & "lineData.mdb;"
   
    '打开记录集
    Set adoRs = New Recordset
    adoRs.Open "ptStEn", adoCon, adOpenDynamic, adLockOptimistic
   
    If adoRs.RecordCount > 0 Then
        adoRs.MoveLast
        adoRs.MoveFirst
        
        ExchangeData False
    End If
End Sub
Private Sub UserForm_Terminate()
    '关闭连接和记录集
    adoRs.Close
    adoCon.Close
End Sub
'bSave参数取True,表示将文本框中的内容保存到数据库中;取False表示读取数据库的内容
Private Sub ExchangeData(ByVal bSave As Boolean)
    If bSave Then
        adoRs.Fields(0) = txtId.Text
        adoRs.Fields("ptst(x)") = txtptStX.Text     '保存内容仍可使用字段名称或者索引号访问数据库内容
        adoRs.Fields("ptst(y)") = txtptStY.Text
        adoRs.Fields(4) = txtptEnX.Text
        adoRs.Fields(5) = txtptEnY.Text
    Else
        txtId.Text = adoRs.Fields("ObjectID")   '根据字段名称或者索引均可以访问其内容
        txtptStX.Text = adoRs.Fields(1)
        txtptStY.Text = adoRs.Fields(2)
        txtptEnX.Text = adoRs.Fields(4)
        txtptEnY.Text = adoRs.Fields(5)
    End If
End Sub
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-4 17:11 , Processed in 0.894977 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表