Delphi没疯,是你疯了。
改一下:
parambyname('@username').value:=edit1.text;
parambyname('@passwd').value:=edit2.text;
Open;
if recordcount=1 then
showmessage('ok');
改一下:
parambyname('@username').value:=edit1.text;
parambyname('@passwd').value:=edit2.text;
Open;
if recordcount=1 then
showmessage('ok');
解决方案 »
- 【打包工具分享】InnoSetup5.4增加对被打包的程序文件进行签名
- 如何做一下比较完整的查询体系,可以任意的查询出某一个人或某些人,我用的是sql库
- 人民币求助:虚拟仪表的实现源码
- idhttp登录网页的问题
- 模拟按键的问题!
- fastreport这个问题困扰了我一年多,我要发狂了!!!!!!
- 欺名盗世的delphi,吾极其恼怒中。自称方便的操作dbf文件,用tquery的sql语句或batchmove建立的dbf文件,用foxpro都打不开。
- TreeView控件中怎样选中某个节点?
- 判断是左击还是右击
- 急需高手指点
- 谁有专门输IP的EDIT控件?
- 请问用edit控件能输入数字到数据库吗?怎样输呢?
人家不饱错了
改为一点也不理会
你按按钮毫无反应
recordcount属性只有在Active为True的时候才有作用,所以第一次出
cannot perform this operation on a close dataset
而execproc只能在Active为False的时候才能执行,所以第二次出
cannot perform this operation on an open dataset你的存储过程应该调用Open方法,而不是ExecProc方法。
能否置active为true?
recordcount算不算返回了结果?
我不是给你了修改方法吗?
active设置于true,还是照样
with storedproc1 do
begin
parambyname('@username').value:=edit1.text;
parambyname('@passwd').value:=edit2.text;
open;
if recordcount=1 then
button1.caption:='ok'
else
showmessage('no');偶输入的明明就是正确的密码
非要保错
showmessage('no')
似乎你的声誉不是很好。你的问题也不怎么难。
我就是那个再三劝诫你不要用TADOStoreProc的人。用TADODataSet可以灵活
处理你的问题,而且不会那么麻烦。 with ADODataSet1 do
begin
if Active then Close;
CommandText:='Exec login :UserName,:PassWd';
Parameters.ParamByName('UserName'):=Edit1.text;
Parameters.ParamByName('PassWd'):=Edit2.text;
Open;
if RecordCount>0 then
begin
...
end;
end;
问题是太简单了
反而让人找不出毛病
偶的声誉没问题
起码在delphi
@username varchar(20),
@passwd varchar(20)
as
select *
from pass
where username = @username and passwd = @passwd
GO
偶试试
不是,我没有和你打交道啦。我看见源代码交换的贴子上的留言,所以
有疑问。:-)
另外,你有没有试着用TAdoDataSet解决呢?我觉得TAdoStorePorc
不够灵活,没有用过。我现在试试它,稍后给你一些建议,也许能帮上你
的忙。
--------------------------------------------------------
CREATE TABLE [dbo].[Users] (
[UserName] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[PassWd] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
-------------------------------------------------------------
CREATE PROCEDURE login
@UserName varchar(10),
@PassWd varchar(10)
as
select * from users where userName=@UserName and PassWd=@PassWd
GO
------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOStoredProc1.Parameters.ParamByName('@UserName').Value:='Adai';
ADOStoredProc1.Parameters.ParamByName('@PassWd').Value:='adai22';
ADOStoredProc1.Active:=True;
if ADOStoredProc1.RecordCount>0 then
showMessage('Login!');
end;
后来改成QUERY就好了,不知为什么。。
而且原来用TABLE也是好用的,突然不好用。。不明白
delphi没有反应
用if then
show('y')
else
show('n')
测试,show ('n')