注册 登录
编程论坛 VB6论坛

根据登录的用户名密码搜索出ACCESS数据库中这一列的信息并分别显示到4个Label的Caption中。

wangyiaihu 发布于 2020-04-23 11:15, 3697 次点击
只有本站会员才能查看附件,请 登录
程序代码:
Private Sub Command1_Click()
'将数据库里的信息显示到LABEL中,筛选条件是根据登录时的用户密码,获取它相应的这一列信息

Dim conn1 As New ADODB.Connection
Dim rs1 As New ADODB.Recordset
conn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Aging.mdb " 'a.mdb是ACCESS数据库保存在程序目录下
rs1.Open "Select * From 注册 Where 用户='" & Form1.Text1.Text & "' and 密码='" & Form1.Text2.Text & "'", cn, 2, 3

Form3.Label1.Caption = rs1!用户
Form3.Label2.Caption = rs1!权限
Form3.Label4.Caption = rs1!所属
Form3.Label3.Caption = rs1!SHIFT别



rs1.Close
conn1.Close
Set rs1 = Nothing
Set conn1 = Nothing

17 回复
#2
wangyiaihu2020-04-23 11:16
想要实现这样的功能,请教各位大神指教,


补充下:
当前界面是FORM3,
登录界面是FORM1,

[此贴子已经被作者于2020-4-23 11:21编辑过]

#3
ZHRXJR2020-04-23 11:38
MsgBox "登录成功!", 64, "已经登录!"
            
            RS.Close
            Set RS = Nothing
            cn.Close
            Set cn = Nothing
            Unload Me
            Form3.Show
登录成功后直接跳转到 Form3 界面,因此在 Form_Load() 事件中直接在标签最后显示数据就可以了,不需要在按钮事件中显示
程序代码:

Dim conn1 As New ADODB.Connection
Dim rs1 As New ADODB.Recordset    '二个对象在界面通用部分声明,不需要在每个过程中都声明

Private Sub Form_Load()
conn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Aging.mdb " 'a.mdb是ACCESS数据库保存在程序目录下
rs1.Open "Select * From 注册 Where 用户='" & Form1.Text1.Text & "' and 密码='" & Form1.Text2.Text & "'", cn, 2, 3   '这个语句好像有问题
    Label1.Caption = rs1!用户
    Label2.Caption = rs1!权限
    Label4.Caption = rs1!所属
    Label3.Caption = rs1!SHIFT别
    '.......................
rs1.Close
conn1.Close
Set rs1 = Nothing
Set conn1 = Nothing
End Sub



[此贴子已经被作者于2020-4-23 11:40编辑过]

#4
wangyiaihu2020-04-23 11:48
回复 3楼 ZHRXJR
有问题的那条该怎么修改啊?
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2020-4-23 11:53编辑过]

#5
ZHRXJR2020-04-23 12:07
rs1.Open "Select * From 注册 Where 用户='" & Form1.Text1.Text & "' and 密码='" & Form1.Text2.Text & "'", cn, 2, 3   '这个语句好像有问题
在Form1 界面登录成功后已经关闭了并才内存清除了 Form1 界面,因此再次调用 Form1.Text1.Text 控件的值是不行的,在程序中添加一个模块,不是类模块,在模块中声明二个变量,就是程序级变量
程序代码:
Public YHMC As String '= RS("用户名")
Public YHMM As String '= RS("密码")
Public conn1 As New ADODB.Connection    '数据库连接对象
Public rs1 As New ADODB.Recordset      '记录集对象
'
在模块中声明后任何界面将可以调用

Sub KKK(conn1)
'连接数据库,在模块中的过程,其他界面调用这个过程就可以
  conn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Aging.mdb "
End Sub

在登录时:
            
程序代码:
MsgBox "登录成功!", 64, "已经登录!"
            YHMC = rs1!用户
            YHMM = rs1!密码    '给公用变量赋值,增加这二个语句
            rs1.Close
            Set rs1 = Nothing
            cn.Close
            Set cn = Nothing
            Unload Me
            Form3.Show

在登录成功后将用户名、用户密码赋值给这二个变量,在 Form3 界面直接调用变量就可以。
rs1.Open "Select * From 注册 Where 用户='" & YHMC & "' and 密码='" & YHMM & "'", cn, 2, 3


[此贴子已经被作者于2020-4-23 12:08编辑过]

