Paradox当然可以定义字符,用A类型,就可以定义长度了。 long integer就4个字节,当然不用定义长度了。呵呵,没想到你也这么晚。
chechy师父,偶今天一晚上的代码,总是不行 系统说:type mismatch in exprition偶的代码: 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) from pass where flag=0'); 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.recordcount=1 then begin count1:=strtoint(data.qu_yhgl2.fieldbyname('id').asstring); newname:='管理员'+inttostr(count2); 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.fieldbyname('name').asstring:=edit1.text; data.qu_yhgl3.fieldbyname('passwd').asstring:=edit2.text; data.qu_yhgl3.fieldbyname('qx').asstring:='111111111'; data.qu_yhgl3.fieldbyname('alias').asstring:='newname'; data.qu_yhgl3.fieldbyname('issuper').asstring:='y'; data.qu_yhgl3.fieldbyname('flag').asstring:='1'; data.qu_yhgl3.execsql; edit1.text:='name'+inttostr(count1); edit2.text:='passwd'+inttostr(count1); end; if data.qu_yhgl1.recordcount=0 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 (field1,field2,field3,field4,field5,field6,field7) values (value1,value2,value3,value4,value5,value6,value7)'); data.qu_yhgl4.parambyname('field1').value:='count1'; data.qu_yhgl4.parambyname('field2').value:=edit1.text; data.qu_yhgl4.parambyname('field3').asstring:=edit2.text; data.qu_yhgl4.parambyname('field4').asstring:='111111111'; data.qu_yhgl4.parambyname('field5').asstring:='newname'; data.qu_yhgl4.parambyname('field6').asstring:='y'; data.qu_yhgl4.parambyname('field7').asstring:='1'; data.qu_yhgl4.execsql; edit1.text:='name'+inttostr(count2); edit2.text:='passwd'+inttostr(count2); end; end; end;偶的数据库: id name passwd qx alias issuper flag偶实在找不出虫了
To progame: Delphi写数据库很容易,当然简单的方法你不一定知道。 To Focus: 需要指出的是,Delphi向数据库提交数据都是用SQL,无论你用TTable、TQuery。无论你是否真的写了SQL。Delphi最终向数据库提交都是靠insert,update,delete三条SQL语句。
TO:progame(呵呵呵(傻笑中) ~~呵呵~~其实写一些存储过程可以更快的~~~
dim str as string str="insert into pass (name,passwd,qx.alinas,issuper,flag) values ('" _ & "count1','" & edit1.text & "','" & edit2.text & "','11111111','newname'" _ & ",'y','1')" ado.connection.execute str这就是VB的ADO做法了,仅供参考:)
结果不能定长度
long integer就4个字节,当然不用定义长度了。呵呵,没想到你也这么晚。
系统说:type mismatch in exprition偶的代码:
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) from pass where flag=0');
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.recordcount=1 then
begin
count1:=strtoint(data.qu_yhgl2.fieldbyname('id').asstring);
newname:='管理员'+inttostr(count2);
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.fieldbyname('name').asstring:=edit1.text;
data.qu_yhgl3.fieldbyname('passwd').asstring:=edit2.text;
data.qu_yhgl3.fieldbyname('qx').asstring:='111111111';
data.qu_yhgl3.fieldbyname('alias').asstring:='newname';
data.qu_yhgl3.fieldbyname('issuper').asstring:='y';
data.qu_yhgl3.fieldbyname('flag').asstring:='1';
data.qu_yhgl3.execsql;
edit1.text:='name'+inttostr(count1);
edit2.text:='passwd'+inttostr(count1);
end;
if data.qu_yhgl1.recordcount=0 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 (field1,field2,field3,field4,field5,field6,field7) values (value1,value2,value3,value4,value5,value6,value7)');
data.qu_yhgl4.parambyname('field1').value:='count1';
data.qu_yhgl4.parambyname('field2').value:=edit1.text;
data.qu_yhgl4.parambyname('field3').asstring:=edit2.text;
data.qu_yhgl4.parambyname('field4').asstring:='111111111';
data.qu_yhgl4.parambyname('field5').asstring:='newname';
data.qu_yhgl4.parambyname('field6').asstring:='y';
data.qu_yhgl4.parambyname('field7').asstring:='1';
data.qu_yhgl4.execsql;
edit1.text:='name'+inttostr(count2);
edit2.text:='passwd'+inttostr(count2);
end;
end;
end;偶的数据库:
id name passwd qx alias issuper flag偶实在找不出虫了
在写程序的时候,要多查在线帮助,它对你帮助更大。
begin
if data.qu_yhgl1.recordcount = 1 then
begin
count1 := strtoint(data.qu_yhgl2.fieldbyname('id').asstring);
newname := '管理员' + inttostr(count2);
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.recordcount = 0 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 (name,passwd,qx,alias,issuper,flag) values (:value1,:value2,:value3,:value4,:value5,:value6)');
data.qu_yhgl4.parambyname('value1').asstring := 'count1';
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('field7').asstring:='1';
data.qu_yhgl4.execsql;
edit1.text := 'name' + inttostr(count2);
edit2.text := 'passwd' + inttostr(count2);
end;
end;
//data.qu_yhgl4.parambyname('field7').asstring:='1';
另外系统仍然说
typs mismatch……
我上一句是注释,实际上,你观察一下,SQL语句只有6个参数,不是7个。所以我注释了一句。
另外,我觉得我的程序,每个参数对应的数据是错位的。
SQL中根本就没有field7参数
你为它赋值根本不就行
所以必须去掉这句
还有你仔细检查一下value
和insert 中的字段的结应关系
确实有错误
不知道是不是逻辑错误?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) from pass where flag=0');
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.recordcount=1 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.recordcount=0 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 (field1,field2,field3,field4,field5,field6,field7) values (value1,value2,value3,value4,value5,value6,value7)');
data.qu_yhgl4.parambyname('value1').asstring:='count1';
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;
data.qu_yhgl4.parambyname('value1').asstring:='count1';
count1应为count2,该了,仍type……
data.qu_yhgl4.params.clear;
xzfyes(dfsf), data.qu_yhgl4.params.clear;
怎么回事?愿闻详情
yxjjx(孤行者) ,count2是整形,由于数据库为空,或者
没有空闲的地方(flag=0),需要+1的
是不是这里错了
count2:=data.qu_yhgl2.recordcount+1;
两侧类型不对
你的设计思路确有问题
一定要简化设计
能不用SQL最好别用
因为SQL和EDIT与POST
比起来是较慢的
也不要乱猜
最好看看运行出错在什么地方
照提示应该是SQL出错
偶设断点都用不上
偶觉得思路没有问题
而且所有情况都考虑了
拜托多东东脑子啊!
data.qu_yhgl4.parambyname('value1').AsInteger:=count2;
我也要晕菜了
这么大的一篇代码
只实现一段不可思议的功能
...........
能不用SQL最好别用
..........这句话什么意思?
data.qu_yhgl4.parambyname('value1').asstring:='count1';
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';
因为sql是比较慢的
data.qu_yhgl4.SQL.add('insert into pass (field1,field2,field3,field4,field5,field6,field7) values (value1,value2,value3,value4,value5,value6,value7)');语句里面那有参数呀???????????
data.qu_yhgl4.SQL.add('insert into pass (name,passwd,qx,alias,issuper,flag) values (:value1,:value2,:value3,:value4,:value5,:value6)');
data.qu_yhgl4.parambyname('value1').asstring := 'count1';
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('field7').asstring:='1';
SQL比较慢?
我在VB中直接使用ADO的Connection或command执行SQL语句是最快的
其速度和在查询分析器中执行是一样的,只是多了传输语句的时间罢了
搞不懂Delphi:(
Delphi写数据库很容易,当然简单的方法你不一定知道。
To Focus:
需要指出的是,Delphi向数据库提交数据都是用SQL,无论你用TTable、TQuery。无论你是否真的写了SQL。Delphi最终向数据库提交都是靠insert,update,delete三条SQL语句。
str="insert into pass (name,passwd,qx.alinas,issuper,flag) values ('" _
& "count1','" & edit1.text & "','" & edit2.text & "','11111111','newname'" _
& ",'y','1')"
ado.connection.execute str这就是VB的ADO做法了,仅供参考:)
小批的数据速度不相上下
但大批的绝对是SQL
比edit&post&next慢
主要可能是没有缓冲的缘故
id name passwd qx alias issuper flag
你不觉得VB的字符串处理很笨拙吗?
To Focus
如果你有兴趣用SQL MONITOR跟踪,你会知道,即使使用Post语句,Delphi也是用SQL语句对数据库进行提交。
老牛用的是PARADOX
不支持存储过程和高级SQL
name
passwd
qx:权限字符串
alias:treeview上的text
issuper:超级用户
flag:纪录可用标志偶现在的代码:
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) from pass where flag=0');
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.recordcount=1 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.recordcount=0 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;
看看是不是呀~~呵呵~~老牛!!字段的类型都是什么的??String??
if data.qu_yhgl1.recordcount = 1 then
begin
count1 := strtoint(data.qu_yhgl2.fieldbyname('id').asstring);
newname := '管理员' + inttostr(count2);
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.recordcount = 0 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('field7').asstring:='1';
data.qu_yhgl4.execsql;
edit1.text := 'name' + inttostr(count2);
edit2.text := 'passwd' + inttostr(count2);
end;
那样的话也快呀,如果是多个操作可以这样写,是一样的:
str="insert ......"
str=str & " update ....."
str=str & " delete ....."
.......一次性执行:execute str这样速度还是很快,不会去多次建立连接和Open