明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2641|回复: 13

关于在AUTOCAD中操作外部数据库的问题

  [复制链接]
发表于 2011-5-10 10:39:12 | 显示全部楼层 |阅读模式
我自定义个命令,命令中需要操作(读取)外部数据库中的数据。可是调试中出现错误:Application does not support Windows Forms just-in-time (JIT) debugging.(这个错误是在AutoCAD中输入命令后出现的)请问有遇到过的吗?
具体代码:
<CommandMethod("nettext")> Public Sub nettext()
        Dim conn As OleDbConnection
        conn = New OleDbConnection("Provide.Microsoft.Jet.OLEDB.4.0;" & "Data Source=E:\database\Bdata.mdb")
        conn.Open()
        Dim mySQL As String
        Dim mytablename As String
        mytablename = "桥梁"
        mySQL = "select * from " & mytablename
        Dim cmd As New OleDbCommand(mySQL, conn)
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        Dim da As New OleDbDataAdapter(cmd)
        Dim ds As New DataSet
        da.Fill(ds, "桥梁")
        Dim datarow As DataRow
        Dim pt As New Point3d(100, 100, 0)
        Dim height As Double = 50
        Dim oblique As Double = 0
        For Each datarow In ds.Tables("桥梁").Rows
            Dim i As Integer = 1
            Dim text As String
            text = datarow.Item("桥名")
            ModleSpace.AddText(pt, text, height, oblique)   
            pt = New Point3d(100 + i * 500, 100, 0)
            i += 1
        Next
    End Sub
代码意图是在图纸上隔500显示数据库中的桥名。
 楼主| 发表于 2011-5-10 10:49:37 | 显示全部楼层
出现错误。我点继续后。仍然没有想要的结果
发表于 2011-5-10 14:33:29 | 显示全部楼层
            ModleSpace.AddText(pt, text, height, oblique)   
            pt = New Point3d(100 + i * 500, 100, 0)
这貌似有问题吧,你是不是用的ActiveX对象。com接口是不能使用point3d netapi里的Structure的
 楼主| 发表于 2011-5-10 21:28:12 | 显示全部楼层
回复 chmenf087 的帖子

ModleSpace.AddText(pt, text, height, oblique)  没有问题。这个是在modlespace.vb模块中封装了DBText类的构造函数
Public Shared Function AddText(ByVal position As Point3d, ByVal textstring As String, ByVal height As Double, ByVal oblique As Double) As ObjectId
        Try
            Dim ent As New DBText()
            ent.Position = position
            ent.TextString = textstring
            ent.Height = height
            ent.Oblique = oblique
            Dim entId As ObjectId = AppendEntity(ent)
            Return entId
        Catch
            Dim nullId As ObjectId = ObjectId.Null
            Return nullId
        End Try
    End Function
发表于 2011-5-10 22:05:03 | 显示全部楼层
本帖最后由 chmenf087 于 2011-5-10 22:08 编辑

你看看你的注册表键值是不是这样的
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="0"
"Debugger"="\"C:\\WINDOWS\\system32\\vsjitdebugger.exe\" -p %ld -e %ld"
"UserDebuggerHotKey"=dword:00000000
 楼主| 发表于 2011-5-10 22:24:11 | 显示全部楼层
回复 chmenf087 的帖子

是这样的啊...
发表于 2011-5-10 23:03:35 | 显示全部楼层
没有哪里有winForm,不知道你哪里出问题了,这点程序也看不出端倪,自己单步吧
发表于 2011-5-11 00:04:16 | 显示全部楼层
本帖最后由 sailorcwx 于 2011-5-11 00:05 编辑

感觉连接字符有问题
New OleDbConnection("Provide.Microsoft.Jet.OLEDB.4.0;" & "Data Source=E:\database\Bdata.mdb")
改成
New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source="  & "E:\\database\\Bdata.mdb")
试试看
发表于 2011-5-11 00:12:12 | 显示全部楼层
呃,应该是 Provider=
 楼主| 发表于 2011-5-11 08:39:30 | 显示全部楼层
回复 chmenf087 的帖子

嗯。连接字符是错了。可是修改后还是不成。你有没有写过的在命令中操作数据库的简单程序,发个,我看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 15:32 , Processed in 0.184399 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表