#6
wangyiaihu2020-04-23 12:47
回复 5楼 ZHRXJR
刚刚试了,达不到效果,还是空白,而且提示语法错误,
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2020-4-23 13:24编辑过]

#7
ZHRXJR2020-04-23 13:34
什么地方出错,你的图片看不出来。将你的FORM3的代码给我,应该是这个界面出错了吧?
#8
wangyiaihu2020-04-23 13:42
回复 7楼 ZHRXJR
程序代码:


Private Sub Form_Load()
Form3.Image4.Picture = Form2.Image7.Picture

Form3.Image1.Picture = Form2.Image8.Picture

Form3.Image2.Picture = Form2.Image10.Picture

Form3.Image3.Picture = Form2.Image12.Picture

Form3.Image5.Picture = Form2.Image14.Picture

Form3.Image6.Picture = Form2.Image16.Picture

Form3.Image7.Picture = Form2.Image18.Picture

Form3.Image8.Picture = Form2.Image20.Picture

Form3.Image9.Picture = Form2.Image20.Picture

Form3.Image10.Picture = Form2.Image22.Picture

Form3.Image11.Picture = Form2.Image24.Picture

Form3.Image12.Picture = Form2.Image26.Picture

Form3.Image13.Picture = Form2.Image28.Picture


Form3.Label5.Caption = Date

Form3.Label6.Caption = Time


rs1.Open "Select * From 注册 Where 用户='" & YHMC & "' and 密码='" & YHMM & "'", cn, 2, 3



End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image1.Picture = Form2.Image8.Picture

Form3.Image2.Picture = Form2.Image10.Picture

Form3.Image3.Picture = Form2.Image12.Picture

Form3.Image5.Picture = Form2.Image14.Picture

Form3.Image6.Picture = Form2.Image16.Picture

Form3.Image7.Picture = Form2.Image18.Picture

Form3.Image8.Picture = Form2.Image20.Picture

Form3.Image9.Picture = Form2.Image20.Picture

Form3.Image10.Picture = Form2.Image22.Picture

Form3.Image11.Picture = Form2.Image24.Picture

Form3.Image12.Picture = Form2.Image26.Picture

Form3.Image13.Picture = Form2.Image28.Picture


End Sub

Private Sub Image1_Click()
Form6.Show
Form3.Hide

End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image1.Picture = Form2.Image9.Picture
Form3.Image2.Picture = Form2.Image10.Picture



End Sub

Private Sub Image10_Click()
Form3.Hide

Form4.Show

End Sub

Private Sub Image10_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image10.Picture = Form2.Image23.Picture

End Sub

Private Sub Image11_Click()
Form9.Show
Form3.Hide

End Sub

Private Sub Image11_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image11.Picture = Form2.Image25.Picture

End Sub

Private Sub Image12_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image12.Picture = Form2.Image27.Picture

End Sub

Private Sub Image13_Click()


Form3.Hide
Form1.Show
Form1.Text1.Text = ""
Form1.Text2.Text = ""
Form1.Text1.SetFocus



End Sub

Private Sub Image13_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image13.Picture = Form2.Image29.Picture

End Sub

Private Sub Image2_Click()
Form7.Show
Form3.Hide

End Sub

Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image2.Picture = Form2.Image11.Picture
'Form3.Image1.Picture = Form2.Image8.Picture
End Sub

Private Sub Image3_Click()
Form5.Show
Form3.Hide


End Sub

Private Sub Image3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image3.Picture = Form2.Image13.Picture
End Sub

Private Sub Image4_Click()
End

End Sub

Private Sub Image5_Click()
Form6.Show
Form3.Hide
End Sub

Private Sub Image5_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image5.Picture = Form2.Image15.Picture

End Sub

Private Sub Image6_Click()
Form6.Show
Form3.Hide
End Sub

Private Sub Image6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image6.Picture = Form2.Image17.Picture

End Sub

Private Sub Image7_Click()
Form8.Show
Form3.Hide

End Sub

Private Sub Image7_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image7.Picture = Form2.Image19.Picture

End Sub

Private Sub Image8_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image8.Picture = Form2.Image21.Picture

End Sub

Private Sub Image9_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form3.Image9.Picture = Form2.Image21.Picture

End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

End Sub

Private Sub Timer1_Timer()
Form3.Label5.Caption = Date

