问下各位大哥们,adodataset的这些操作哪儿有问题?总报错.(100分)

  • 主题发起人 主题发起人 cameroanthony
  • 开始时间 开始时间
C

cameroanthony

Unregistered / Unconfirmed
GUEST, unregistred user!
我想检查文本编辑框里面的字符,如果与数据库里面某字段的值相同,就在另一个文本编辑框里面显示出这条记录的另一个字段的值,比如:
数据库表名number:
姓名 年龄
张三 18岁
李四 19岁

edit1.text:='张三'//如果我在这个编辑框里输入张三,那么
edit2.text:='18岁'//这个编辑框里就自动显示18岁.

附代码:
var
Adodataset1:TAdoDataset;
name:string;
age:string;
begin
AdoDataSet1:=TAdoDataset.Create(self);
adoDataset1.Connection:=ADOConnection1;
adodataset1.CommandType:=cmdtext;
Adodataset1.CommandText:='select * from number where 姓名=:name';
adodataset1.close;
Adodataset1.Parameters.Clear;
Adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].name:='name';
adodataset1.Parameters[0].DataType:=ftstring;
Adodataset1.Parameters[0].Direction:=pdinput;
adodataset1.Parameters[0].Value:=edit1.text;
adodataset1.active:=true;
if if adodataset1.Recordset.RecordCount=1 then form1.edit2.text:=ADOtable1.FieldValues['年龄']

调试的时候提示:不正常的定义参数对象,提供了不一致或不完整的信息

我之前用table1链接的是另外一张表admin,现在操作的这张表是number,我新建了一个Table2专门操作这张表也不行,一样报错
问题就是这样
大哥们帮帮我啊
 
var
Adodataset1:TAdoDataset;
name:string;
age:string;
begin
AdoDataSet1:=TAdoDataset.Create(self);
adoDataset1.Connection:=ADOConnection1;
adodataset1.CommandType:=cmdtext;
Adodataset1.CommandText:='select * from number where 姓名=:name';
Adodataset1.Prepared :=True;
adodataset1.Parameters.ParamByName('mkwdm').Value:=edit1.text;
adodataset1.open;
if if adodataset1.Recordset.RecordCount=1 then form1.edit2.text:=ADOtable1.FieldValues['年龄']
 
把commandText中的:name加上‘’,应该就可以了
 
china_bill
谢谢,我试试你的代码
我刚才重新写了一下,重建了adotable2,adosource2,adoconnection2,
代码
var
adodataset2:TADODataset;
hm:string;
hz:string;

begin
AdoDataSet2:=TAdoDataset.Create(self);
adoDataset2.Connection:=ADOConn;
adodataset2.CommandType:=cmdtext;
Adodataset2.CommandText:='select * from number where 姓名=:name';
adodataset2.close;
Adodataset2.Parameters.Clear;
Adodataset2.Parameters.AddParameter;
adodataset2.Parameters[0].name:='name';
adodataset2.Parameters[0].DataType:=ftstring;
Adodataset2.Parameters[0].Direction:=pdinput;
ADODataset2.Parameters[0].Value:=form1.edit1.Text;
ADODataSet2.active:=true;//始终就是这里的时候出差
if adodataset2.Recordset.RecordCount=1 then
form1.Edit2.Text:=ADOTable2.FieldValues['年龄'];
然后再利用adotable2去操作,这时就报错:FROM字句语法错误

我发现,adoTabel2无法激活,把active选项选true时也报同样的错误,但是ADOtable1却可以ACTIVE,我把ADOTABLE1和ADOCONNNETCION1,ADOSOUCER的ACTIVE和CONNECTION都关闭了再设置ADOTABLE2却故障依然,这又是怎么回事啊?

谢谢你啊
 
conlin解决问题的方法真是精彩、新颖!佩服!佩服!
不过,恐怕cameroanthony不会接收你的方法。
[:D]
 
china_bill
我试了下你的代码,还是报错啊
 
顶起来,难道没人知道吗????
 
我已经检查出来了

var
adodataset2:TADODataset;
hm:string;
mz:string;
begin
AdoDataSet2:=TAdoDataset.Create(self);
adoDataset2.Connection:=ADOConn;
adodataset2.CommandType:=cmdtext;
Adodataset2.CommandText:='select * from what where 姓名=:hm';
adodataset2.close;
Adodataset2.Parameters.Clear;
Adodataset2.Parameters.AddParameter;
adodataset2.Parameters[0].name:='hm';
adodataset2.Parameters[0].DataType:=ftstring;
Adodataset2.Parameters[0].Direction:=pdinput;
adodataset2.Parameters[0].Value:=edit2.text;
{Adodataset2.Parameters.AddParameter;
adodataset2.Parameters[1].name:='mz';
adodataset2.Parameters[1].DataType:=ftstring;
Adodataset2.Parameters[1].Direction:=pdinput;
adodataset2.Parameters[1].Value:=edit3.text;}
adodataset2.Active:=true;
if adodataset2.Recordset.RecordCount=1 then
form1.edit3.text:=ADODataset2.FieldValues['年龄'];
end;

算了,靠别人还是不如靠自己.
 
话不能这样说,
别人虽然不一定能帮你解决问题,但至少扩展了你的思路
便于你更快找出问题所在呢
 
我还是很感谢回帖的,不过那么看的和回的比起来真是..唉
 
你的解决办法是错误的
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部