各位高手,小弟又有问题搞不定了
Option Explicit
Public db As ADODB.Connection
Public rs As ADODB.RecordsetPrivate Sub Command1_Click()
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("一工位") = 5555
Adodc1.Recordset.Fields("二工位") = 6666
Adodc1.Recordset.Fields("三工位") = 7777
Adodc1.Recordset.Update
Adodc1.Refresh
End SubPrivate Sub Form_Load()
Set db = New ADODB.Connection
    Set rs = New ADODB.Recordset
  db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False;"
  Set DataGrid1.DataSource = Adodc1
End Sub
这个,是我在form2中的代码,form2中有一个datagrid和一个adodc控件,现在在form2中,command1的点击是可以实现的,现在我在form1中操作,
Private Sub Cmdstart_Click()
cmdstart.BackColor = RGB(123, 104, 238)
Form2.Adodc1.Recordset.AddNew
Form2.Adodc1.Recordset.Fields("一工位") = 5555
Form2.Adodc1.Recordset.Fields("二工位") = 6666
Form2.Adodc1 Recordset.Fields("三工位") = 7777
Form2.Adodc1.Recordset.Update
End Sub
就没法实现,报变量未定义的错误,光标停在recordset上,我不知道应该怎样定义变量了,在form2中我已经写成public了,为什么还是说未定义呢,有哪位高手帮个忙,详细的帮小弟改一下。小弟感激不尽,现在我在form1中把所有关于调用数据库的语句都删了。要写什么直接写就好了。然后解释一下原理,我以后就不用麻烦各位了。谢谢

解决方案 »

  1.   

    在form2中我已经写成public了
    *******************
    lz是说 Public rs As ADODB.Recordset 这个吗?这是两回事,两个概念
    Public rs As ADODB.Recordset ……这个是adodb
    Form2.Adodc1.Recordset.AddNew ……这个是adodc控件
      

  2.   


    Form2.Adodc1.Recordset
    应该没有问题,form2中的控件应该可以在form1中使用,lz确认拼写没有问题?
      

  3.   

    请确认form2中的adodc是否已经与数据库建立连接
      

  4.   

    adodc控件是怎么连接的?设计时设计?代码实现?
      

  5.   

    FORM2如果先加载并显示了,在FORM1中是可以这样做的,但如果首先运行的是FORM1,就可能出现类似问题.
      

  6.   

    可以先LOAD FORM2,然后隐藏 FORM2,再在FORM1中操作FORM2就应该没问题了.
      

  7.   

      Set   Rs   =   New   ADODB.Recordset   
      

  8.   


    测试一下,不是这样的1。adodc1的配置在设计时做没有问题2。adodc1的配置用代码写在form_load里没有问题3。adodc1的配置用代码写在一个按钮里这样就会出问题了
      

  9.   

    form1中调用form2的控件,需要保证form2已加载到内存里,不管form2是否显示
    7楼的办法就是这个原理
      

  10.   


    Form2.Adodc1.Recordset.AddNew 前加一句Form2.Adodc1.refresh试试
      

  11.   

    经测试,确实没有问题,惭愧.....
    不过照lz的写法,datagrid应当出不来数据,少了一句.
    如果lz的问题还没有解决,工程发给我看看吧,[email protected]
      

  12.   

    首先说一下Refresh和加载后隐藏的问题,这个我写在form1 load的末尾了,没有效果。可能是我写的不对,麻烦说明一下。
    form-load
    其他东西
    Load Form2
    Form2.Hide
    Form2.Adodc1.Refresh
    end sub
    最后13楼的回复,我因为初学,所以搞的很乱,我怕代码处问题,有在属性设置里面又设了一遍,有可能代码不全,设置补上了,汗~~~。不好意思,对不住大家。
    关键在于,问题没解决。
    谢谢各位,请继续。
      

  13.   

    补充一下,在Form2.Adodc1.Recordset.AddNew 前加一句Form2.Adodc1.refresh,没用。
    然后9楼,正解,但是他说的不解决问题.
      

  14.   


    Private Sub Form_Load()
         Form2.Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\My Documents\22.mdb;Persist Security Info=False"
         Form2.Adodc1.CommandType = adCmdText
         Form2.Adodc1.RecordSource = "select top 1 * from itb1"
         Form2.Adodc1.Refresh
         Form2.Adodc1.Recordset.AddNew
         Form2.Adodc1.Recordset.Fields(0) = 555
         Form2.Adodc1.Recordset.Fields(1) = 111
         Form2.Adodc1.Recordset.Update
         Form2.Adodc1.RecordSource = "select * from itb1"
         Form2.Adodc1.Refresh
         Set DataGrid1.DataSource = Form2.Adodc1
         
    End Sub
      

  15.   

    '我的程序在form1的Form_Load里面,我测试的没有问题,好好对照以上程序看你的程序。
      

  16.   

    …………有够麻烦,我一般都不怎么用ADO,直接引用了写语句吧,哈。