hur.cn - 华软网

 热门搜索

为何我的制作的登录框中的代码总是报错?

  作者:未知    来源:网络    更新时间:2019/1/25
我的论文需要开发一个小型管理系统,我在制作登录界面的时候遇到了问题,是代码上的一些问题。请看我的代码
SetPointer(HOURGLASS!)  //将光标酿成沙漏型

string ls_usr,ls_pwd
ls_usr=trim(sle_1.text)
ls_pwd=trim(sle_2.text)

if sle_1.text = "" then
messagebox("警告!","请输入用户名!")
sle_1.setfocus()

elseif sle_2.text = "" then
messagebox("警告!","请输入密码!")
sle_2.setfocus()

elseif ls_usr<>'' then
SELECT pswd INTO :G_PWD FROM login WHERE user=:ls_usr;
//掏出数据库用户口令表格中对应用户的口令

IF ls_pwd<>G_PWD or sqlca.sqlcode<>0 THEN

//将数据库中保存的口令和用户输入的口令作对照

IF G_INPUT_TIME > 3 THEN //不正确,在3次之内可重新输入,超过3次结束程序
MESSAGEBOX("警告","输入用户名的次数太多!")
halt close
ELSE
G_INPUT_TIME++
MESSAGEBOX("提醒","请输入正确的用户名和密码!")
end if
sle_1.setfocus()
else
OPEN(w_main) //输入正确,打开主窗口
CLOSE(w_welcome)
END IF
END IF
-----------------------------------------------------------------------------------------
然则在保存的时候总是报:Database C0038:sqlstate=3700  [sybase][odbc driver][adaptive server anywhere] syntax error or access vilation:near 'login' in pswd from [login] where user = ' '
解释一下,login是我建立的用户名和密码的一张表,其中的列user用来寄存用户名,列pswd用来寄存密码,, G_INPUT_TIME是我定义的实例变量,初始值为1,G_PWD是我定义的全局变量。请列位大侠帮我看看那里有错,其它定义的事情都做好的,谢谢!谢谢感动不尽,马上要交论文了,很急啊,大家帮帮助吧!
------华软网友回答------
1、一般在举行数据措置惩罚,期待的时候,才把光标酿成沙漏型
2、这样写代码,不容易看清楚,而且不合适条件的时候,还在执行下面的代码
可写成如:
if ls_usr = "" then
  messagebox("警告!","请输入用户名!")
  sle_1.setfocus()
  return
end if
3、这里并没有保存的代码呀,你保存的代码是什么,又是在什么时候触发的呢?
------华软网友回复------
IF ls_pwd<>G_PWD or sqlca.sqlcode<>0 THEN
分开判断吧
才知道是那里问题
IF sqlca.sqlcode = 0 THEN
   IF ls_pwd <> g_pwd THEN
      ...
   END IF
ELSE
  MessageBox( This.Title , String( sqlca.sqlcode ) + '~r~n' + sqlca.sqlerrtext )
  RETURN
END IF

看看弹出什么信息

另外:把你的
SELECT pswd INTO :G_PWD FROM login WHERE user =:ls_usr;
换成
SELECT pswd INTO :G_PWD FROM login WHERE [user] =:ls_usr;
看看

------华软网友回复------
楼主碰上的是编译毛病。肯定是遇到关头字了。不是Login 就是 User,或两者皆中, 按楼上的建议去改吧。

SELECT pswd INTO :G_PWD FROM login WHERE [user] =:ls_usr;



SELECT pswd INTO :G_PWD FROM [login] WHERE [user] =:ls_usr;

------华软网友回复------
我这段程序是抄清华大学出书社powerbuilder 9.0基础开发篇上面的例子,应该说程序是没有问题的,就是会持续报错。
------华软网友回复------
楼上两位朋友说的我都试过了,没有用
------华软网友回复------
我的关头字全数正确啊
------华软网友回复------
把你的
数据库连接报错的
毛病代号sqlcode,和sqlerrtext
贴出来,
或,自己设断点检查毛病在那里
。。。。。。。。。。。。。。。。
感觉是连接语句那里有问题

------华软网友回复------
既然你提到所说的
书上的
详细检查下,书上所指的
sle_1,sle_2,数据表,列,等
和你自己建的
是否是一样,从名字到数据类型
=====================
其实完全没需要全按书上说的
看懂意思就行

------华软网友回复------
其余我都检查了一天了,完全没问题的,就是报这个错
------华软网友回复------
打开数据库面板,连接数据库后在保存
------华软网友回复------
Login 和 User 是 ASA 的保留关头字, 不能直接引用。有两个方法能够解决你的问题:

1. Login 和 User 表更名,比如说改成 Logintable, User 改成 Usertable

2. 把 SELECT pswd INTO :G_PWD FROM login WHERE user=:ls_usr; 改成
   Select pswd Into :g_pwd From "login" where "user"=:ls_usr;
记住,表 Login 和 User 要用双引号引住,由于它们是保留的关头字。

强烈推荐第一种方法。第二种方法在 PB 中可能通不过编译。
------华软网友回复------
楼主好好检查下吧,经过在 asa8中 尝试
insert [login]( [user] , "id" ) 
values( '张三', '0001')
;
=============
select *
from [login]
;
=============
可行,并没报错
如果login没带[]。则报你所列的毛病提醒      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。