hur.cn - 华软网

 热门搜索

【菜鸟请教】为什么会出现访问冲突???

  作者:未知    来源:网络    更新时间:2018/1/1
我正在编个程序,针对用户登陆界面的确定按钮的代码,想法是用户名,密码验证通过链接数据库,对user表的数据查询从而确定用户登陆身份

代码

String name
String pass
String u_name
string u_pass

SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Connectstring='DSN=database;UID=dba;PWD=sql',CursorScroll='Dynamic'"
CONNECT using sqlca;


if ddlb_name.Text="" or sle_pass.Text="" then
   messagebox("注意","请正确填写用户名/密码!")
else
   name=ddlb_name.Text
   pass=sle_pass.Text
 
 end if
 
   select user.user_pass
//就是这里,提示我有错误:database   c0038:sqlstate=3700[sybase][odbc driver][adaptive server anywhere]synax error or access violation:near'user'in...user_pass from [user] where user.user_...
   into :u_pass
   from user
   where user.user_name=:name
   using sqlca;


 
 
if sqlca.sqlcode =100 then
messagebox("提示","用户名不存在")
elseif sqlca.sqlcode <0 then
messagebox("数据库错误",sqlca.sqlerrtext)
elseif pass<>u_pass then
messagebox("提示","密码错误")
else
messagebox("提示","正确")
end if



说明:数据库应该连接正常,我测试过,语法错误还是冲突呢???就是在家的单机版编程,访问chongtu???请您执教啊,急急急小弟先谢谢了^_^
------华软网友回答------
where user.user_name=:name
有问题,是你的语法问题!
这么写:
where user.user_name=name

------华软网友回复------
先谢谢楼上,但是不行啊。。。问题还是出现
------华软网友回复------
仔细检查一下你在SQL语句中的字段和表中字段是否匹配了?
------华软网友回复------
呵呵,是个语法错误:select user.user_pass中把数据表user.去掉就好了^_^


另外请教诸位大虾啊;有2个问题出现:

1 关于模糊查询:我想在datawindow控件的查询数据过滤操作时用模糊sql语句:where xxx like “%xx%”
  程序如下:
  if ddnum = "所属类别" then
dnum = "chu_sort"
aa = dnum + "like '%" + znum1 + "%'"
elseif ddnum = "材料名称" then
dnum = "stock_name"
aa = dnum + "like '%" + znum1 + "%'"
elseif ddnum = "审批人" then
dnum = "chu_exam"
aa = dnum + "LIKE '%" + znum1 + "%'"
elseif ddnum = "供应商" then
dnum = "chu_supply"
aa = dnum + "like '%" + znum1 + "%'"
end if

         dw_1.SetTransObject(SQLCA)
        dw_1.setfilter(aa)
        dw_1.filter()
       dw_1.Retrieve();
可是每次提交执行,系统就提示:expression is not valid(不合法),难道like 关键字不能使吗???请问哪位有好方法实现这个简单模糊查询,让数据窗口对象能过虑出所需数据


Q2--  一个自己写的傻大胆的程序,目的想用语句填写出数据库中的两列记录值:1)通过入库单,出库单记录的货品数目实现统计出产品表中每一种产品的现有库存  2)在通过对库存上下限的对比,得到是否超限的警告。。。这可难坏我了,这个程序就是执行不了,我不知是不是一个数据窗口空件只能使用一个事务对象啊??请各位大哥大姐一定不吝赐教啊。。。急

    transaction dbtrans
dbtrans = create transaction

dw_1.SetTransObject(SQLCA)
//dw_1.SetTransObject(dbtrans)
integer runum,chu_num,cx_sum,downtop,overtop,cx
cx_sum = 0

string cai_namett




declare cai_name_cur cursor for 
select cai_name 
  from  cailiao ;
  
OPEN cai_name_cur;
FETCH cai_name_cur INTO :cai_namett;
Do While dbtrans.SQLCode <> 100
   
   

  
  //取道同样材料名的入库记录中数量的和
   declare rnum_cur cursor for 
     select ruku_num 
     from  ruku 
     where stock_name = :cai_namett;
  
OPEN rnum_cur;
   FETCH rnum_cur INTO :runum;
Do While SQLCA.SQLCode <> 100
    cx_sum=cx_sum + runum 
       FETCH rnum_cur INTO :runum;
   loop
close rnum_cur;

  

//出库同样材料名的记录,并做差
  declare cnum_cur cursor for 
  select chu_num 
    from  chuku 
 where stock_name = :cai_namett;
  
  open cnum_cur;
  
  FETCH cnum_cur INTO :chu_num;
  Do While SQLCA.SQLCode <> 100
       cx_sum=cx_sum - chu_num  
       FETCH cnum_cur INTO :chu_num;
  loop
  close cnum_cur;
  
  
  //更新填入当前库存
  update cailiao
    set cai_num = :cx_sum
 where cailiao.cai_name = :cai_namett
 using sqlca;
  
  
  //更新填入超限
  select cai_downtop,cai_overtop 
   into :downtop , :overtop
   from cailiao
   where cailiao.cai_name = :cai_namett;//取出限值
  
  if cx_sum >= overtop then//判断超限情况
 cx = cx_sum - overtop
 
 update cailiao
     set cai_chaoxian = :cx
  where cailiao.cai_name =  :cai_namett
  using dbtrans;//???设置字体颜色啊

  elseif cx_sum <= downtop then
     cx = cx_sum - downtop
 
  update cailiao
      set cai_chaoxian = :cx
   where cailiao.cai_name = :cai_namett
using dbtrans;

  else
  cx = 0 //cx_sum - downtop
  update cailiao
     set cai_chaoxian = :cx
  where cailiao.cai_name = :cai_namett
  using dbtrans;
  end if
  
  FETCH cai_name_cur INTO :cai_namett;
Loop
Close cai_name_cur;
dw_1.Retrieve();      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。