大家帮我看看这段代码!谢谢

BlackWhiteforest 2004-10-14 06:29:37
string pass_word,usename
// Profile dbname
SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.Database = "dnname"
SQLCA.LogPass = "123"
SQLCA.ServerName = "P-X2O7S92KDMR56"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Async=1"
connect;
SELECT table.yhm,
table.mm
INTO :usename, :pass_word
FROM table
WHERE table.yhm=:sle_1.text;
if sle_1.text="" or sle_2.text="" then
messagebox(" 错误!","用户或密码不能为空!",exclamation!,ok!,2)
disconnect;
else
if usename=sle_1.text and pass_word=sle_2.text then
open(w_first_window)
close(parent);
else
messagebox(" 错误!","用户或密码错误,请重新输入!",exclamation!,ok!,2)

disconnect;
end if
end if

为什么系统老是告诉我:table 旁边有语法错误呢?
WHERE table.yhm=:sle_1.text; 这句话有什么错误,还请高人指点哦。。
...全文
187 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
handycyw 2004-10-17
  • 打赏
  • 举报
回复
有几个不好的缺点:
1、变量命名:string pass_word,usename ->string ls_username,ls_password
2、sle_1.text不要直接在sql语句中出现,-〉ls_username = trim(sle_1.text)
3、尽量不要在代码中直接使用sql语句,而是使用游标:
declare c_dl cursor for select ... from .. where .. = :..
open c_dl
..
close c_dl

直接使用sql语句的话,记得最后要commit;
  • 打赏
  • 举报
回复
这样应该行:
SELECT "table"."yhm",
"table.mm"
INTO :usename, :pass_word
FROM "table"
WHERE "table"."yhm"=:sle_1.text;
linwdm2002 2004-10-17
  • 打赏
  • 举报
回复
呵呵,该说的都说过了.
「已注销」 2004-10-16
  • 打赏
  • 举报
回复
表名不要用table,它是一个关键字啊!!!!
qlyscf 2004-10-16
  • 打赏
  • 举报
回复
表名不要用table,它是一个关键字啊!!!!
10975037 2004-10-15
  • 打赏
  • 举报
回复
先手动的连接,既是用那dbprofile , 在连接是在priview 选项卡中测试连接,成功后 ,copy 里面的代码,在粘到你的应用中。 之后加
connect;
if sqlca.sqlcode <> 0 then
messagebox('','连接数据库失败')
return
else
messagebox('','连接成功')
end if
试试看
cici_004 2004-10-15
  • 打赏
  • 举报
回复
是不是你的SQLCA.AutoCommit = False在connect后要将SQLCA.AutoCommit = true这样你的sql语句才能自动提交啊
lzheng2001 2004-10-15
  • 打赏
  • 举报
回复
究竟你的数据库名是dbname还是dnname 好好检查一下吧
BlackWhiteforest 2004-10-14
  • 打赏
  • 举报
回复
SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.Database = "dnname"
SQLCA.LogPass = "123"
SQLCA.ServerName = "P-X2O7S92KDMR56"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Async=1"
connect;
if sqlca.sqlcode <> 0 then
messagebox('','连接数据库失败')
return
else
messagebox('','连接成功')
end if

改了这个也不能用哦 为什么哦?
BlackWhiteforest 2004-10-14
  • 打赏
  • 举报
回复
我改过来了但是问题又出来了 怎么连接不上呢?我在SQL 2000里面建了数据库dbname (并且建了heibai的数据表)但是运行PB的时候就是不可以啊 连接不上啊 什么毛病呢?
我登陆里面的代码
string pass_word,usename
// Profile dbname
SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.Database = "dnname"
SQLCA.LogPass = "123"
SQLCA.ServerName = "P-X2O7S92KDMR56"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Async=1"
connect;
SELECT heibai.yhm,
heibai.mm
INTO :usename, :pass_word
FROM heibai
WHERE heibai.yhm=:sle_1.text;
if sle_1.text="" or sle_2.text="" then
messagebox(" 错误!","用户或密码不能为空!",exclamation!,ok!,2)
disconnect;
else
if usename=sle_1.text and pass_word=sle_2.text then
open(w_first_window)
close(parent);
else
messagebox(" 错误!","用户或密码错误,请重新输入!",exclamation!,ok!,2)

disconnect;
end if
end if
能运行 但是就是连接不上啊(我的意思是我运行的时候不好用啊 我做了一个“登陆”的按钮的时候)就是连接不上我的那个SQL 2000建立的那个数据库表的heibai那个表的yhm(用户名)和mm(密码)啊
wang131425 2004-10-14
  • 打赏
  • 举报
回复
狗鱼子也来看看!~
rabbitbug 2004-10-14
  • 打赏
  • 举报
回复
SELECT table.yhm,
table.mm
INTO :usename, :pass_word
FROM table
WHERE table.yhm=:sle_1.text;

你的'.',',',':'是不是用全角了?
把你的FROM table这一行后加一个空格试试
圣殿骑士18 2004-10-14
  • 打赏
  • 举报
回复
1.就楼上说的,table还是改个名字看看
2.不要直接在sql中使用sle_1.text,sle_1.text先赋值给一个变量,然后在sql中使用变量,试试看.
BlackWhiteforest 2004-10-14
  • 打赏
  • 举报
回复
database c0038:在关键字‘table’附近有语法错误。
有什么错误 还请帮忙哦
lzheng2001 2004-10-14
  • 打赏
  • 举报
回复
table 应该是关键字,你最好改一个有实际意义的名字! 如果硬要用table作为表名,则强行保存,不要理warning信息即可
圣殿骑士18 2004-10-14
  • 打赏
  • 举报
回复
有什么语法错误?贴上来.

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