怎样实现从数据表中查询,并把符合条件的某一值符给我自己定义的全局变量,(附代码)(50分)

  • 主题发起人 主题发起人 loutian
  • 开始时间 开始时间
不行他提示:list index out of bounds(1)
 
参数你有没有改过?
 
StoredProc1.ParamByName('参数名').as类型
 
我想是应该StoredProcName这个参数出错吧。
你将你选 中的存贮过程名后面的“;1”给删除,然后参数序号从1开始,试试吧。
 
yk_wry谢谢你一直关注我的问题,我按你的办法在DELPHI中把STOREPROCNAME属性后的;1
去掉了可程序执行时提示list index out of bounds(1)
 
如果程序改写成StoredProc1.ParamByName('参数名').as类型,提示错误为不存在“参数名”
 
你的参数名前面有没有加“@"?StoredProc控件的参数名是带@符号的。
 
加了不行,我现在的出错信息改变了我的原代码如下
with dm2.query3 do
begin
close;
sql.clear;
sql.add('select * from 用户表1');
sql.add('where 用户名=:usename');
sql.add('and 密码=:password');
parambyname('usename').Asstring:=edit1.text;
parambyname('password').AsString:=edit2.Text;
prepare;
open;

end;
if dm2.query3.recordcount>0 then
begin
user_type:=dm2.query3.fieldbyname('用户类型').asstring;
name:=dm2.query3.fieldbyname('用户名').asstring;
with dm2.StoredProc1 do
begin
Params[1].asstring:=name;
Params[2].asstring:=user_type;
Params[3].asstring:='111';
prepare;
execproc;
end;
showmessage('登录成功!');
end
else showmessage('登录失败,请重新登录!');
end;
end.
我用分步运行得知,运行到execproc时系统出错,提示为
project project1.exe raised exception class EDBEngine Error with message 'General SQL error'
[microsoft][odbc sqldriver][sqlserver]将截断字符或二进制数据
[microsoft][odbc sqldriver][sqlserver]语句已终止
我看不太明白错误提示,能帮我解释一下吗
 
你在sql 2000的查询分析器中运行该存储过程试试?
把你程序中的三个参数值传给他,看看能不能执行?
看你上面的代码应该没有问题,可能是存储过程的问题或
参数类型的问题!
 
我已经试了存储过程,可以的没问题
 

Params[3].asstring:='111';该参数对应的field type是不是整数
用cast or convert转换成整数
try!
 
我三个都设定为char型
 
你试一试,下面的办法,一定可以
if dm2.query1.recordcount>0 then
begin
user_type:=dm2.Query1.FieldDefs.Items[1].Name;
name:=dm2.Query1.FieldDefs.Items[2].Name;
end;
 
asstring正确
 
是不是不支持中文参数名或者字段名???
再说利用存储过程,在调用参数时好像应该是
parambyname('@password').Value :=MyValue;//注意是不是要有“@”这个符号?
 
我想问一下,你连数据库的时候是不是通过DSN(ODBC即SQL SERVER方式)来连的?如果是,那
你换成MSSQL方式连试试
 
支持中文参数,Params[1].asstring:=name;是教材中的写法,而且我在其它程序中也可以
实现
 
换成MSSQL方式连,怎么做,我不会,你能讲一下,步骤吗,谢了
 
首先打开DATABASE DESKTOP 然后打开别名管理器,新建一个别名,在数据库类型选项选中
MSSQL,再输入SERVER NAME,DATABASE NAME USER NAME。
 

Similar threads

后退
顶部