Form3.Label6.Caption = Time
End Sub
#9
ZHRXJR2020-04-23 16:05
#10
wangyiaihu2020-04-23 16:49
回复 9楼 ZHRXJR
我觉得是不是我的思路就错了,
是不是可以这样,在RORM3里面建立一个隐藏的TEXT,在FORM1登录时,将FORM1.TEXT内容传给FORM3.TEXT,
在LOADING FOrmM时,再根据这个text内容进行查询并显示到LABEL里面,

这方案怎么样?
#11
wangyiaihu2020-04-23 17:50
回复 9楼 ZHRXJR
程序代码:
Dim cn12 As New ADODB.Connection
Dim rs12 As New ADODB.Recordset
cn12.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Aging.mdb "

rs12.Open "Select * From 注册 Where 用户='" & Text1.Text & "', cn12, 2, 3"

   

 Form3.Label1.Caption = rs!用户

 Form3.Label2.Caption = rs!权限

 Form3.Label4.Caption = rs!班次

 Form3.Label3.Caption = rs!所属
   
            rs12.Close
            Set rs12 = Nothing
            cn12.Close
            Set cn12 = Nothing

 
            Exit Sub
     
rs12.Close
Set rs12 = Nothing
cn12.Close
Set cn12 = Nothing



当前通过一个按钮,想实现把查询到的数据显示到LABEL中,代码有问题,请帮忙看看,
#12
ZHRXJR2020-04-24 07:09
哎,怎么给你说呢,好像你听不进去,
1、各界面运行时不需要在每个控件的前面加界面名称,如 《Form3.Label3.Caption = rs!所属》 直接书写为 《Label3.Caption = rs1!所属》 不需要 Form3。
2、前面已经在建立了模块,模块中已经有 Public conn1 As New ADODB.Connection ,Public rs1 As New ADODB.Recordset   二个公用对象,在各界面就不要再定义这二个对象了。
3、模块中已经有了一个公用的数据库连接过程,在各界面就没有必要再次连接数据库,直接调用即可 Call KKK(conn1),以后修改数据库连接也特别方便,只修改模块中的数据库连接语句就可以。
4、你的程序中有很多不理解你的意思,看得我头都大了,那么多鼠标移动事件,不知道你的意图是什么,而且,在启动 FOrm3 时,Form2 已经关闭并从内存中清除了 Form2 ,因此肯定出错。
5、在你的程序中就没有发现连接数据库的语句,怎么能够将用户信息显示出来?

建议你还是先好好看看书,了解最基本的编程基础。
#13
ZHRXJR2020-04-24 07:18
程序代码:

'你的这个程序也有好多问题:
Dim cn12 As New ADODB.Connection
Dim rs12 As New ADODB.Recordset
cn12.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Aging.mdb "

rs12.Open "Select * From 注册 Where 用户='" & Text1.Text & "', cn12, 2, 3"

   


 Form3.Label1.Caption = rs!用户    '记录集对象与你的记录集对象不是一个对象, rs 与 rs12 能一样吗?


 Form3.Label2.Caption = rs!权限


 Form3.Label4.Caption = rs!班次


 Form3.Label3.Caption = rs!所属
   
            rs12.Close
            Set rs12 = Nothing
            cn12.Close
            Set cn12 = Nothing


 
            Exit Sub
     
rs12.Close
Set rs12 = Nothing   '前面已经关闭了,这里再次关闭,有意义吗?
cn12.Close
Set cn12 = Nothing
#14
wangyiaihu2020-04-24 14:54
回复 12楼 ZHRXJR
呵呵,自己买了本书,看的学,所以有很多不理解的地方,希望继续得到你的指导,
#15
wangyiaihu2020-04-24 15:56
回复 13楼 ZHRXJR
可以把你理解的那种方案,代码写给我看看吗?谢谢了,

就是我们最原始要求的那种效果,FORM1里面的 用户 密码登录时,FORM3 LOADNG时根据它们进行查询4个内容到LABLE1,LABLE2,LABLE3,LABLE4中.
#16
ZHRXJR2020-04-24 18:32
将你需要实现的目的说清楚,并将你的工程打包发给我,我给你修改一下,一般来说应该可以正常运行。
#17
wangyiaihu2020-04-24 18:44
回复 16楼 ZHRXJR
把你邮箱发给我,我发给你,
#18
ZHRXJR2020-04-24 18:56
看私信
1