首先说明一下:
我用的数据库是sql-server 用adoquery,datasource,dbgrid控件我在Dbgrid中插入了列。写下如下代码。
第一个表(cost)可以正常显示:
str:='select * from cost';
condata.ADOQuery1.Close;
condata.adoquery1.Active:=true;
condata.adoquery1.SQL.Clear;
condata.adoquery1.SQL.Add(str);
condata.adoquery1.ExecSQL;
condata.adoquery1.Open;但是第二个表(ClassCost)却怎么也没办法显示了:
str:='select * from Classcost';
condata.ADOQuery1.Close;
condata.adoquery1.Active:=true;
condata.adoquery1.SQL.Clear;
condata.adoquery1.SQL.Add(str);
condata.adoquery1.ExecSQL;
condata.adoquery1.Open;
dbgrid中只显示了表中有多少行记录,但是却没有内容,格子里全是空的,无法修改任何内容,但是可以删除,删除的时候,数据库里对应的相应行也删除。
两个表的字段是一样的,只是有不同的用途。但是当我将Dbgrid中我插入的列都删除的时候,第二个表中的内容有可以正常显示了。 请高手指点。
我用的数据库是sql-server 用adoquery,datasource,dbgrid控件我在Dbgrid中插入了列。写下如下代码。
第一个表(cost)可以正常显示:
str:='select * from cost';
condata.ADOQuery1.Close;
condata.adoquery1.Active:=true;
condata.adoquery1.SQL.Clear;
condata.adoquery1.SQL.Add(str);
condata.adoquery1.ExecSQL;
condata.adoquery1.Open;但是第二个表(ClassCost)却怎么也没办法显示了:
str:='select * from Classcost';
condata.ADOQuery1.Close;
condata.adoquery1.Active:=true;
condata.adoquery1.SQL.Clear;
condata.adoquery1.SQL.Add(str);
condata.adoquery1.ExecSQL;
condata.adoquery1.Open;
dbgrid中只显示了表中有多少行记录,但是却没有内容,格子里全是空的,无法修改任何内容,但是可以删除,删除的时候,数据库里对应的相应行也删除。
两个表的字段是一样的,只是有不同的用途。但是当我将Dbgrid中我插入的列都删除的时候,第二个表中的内容有可以正常显示了。 请高手指点。
condata.adoquery1.ExecSQL;
condata.adoquery1.Open;
很多余么!你的代码写的太冗余了,精简点吧,还有阿,ExecSQL和Open的区别你要清楚,前者不返回数据集也就是仅仅执行而已,后者则返回也就是执行后返回最新数据。
自己改下吧。
str:='select * from cost';
condata.ADOQuery1.Close;
condata.adoquery1.SQL.Clear;
condata.adoquery1.SQL.Add(str);
condata.adoquery1.Open;查询二个表时:
str:='select * from Classcost';
condata.ADOQuery1.Close;
condata.adoquery1.SQL.Clear;
condata.adoquery1.SQL.Add(str);
condata.adoquery1.Open;
另外,建议你的代码这样写
str:='select * from cost';
condata.ADOQuery1.Close;
condata.adoquery1.SQL.Clear;
condata.adoquery1.SQL.Add(str);
condata.adoquery1.Open;第二个表(ClassCost)
str:='select * from Classcost';
condata.ADOQuery1.Close;
condata.adoquery1.SQL.Clear;
condata.adoquery1.SQL.Add(str);
condata.adoquery1.Open;