请各位大人先看一下我的源码:
procedure TBEditForm.SKButtonClick(Sender: TObject);
var
name:string;
begin
name:=SingerADOQuery.fieldbyname('歌星名称').asstring;
If Application.MessageBox('此操作将导致数据丢失,是否继续','提示',MB_YESNO+MB_ICONINFORMATION)=6 then
begin
with SingerADOQuery do
begin
close;
sql.Clear;
sql.Add('delete from 歌手信息 where='+#39+name+#39);
execsql;
end;
end;
end;
小弟是想实现你点击一下表,在点击一个button控件,实现数据的删除,可问题是在
sql.Add('delete from 歌手信息 where='+#39+name+#39)不好使,我是自己
声明了一个字符串变量name,然后用它记录我所点击的一行数据的一个列值,所以猜测,
name并未赋上值,可不知道是为什么?请各位大人解答,耽误您时间了。
另外,我知道可以用 ADOQuery.delete作删除操作,我就是对这个问题奇怪。
procedure TBEditForm.SKButtonClick(Sender: TObject);
var
name:string;
begin
name:=SingerADOQuery.fieldbyname('歌星名称').asstring;
If Application.MessageBox('此操作将导致数据丢失,是否继续','提示',MB_YESNO+MB_ICONINFORMATION)=6 then
begin
with SingerADOQuery do
begin
close;
sql.Clear;
sql.Add('delete from 歌手信息 where='+#39+name+#39);
execsql;
end;
end;
end;
小弟是想实现你点击一下表,在点击一个button控件,实现数据的删除,可问题是在
sql.Add('delete from 歌手信息 where='+#39+name+#39)不好使,我是自己
声明了一个字符串变量name,然后用它记录我所点击的一行数据的一个列值,所以猜测,
name并未赋上值,可不知道是为什么?请各位大人解答,耽误您时间了。
另外,我知道可以用 ADOQuery.delete作删除操作,我就是对这个问题奇怪。
sql.Add('delete from 歌手信息 where='+#39+name+#39);
where 中那个字段等于name?
所以出问题,没赋值?
sql.Add('delete from 歌手信息 where 歌手名='+#39+name+#39);
procedure TBEditForm.SKButtonClick(Sender: TObject);
var
name:string;
begin
name:=SingerADOQuery.fieldbyname('歌星名称').asstring;
If Application.MessageBox('此操作将导致数据丢失,是否继续','提示',MB_YESNO+MB_ICONINFORMATION)=6 then
begin
with SingerADOQuery do
begin
close;
sql.Clear;
sql.Add('delete from 歌手信息 where 歌手名称='+#39+name+#39);
execsql;
end;
end;
end;
但问题是依旧的。
procedure TBEditForm.SKButtonClick(Sender: TObject);
var
name:string;
begin
name:=SingerADOQuery.fieldbyname('歌星名称').asstring;
If Application.MessageBox('此操作将导致数据丢失,是否继续','提示',MB_YESNO+MB_ICONINFORMATION)=6 then
begin
with SingerADOQuery do
begin
close;
sql.Clear;
sql.Add('delete from [歌手信息] where [歌手名称]='+#39+name+#39);
execsql;
end;
end;
end;
procedure TBEditForm.SKButtonClick(Sender: TObject);
var
name:string;
begin
name:=SingerADOQuery.fieldbyname('歌星名称').asstring;
If Application.MessageBox('此操作将导致数据丢失,是否继续','提示',MB_YESNO+MB_ICONINFORMATION)=6 then
begin
with SingerADOQuery do
begin
close;
sql.text:='delete from [歌手信息] where [歌手名称]='+QuotedStr(name);
execsql;
end;
end;
end;
有些备注类型不能用'='来比较
这句最好放在adoquery的onclick事件或什么事件中,name用一个全局变量
的一点是,你执行了删除操作,运行后不报错,但数据就是删除不掉,就是sql.Add('delete from [歌手信息] where [歌手名称]='+#39+name+#39); 这就话似乎没起作用,而我把他改成查询的语句结果也是一样的
zxf_feng同志说的我还没有用,adoquery好像没有onclick事件。不过大家都辛苦了,今晚要是没有答案就结贴。。
那么99.99%的原因是数据表中没有符合这个条件的数据
也许你的[歌手名称]字段,用了char类型 ,有很多空格...
歌手名称 verchar(20) not null 他是个这样形的。。另外,这个表里有整形数据,我用相同的语句查询整形数据就可以。
sql.text:='delete from [歌手信息] where [歌手名称]=''刘德华'''; 如果这也删除不了,没撒了,相貌问题...
If Application.MessageBox('此操作将导致数据丢失,是否继续','提示',MB_YESNO+MB_ICONINFORMATION)=6 then
begin
with SingerADOQuery do
begin
close;
sql.Clear;
sql.Add('delete from 歌手信息 where 歌手名称='+#39+name+#39);
到底是 歌手名称 还是 歌星名称 ????
个事件时就错误了。更奇怪的是,我有个增加数据的窗体,里面你输入变量被付给edit控件的text属性,而用它写查询语句却好使.
结帖了,有兴趣的仁兄可以讨论一下