这段代码是用来在dbgrid中增加记录的,现在一点击增加按钮,数据库中以前的记录都显示出来了,怎么才能解决这个问题阿?请指教!
ADOTable1.Active:=True;
ADOTable1.Append;
//ADOTable1.Edit;
Button49.Click ;
dbgrid1.Fields[0].AsString:='02';
dbgrid1.Fields[7].AsString:=DBComboBox2.Text;
dbgrid1.Fields[8].AsString:=DBComboBox4.Text;
dbgrid1.Fields[9].AsString:=DBComboBox3.Text;
ADOTable1.Active:=True;
ADOTable1.Append;
//ADOTable1.Edit;
Button49.Click ;
dbgrid1.Fields[0].AsString:='02';
dbgrid1.Fields[7].AsString:=DBComboBox2.Text;
dbgrid1.Fields[8].AsString:=DBComboBox4.Text;
dbgrid1.Fields[9].AsString:=DBComboBox3.Text;
解决方案 »
- 方法的定義
- 再谈声明delphi调用惯例
- 寻找前天心或天思开发工程师!
- 多线程的问题 大家帮我看看错在哪里?
- for i=1 to 100 do 每次i的值都加1,怎么让它的步和为2,也就是让i每次增加2
- 怎样使dbgrid的长度随着数据的大小而自动变化
- 如何建立索引?
- 谁有delphi6的注册码,可行就有高分,to me:[email protected]
- 多次点击dblookupcombobox,下拉框所出现的内容与listfield字段实际的内容有出入
- 在线急等:自己开发的软件,已经注册了版权,可以直接以个人身份销售了吗?还需要哪些手续呢?
- 关于mdi和child的问题,请进..........
- 请教SQL查询语句
假如你想显示字段ID的值为'02'的记录
那么
ADOTable1.Filtered=false;
ADOTable1.Filter:='ID=''02''';
ADOTable1.Filtered:=true;
ADOTable1.Active:=True;
ADOTable1.Filtered:=false;
ADOTable1.Filter:='id=''02''';
ADOTable1.Filtered:=true;ADOTable1.Append;
//ADOTable1.Edit;
Button49.Click ;
dbgrid1.Fields[0].AsString:='02';
dbgrid1.Fields[7].AsString:=DBComboBox2.Text;
dbgrid1.Fields[8].AsString:=DBComboBox4.Text;
dbgrid1.Fields[9].AsString:=DBComboBox3.Text;
但还是都显示出来了,帮帮忙啊,很急!谢谢了。
想要它不显示已有记录就让
ADOTable1.Filter:='ID=''';
ADOTable1.Filter:='id=''02''';
ADOTable1.Filtered:=true;
ADOTable1.Active:=True;
ADOTable1.Append;
//ADOTable1.Edit;
Button49.Click ;
dbgrid1.Fields[0].AsString:='02';
dbgrid1.Fields[7].AsString:=DBComboBox2.Text;
dbgrid1.Fields[8].AsString:=DBComboBox4.Text;
dbgrid1.Fields[9].AsString:=DBComboBox3.Text
这样写的,还是都显示出来了。
ADOTable1.Active:=True;
ADOTable1.Filtered:=false;
ADOTable1.Filter:='id=0';
ADOTable1.Filtered:=true;
中,确认你的表中对应字段名是否为“id”
还有格式 filter:='id=0'
我这里用的ADOTable1.Filter:='id=0';可以实现, 因为数据库里id号没有为 0 的,所以就显示的空记录。
ADOTable1.Filter:='id=0';
ADOTable1.Filtered:=true;
ADOTable1.Active:=True;
//ADOTable1.Append;
ADOTable1.Edit;
Button49.Click ;
dbgrid1.Fields[0].AsString:='02';
dbgrid1.Fields[7].AsString:=DBComboBox2.Text;
dbgrid1.Fields[8].AsString:=DBComboBox4.Text;
dbgrid1.Fields[9].AsString:=DBComboBox3.Text;
这样是给滤掉了,可是我需要连续增加好几条记录,再点击增加按钮时,刚才录入的那个条记录也没有了,而且发现已经保存进了数据库,怎么回事啊?
ADOTable1.Filter:='id=0';
ADOTable1.Filtered:=true;
ADOTable1.Active:=True;
放在FormCreate中也不行,怎么回事啊?
定义一个全局变量 n,初值为0,在“增加”按钮里这样写:
if n=0 then
将id 值付给n;
ADOTable1.Filtered:=false;
ADOTable1.Filter:='id>=n';
ADOTable1.Filtered:=true;
把n换成数字可以,可是换成n之后报错:参数类型不正确,
调试时看到n=63,n是数字型的,i是自动编号,长整型。
ADOTable1.Last;
si:= ADOTable1.Fields[10].AsString;
n:=StrToInt(si);
ADOTable1.Filtered:=false;
ADOTable1.Filter:='i > n';
ADOTable1.Filtered:=true;
报参数类型不正确的错误,请指教!谢谢了!
ADOTable1.Filter:='i > n';可是这个n没有把63引过来,调试时仍然是n,咋回事啊?
试试!
n 可以定义成int64试试,或者不用n,直接 i>=StrToInt64(si)试一下。
另外还有一点,为什么我点击一下它就自动到库里去了,我又没有post,我不想让他直接到库里去,怎么办啊?
ApplyUpdates(0)时,才开始存入库中。
filter:='i>='+n;试试。
ADOTable1.Last;
si:= ADOTable1.Fields[10].AsString;
n:=StrToInt(si);
ADOTable1.Filtered:=false;
ADOTable1.Filter:='i>'+n;
ADOTable1.Filtered:=true;
//ADOTable1.Active:=True;
//ADOTable1.Append;
ADOTable1.Edit;
Button49.Click ;
dbgrid1.Fields[0].AsString:='02';
还是报incompatible string and integer的错误。
还有个问题请教一下,
ADOTable1.Active:=true;
ADOTable1.Edit;
ADOQuery14.Close;
ADOQuery14.SQL.Clear;
s:='select * from a02 where callsign='+''''+DBComboBox2.Text+'''' +'and voy='+''''+DBComboBox4.Text+'''' +'and port='+''''+DBComboBox3.Text+'''';
ADOQuery14.SQL.Add(s);
ADOQuery14.Open;
DataSource1.DataSet:=adoquery14;
// ADOQuery14.Active:=true;
ADOQuery14.Edit;
这是查询里面的代码,查询后,我一点击dbgrid,就报错:ADOQuery14:dataset not in edit or insert mode。我已经edit了阿?怎么回事,请指教!