这样就可以了~~
if (data.qu_yhgl1.FieldByName('ID').asstring<>null) then
//修改处理if (data.qu_yhgl1.FieldByName('ID').AsString=null) then
//+1处理这个 or (data.qu_yhgl1.FieldByName('ID').AsString='') 不用了~~~~
if (data.qu_yhgl1.FieldByName('ID').asstring<>null) then
//修改处理if (data.qu_yhgl1.FieldByName('ID').AsString=null) then
//+1处理这个 or (data.qu_yhgl1.FieldByName('ID').AsString='') 不用了~~~~
老千,偶对null不了解
究竟null与recrdcount=0有何区别
而你的recrdcount=0不可用~~因为好像如果结果是Null的也算是一条返回记录的~也就是recrdcount=1而不是等于0~~~~
偶刚才被recorcount=0和null搅得乱了
尤其记录为空时,居然recordcount还是1
用null彻底判明了
现在问题又来到了
系统报错
is not avilid integer value代码:
procedure Tf_yhgl.Button1Click(Sender: TObject);
var
newnode:ttreenode;
begin
if treeview1.selected.text='超级用户' then
begin
newnode:=treeview1.items.addchild(treeview1.selected,newname);
newnode.imageindex:=0;
newnode.selectedindex:=0; data.qu_yhgl1.close;
data.qu_yhgl1.sql.clear;
data.qu_yhgl1.SQL.add('select min(id) as id from pass where flag='+#39+'0'+#39+'');
data.qu_yhgl1.open; data.qu_yhgl2.close;
data.qu_yhgl2.sql.clear;
data.qu_yhgl2.SQL.add('select * from pass');
data.qu_yhgl2.open; if (data.qu_yhgl1.FieldByName('ID').asstring<>null) then
begin
count1:=strtoint(data.qu_yhgl1.fieldbyname('id').asstring);
newname:='管理员'+inttostr(count1);
data.qu_yhgl3.close;
data.qu_yhgl3.sql.clear;
data.qu_yhgl3.SQL.add('update pass set name=:name, passwd=:passwd, qx=:qx, alias=:alias, issuper=:issuper, flag=:flag');
data.qu_yhgl3.parambyname('name').asstring:=edit1.text;
data.qu_yhgl3.parambyname('passwd').asstring:=edit2.text;
data.qu_yhgl3.parambyname('qx').asstring:='111111111';
data.qu_yhgl3.parambyname('alias').asstring:='newname';
data.qu_yhgl3.parambyname('issuper').asstring:='y';
data.qu_yhgl3.parambyname('flag').asstring:='1';
data.qu_yhgl3.execsql;
edit1.text:='name'+inttostr(count1);
edit2.text:='passwd'+inttostr(count1);
end;
if (data.qu_yhgl1.FieldByName('ID').AsString=null) then
begin
count2:=data.qu_yhgl2.recordcount+1;
newname:='管理员'+inttostr(count2);
data.qu_yhgl4.close;
data.qu_yhgl4.sql.clear;
data.qu_yhgl4.SQL.add('insert into pass (id,name,passwd,qx,alias,issuper,flag) values (:value1,:value2,:value3,:value4,:value5,:value6,:value7)');
data.qu_yhgl4.parambyname('value1').asinteger:=count2;
data.qu_yhgl4.parambyname('value2').asstring:=edit1.text;
data.qu_yhgl4.parambyname('value3').asstring:=edit2.text;
data.qu_yhgl4.parambyname('value4').asstring:='111111111';
data.qu_yhgl4.parambyname('value5').asstring:='newname';
data.qu_yhgl4.parambyname('value6').asstring:='y';
data.qu_yhgl4.parambyname('value7').asstring:='1';
data.qu_yhgl4.execsql;
edit1.text:='name'+inttostr(count2);
edit2.text:='passwd'+inttostr(count2);
end;
end;
end;
edit2.text:='passwd'+inttostr(count2);这里??????
只是新建时出错,跳步后,显示上述
偶估计是count
但偶吧他们删了,则显示在了execsql行上
id,name,passwd,qx,alias,issuper,flag几个字段的类型~~~
偶跟踪edit1,2
发现:edit1,2没有被负值,而
'name'+inttostr(count2);显示:inaccessable value
data.qu_yhgl2.close;
data.qu_yhgl2.sql.clear;
data.qu_yhgl2.SQL.add('select * from pass');
data.qu_yhgl2.open;
以及
count2:=data.qu_yhgl2.recordcount+1;数据库此是为空,select没有结果
定义为integer
没作其他处理
偶少看了: ''
估计是多写了
代码如上,老千一块找呀
如果那个数是Null~~就强制给他附值~~if Count2=null then Count2=1
count2:=data.qu_yhgl2.recordcount+1;
至少为1
可能就是因为data.qu_yhgl2.recordcount为Null~~~
if (data.qu_yhgl1.FieldByName('ID').AsString=null) then
begin
if data.qu_yhgl2.recordcount=null then
count2:=1
else
count2:=data.qu_yhgl2.recordcount+1;
在VB中是这样的isnull(xxxx)
而且使用这个函数搞定:
iif(isnull(xxxx),0,xxxx)
if data.qu_yhgl2.recordcount=null then //null换成零,
count2:=1
begin
if data.qu_yhgl2.recordcount=null then
count2:=1
else
count2:=data.qu_yhgl2.recordcount+1;
这么写以后那里报错呢???????
事实上,click一旦按下
就跳出红X的提示,跳步后,
再出现上述的
这个data.qu_yhgl2.recordcount怎么也不应该是null呀~~~
楼上有人说用tfiled,有喜吗
begin
count2:=1
end
else
count2:=data.qu_yhgl2.recordcount+1;
这句对吗?
data.qu_yhgl4.parambyname('value1').asinteger:=count2;
''is not avalid integer value
大概翻译一下
''不是正当的整形参数