[attach]73[/attach]
谢了。
给你改了一下。详细见代码的注释
Private Sub cmdok_Click() 'Dim username, password As String '原代码 '以上声明方式,username被声明为Variant型变量 '正确的声明方式如下:(如果要放在一行则: Dim username as string,password as string) '变量的命名参考VB命名规范,至少要大小写混合 Dim strUserName As String Dim strPwd As String Dim strAppPath As String strAppPath = App.Path '如果程序放在根目录下,则apppath="c:\"或"d:\"之类,否则为"c:\myexe"之类,修正 If Right(strAppPath, 1) <> "\" Then strAppPath = strAppPath & "\" '数据库与exe文件在同一目录下,不要在设计时指定,否则安装到最终用户机器上时, '如果安装目录和你的开发目录不同,就找不数据库 Data1.DatabaseName = strAppPath & "db1.mdb" Data1.RecordsetType = 0 Data1.RecordSource = "用户注册表" Data1.Refresh strUserName = Text1.Text strPwd = Text2.Text 'Data1.Recordset.Index = "用户名" '原代码 'Index属性是索引名而不是字段名, '索引名用Access打开MDB数据库,进入“设计”模式,点工具栏是的“索引”按纽可以查看 Data1.Recordset.Index = "PrimaryKey" Data1.Recordset.Seek "=", strUserName ' If Data1.Recordset.EOF = True Then ' MsgBox "无此用户" ' Exit Sub ' End If '使用Seek方法后不要用BOF,EOF判断,而是用NoMatch方法来判断 If Data1.Recordset.NoMatch Then MsgBox "无此用户" Exit Sub End If If Data1.Recordset.Fields("密码") = strPwd Then 'usefrm.Show 'Unload Me '你的包里没这个form,在你程序中,你可以改回去 MsgBox "登录成功" Else MsgBox "密码错误" End If
End Sub
另外,控件的命名也是有规范的,这里我没给你改,你可以自己找一下相关的资料。
初学编程,良好的代码书写风格非常重要,切记。
补充一下
代码虽然给你改好了,但是不建议你使用DAO,更不建议你使用Data控件(即使你开始学习ADO,也不建议你使用ADODC控件),VB虽然提供了这样的控件,并且使用绑定可以很快的完成一个简单的数据库程序,但是这不旦对初学者没有什么帮助,而且往往使初学者形成“依赖”心理,做什么都想找“现成”的控件。实际上,你从这种“绑定”的方式中学不到什么有用的知识,对大型的数据库应用软件,“绑定”基本上满足不了你的要求。而且一个控件只能“绑定”一个表,如果你的数据库有几十个甚至上百个表,你怎么办?放它几十个或上百个Data?
看看书,自己试一下纯粹用代码来完成以上功能,你会发现其实也很简单,而且能学到更多的东西。