1  Dim i As Integer
2  lstrecord.Clear
3  For i = 0 To myrs.field.Count - 1
4      lstrecord.AddItem [&myrs.fields(i).name&]: myrs.fields(i).Value
5  nexti行号3中我们看到了有myrs.fields(你那里可是少一个S).count,这句话的意思是统计你指定的那个数据库中共有几个字段
行号4中出现了myrs.fields(i).name,这个是在第(i)个字段中的名称,比如是“姓名”字段。
myrs.fields(i).value是指这个字段当前的值。
至于出现的问题正在分析中。

解决方案 »

  1.   

    问题已经出来了。
    之所以说用户定义类型未定义
    是因为你的mydb和myrs在使用前并没有进行初始化。
    在程序中加入
    set mydb=new database
    set myrs=new recordset
    试试。
      

  2.   

    帮你改了一下Option Explicit
    Public mydb As Database
    Public myrs As Recordset'ÎÒÃÇʹÓÃÕâ¸öº¯Êý½«Ä¿Ç°¼Ç¼ָÕëÉϵļǼÏÔʾÔÚlistboxÖÐ
    Private Sub mdisplayrecord()
      Dim i As Integer
      lstrecord.Clear
      For i = 0 To myrs.Fields.Count - 1
         Call lstrecord.AddItem(myrs.Fields(i).Name + myrs.Fields(i).Value)
      Next i
    End SubPrivate Sub minserttablename()
      Dim i As Integer
      cmbtablename.Clear
      For i = 0 To mydb.tabledefs.Count - 1
      If mydb.tabledefs(i).Attributes = 0 Then
            cmbtablename.AddItem mydb.tabledefs(i).Name
      End If
      Next i
      cmbtablename.Text = cmbtablename.List(0)
    End Sub
    Private Sub minsertfieldname()
      Dim i As Integer
      cmbfieldname.Clear
      For i = 0 To myrs.Fields.Count - 1
          cmbfieldname.AddItem myrs.Fields(i).Name
      Next i
    End Sub
    Private Sub cmbdata_dropdown()
    myrs.movefirst
    cmbdata.Clear
    Do
        cmbdata.AddItem myrs.Fields(cmbfieldname).Value
        myrs.movenext
    Loop Until (myrs.EOF)
    End Sub
    Private Sub cmbtablename_click()
      Dim i As Integer
      Screen.MousePointer = 11
      If Trim(cmdtablename.Text) <> "" Then
          Set myrs = mydb.openrecordset(cmdtablename.Text, dbOpenDynaset, dbOptimistic)
          Call mdisplayrecord
          cmdmovefirst.Enabled = True
          cmdmovenext.Enabled = True
          cmdmovelast.Enabled = True
          cmdfind.Enabled = True
      Else
          MsgBox "&Ccedil;&euml;&Iuml;&Egrave;&Ntilde;&iexcl;&Ocirc;&ntilde;±í&cedil;&ntilde;&Atilde;&ucirc;&sup3;&AElig;!"
      End If
      Screen.MousePointer = 1
    End Sub
    Private Sub cmbtablename_dropdown()
    Screen.MousePointer = 11
    Call minserttablename
    Screen.MousePointer = 1
    End Sub
    Private Sub cmdcancel_click()
      frafind.Visible = False
    End Sub
    Private Sub cmdexit_click()
    End
    End Sub
    Private Sub cmdfind_lick()
    frafind.Visible = True
    Call minsertfieldname
    cmbfieldname.Text = cmbfieldname.List(0)
    End SubPrivate Sub cmdmovefirst_Click()
    myrs.movefirst
    Call mdisplayrecord
    cmdmovenext.Enabled = True
    cmdmoveprev.Enabled = False
    End SubPrivate Sub cmdmovelast_Click()
    myrs.movelast
    Call mdisplayrecord
    cmdmoveprev.Enabled = True
    cmdmovenext.Enabled = False
    End SubPrivate Sub cmdmovenext_Click()
    If Not myrs.EOF Then
          myrs.movenext
          Call mdisplayrecord
          cmdmoveprev.Enabled = True
    End If
    End SubPrivate Sub cmdmoveprev_Click()
    If Not myrs.bof Then
          myrs.moveprevious
          Call mdisplayrecord
          cmdmovenext.Enabled = True
    End If
    End SubPrivate Sub cmdopentable_Click()
    Dim i As Integer
    If txtdbname.Text <> "" Then
            Set mydb = dbengine.OpenDatabase(txtdbname.Text)
    Else
            MsgBox "&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;&Otilde;&yacute;&Egrave;·&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&Acirc;·&frac34;&para;\&Atilde;&ucirc;&sup3;&AElig;!"
    End If
    Call minserttablename
    If Trim(cmdtablename.Text) <> "" Then
        Set myrs = mydb.openrecordset(cmdtablename.Text, dbOpenDynaset, dbOptimistic)
        Call mdisplayrecord
        cmdmovefirst.Enabled = True
        cmdmovenext.Enabled = True
        cmdmovelast.Enabled = True
        cmdfind.Enabled = True
        cmdtablename.Enabled = True
    Else
        MsgBox "&Ccedil;&euml;&Iuml;&Egrave;&Ntilde;&iexcl;&Ocirc;&ntilde;±í&cedil;&ntilde;&Atilde;&ucirc;&sup3;&AElig;!"
    End If
    End Sub
    Private Sub cmdstart_click()
    Dim isfound As Integer
    Screen.MousePointer = 11
    If Trim(cmdfieldname.Text) <> "" Then
            myrs.movefirst
            myrs.findfirst cmdfieldname.Text = cmddata.Text
            frafind.Visible = False
            Call mdisplayrecord
    Else
            MsgBox "&Ccedil;&euml;&Iuml;&Egrave;&Ecirc;&auml;&Egrave;&euml;&Auml;ú&Ograve;&ordf;&Euml;&Ntilde;&Euml;÷&micro;&Auml;×&Ouml;&para;&Icirc;&Atilde;&ucirc;&sup3;&AElig;!"
    End If
    Screen.MousePointer = 1
    End SubPrivate Sub Form_Load()
    Screen.MousePointer = 11
    Form1.Left = (Screen.Width - Form1.Width) / 2
    Form1.Top = (Screen.Height - Form1.Height) / 2
    Screen.MousePointer = 1
    End Sub
      

  3.   

    to jingxiaoping我在public mydb as database
        public mydb as recordset
    后加的,但提示编译错误,无效外部过程
      

  4.   

    回复人: nansi(南锡) (2002-2-2 23:52:44)  得0分 
    to jingxiaoping我在public mydb as database
        public mydb as recordset
    后加的,但提示编译错误,无效外部过程  在form_load事件里加
     
      

  5.   

    to wjying照你说的去做了,还是不行,又出现用户定义类型未定义
      

  6.   

    to wjying用户定义类型未定义(指public mydb as database)
      

  7.   

    to wjying
    dao引用了,也不行
      

  8.   

    在通用里面dim mydb as database