sbati 发表于 2006-6-13 00:52:00

菜鸟求助:实现不了功能帮忙看看指点指点

<P>根据 &lt;&lt;autocad精彩实例教程&gt;&gt;看的,做gis辅助工具,就想实现把图型中各个点的坐标等信息导入数据库,但现在有问题,坐标能捕捉到但好象数据传不到书库库</P>
<P>Option Explicit<BR>Dim daoDb As DAO.Database&nbsp;&nbsp; '数据库对象<BR>Dim daoRs As DAO.Recordset&nbsp; '记录集对象<BR>Dim strPath As String</P>
<P>Private Sub cmdAdd_Click()<BR>&nbsp;&nbsp;&nbsp; On Error GoTo errHandle</P>
<P>&nbsp;&nbsp;&nbsp; '添加一条记录<BR>&nbsp;&nbsp;&nbsp; daoRs.AddNew<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ExchangeData True<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; daoRs.Update<BR>&nbsp;&nbsp;&nbsp; <BR>errHandle:<BR>&nbsp;&nbsp;&nbsp; If Err.Number = 3022 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "首先修改文本框中的数值,然后单击“添加”按钮,完成添加的操作。", vbCritical<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; Err.Clear<BR>End Sub</P>
<P>Private Sub cmdExit_Click()<BR>&nbsp;&nbsp;&nbsp; Unload Me<BR>End Sub</P>
<P>Private Sub cmdFirst_Click()<BR>&nbsp;&nbsp;&nbsp; '转到第一条记录<BR>&nbsp;&nbsp;&nbsp; daoRs.MoveFirst<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ExchangeData False<BR>End Sub</P>
<P>Private Sub cmdLast_Click()<BR>&nbsp;&nbsp;&nbsp; '转到最后一条记录<BR>&nbsp;&nbsp;&nbsp; daoRs.MoveLast<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ExchangeData False<BR>End Sub</P>
<P>Private Sub cmdNext_Click()<BR>&nbsp;&nbsp;&nbsp; On Error Resume Next</P>
<P>&nbsp;&nbsp;&nbsp; If Not daoRs.EOF Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.MoveNext<BR>&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.MoveLast<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ExchangeData False<BR>End Sub</P>
<P>Private Sub cmdDelete_Click()<BR>&nbsp;&nbsp;&nbsp; On Error Resume Next<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; If MsgBox("删除当前记录?", vbYesNo, "确认删除") = vbYes Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.Delete<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If daoRs.EOF Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.MoveLast<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.MoveNext<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ExchangeData False<BR>End Sub</P>
<P>Private Sub cmdPickPt_Click()<BR>Dim ptPick As Variant<BR>Form1.Hide<BR>ptPick = ThisDrawing.Utility.GetPoint(, "指定点")<BR>txtptStX.Text = ptPick(0)<BR>txtptStY.Text = ptPick(1)<BR>Form1.Show<BR>End Sub</P>
<P>Private Sub cmdPrevious_Click()<BR>&nbsp;&nbsp;&nbsp; On Error Resume Next<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; If daoRs.BOF Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.MoveFirst<BR>&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.MovePrevious<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ExchangeData False<BR>End Sub</P>
<P>Private Sub cmdSave_Click()<BR>&nbsp;&nbsp;&nbsp; '修改数据库中的元素<BR>&nbsp;&nbsp;&nbsp; daoRs.Edit<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ExchangeData True<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; daoRs.Update<BR>End Sub</P>
<P>Private Sub UserForm_Initialize()<BR>&nbsp;&nbsp;&nbsp; '必须首先获得当前的工程路径<BR>&nbsp;&nbsp;&nbsp; strPath = ThisDrawing.Application.VBE.ActiveVBProject.FileName</P>
<P>&nbsp;&nbsp;&nbsp; '连接数据库<BR>&nbsp;&nbsp;&nbsp; Set daoDb = OpenDatabase(Left(strPath, Len(strPath) - 8) &amp; "temp.mdb")<BR>&nbsp;&nbsp;&nbsp; Set daoRs = daoDb.OpenRecordset("temp", 2)<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; '读取数据库<BR>&nbsp;&nbsp;&nbsp; If daoRs.RecordCount &lt;&gt; 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.MoveFirst<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExchangeData False<BR>&nbsp;&nbsp;&nbsp; End If<BR>End Sub</P>
<P>Private Sub UserForm_Terminate()<BR>&nbsp;&nbsp;&nbsp; '关闭数据库和记录集<BR>&nbsp;&nbsp;&nbsp; daoRs.Close<BR>&nbsp;&nbsp;&nbsp; daoDb.Close<BR>End Sub</P>
<P>Private Sub ExchangeData(ByVal bSave As Boolean)<BR>&nbsp;&nbsp;&nbsp; If bSave Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.Fields("工程编号") = txtId.Text<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.Fields("X坐标)") = txtptStX.Text&nbsp;&nbsp;&nbsp;&nbsp; '保存内容仍可使用字段名称或者索引号访问数据库内容<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.Fields("Y坐标") = txtptStY.Text<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.Fields("本点号") = bdian.Text<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.Fields("上点号") = sdian.Text<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daoRs.Fields("类型") = lxing.Text<BR>&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtId.Text = daoRs.Fields("工程编号")&nbsp;&nbsp; '根据字段名称或者索引均可以访问其内容<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtptStX.Text = daoRs.Fields("X坐标")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtptStY.Text = daoRs.Fields("Y坐标")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bdian.Text = daoRs.Fields("本点号")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sdian.Text = daoRs.Fields("上点号")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lxing.Text = daoRs.Fields("类型")<BR>&nbsp;&nbsp;&nbsp; End If<BR>End Sub<BR></P>

songzhi 发表于 2006-6-14 22:34:00

<P>有条件的吧!</P>
<P>首先要在引用中添加DAO,其次你要有一个数据库,结构和程序中使用的一样。</P>
页: [1]
查看完整版本: 菜鸟求助:实现不了功能帮忙看看指点指点