incoolwen 发表于 2007-11-8 14:28
帮下忙```找错```谢谢
<P>string str,passeword //定义游标变量<BR>declare myyou cursor for //定义个游标<BR>select yh,mima from T_yh; //从T_yh表找用户和密码<BR>open myyou; //打开游标 <BR>do while (sqlca.sqlcode=0) <BR> fetch myyou into :str,:password; //把找到的用户和密码分别给两个变量<BR> where str=:sle_1.text //问一下,这里除了用IF还可以用什么语语判断<BR> if sqlca.sqlcode=100 then<BR> messagebox("提示","没有这个用户")<BR> sle_1.text=""<BR> sle_1.setfocus()<BR> elseif password<>sle_2.text then<BR> messagebox("提示","密码错了")<BR> sle_2.text=""<BR> sle_2.setfocus()<BR>else<BR> open(w_suan)<BR> close(parent)<BR> close(myyou)//关闭游标,问下``这句放到那个地方好```<BR> end if</P>
<P><BR>本人刚刚学PB``很多问题都不知道```还请大家帮帮我````谢谢```````</P>
fyh 发表于 2007-11-11 18:20
<P>在程序中尽量不要用游标`````这样导致程序运行慢啊``<BR>///以下是我个人的建议~`````````<BR>String ls_Used,ls_Pass<BR>Long ll_UsedC,ll_PassC<BR><BR>ls_Used = Trim(Sle_1.Text) ///用户名<BR>ls_Pass = Trim(Sle_2.Text) //口令<BR>///////用户<BR>select Count(1) INTO :ll_UsedC from T_yh Where yh = :ls_Used ///用户是否存在<BR>IF ll_UsedC = 0 Then ///未找到<BR> MessaGeBox('提示','用户不存在!')<BR> Sle_1.SetFocus()<BR> Return ///返回不往下执行<BR>End if<BR>//////口令<BR>select Count(1) INTO :ll_PassC from T_yh Where Mima = :ls_Pass ///口令是否正确<BR>IF ll_PassC= 0 Then ///未找到<BR> MessaGeBox('Error','你输入的口令错误!')<BR> Sle_2.SetFocus()<BR> Return ///返回不往下执行<BR>End if<BR>///以上IF条件不成立的情况执行<BR>open(w_suan)<BR>close(parent)<BR><BR><BR> <BR></P>
jsxwr 发表于 2007-11-14 20:41
<P>实际程序编写时,应该多考虑其安全性,单独对用户名或密码报错,会带来不必要的麻烦,所以不如直接把两项写进一个条件语句中!另外应对用户尝试次数进行限制。<br>//在父窗口中定为局部变量 Long ll_times<br><br><br>String ls_Used,ls_Pass<br>Long ll_Used<br><br>ls_Used = Trim(Sle_1.Text) ///用户名<br>ls_Pass = Trim(Sle_2.Text) //口令<br><br>select Count(*) INTO :ll_Used from T_yh Where yh = :ls_Used and Mima = :ls_Pass ;///用户是否存在<br>IF ll_Used < 1 Then <br> MessaGeBox('提示','用户或密码错误!')<br> ll_times = ll_times +1<br> if ll_times >=3 then halt //最多给3次尝试机会!<br> Sle_1.SetFocus()<br> Return <br>End if<br><br>ywzX(w_suan)<br>close(parent)<br></P>
[align=right][color=#000066][此贴子已经被作者于2007-11-14 20:42:53编辑过][/color][/align]
页:
[1]