分享

如何吧string类型转化为integer……

 不解堂 2012-03-29
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

偶实在找不出虫了
#6楼 得分:0回复于:2001-10-03 08:45:09
错的一塌糊涂。我真服了你了。
在写程序的时候,要多查在线帮助,它对你帮助更大。
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;
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#7楼 得分:0回复于:2001-10-03 10:36:30
chechy师父,这一句,是什么意思
//data.qu_yhgl4.parambyname( 'field7 ').asstring:= '1 ';
另外系统仍然说
typs   mismatch……
#8楼 得分:0回复于:2001-10-03 10:40:23
我的程序只是一个示例,实际上需要改写的,呵呵希望你能明白程序。
我上一句是注释,实际上,你观察一下,SQL语句只有6个参数,不是7个。所以我注释了一句。
另外,我觉得我的程序,每个参数对应的数据是错位的。
  • Focus用户头像
  • Focus
  • (母鸡工程)
  • 等 级:
#9楼 得分:0回复于:2001-10-03 10:42:37
你的错误实在太CHILDISH
SQL中根本就没有field7参数
你为它赋值根本不就行
所以必须去掉这句
还有你仔细检查一下value
和insert   中的字段的结应关系
确实有错误
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#10楼 得分:0回复于:2001-10-03 10:48:49
偶注意了一下,但仍然不得通过,
不知道是不是逻辑错误?

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;

  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#11楼 得分:0回复于:2001-10-03 10:51:15
这写错了
data.qu_yhgl4.parambyname( 'value1 ').asstring:= 'count1 ';
count1应为count2,该了,仍type……
#12楼 得分:0回复于:2001-10-03 10:51:57
insert的SQL语句压根就是错误的。你的PASS表难道字段名叫field1,field2,field3,field4,field5,field6,field7
#13楼 得分:0回复于:2001-10-03 10:52:48
是时候清一下了。
data.qu_yhgl4.params.clear;
  • yxjjx用户头像
  • yxjjx
  • (孤行者)
  • 等 级:
#14楼 得分:0回复于:2001-10-03 10:53:43
count2:=data.qu_yhgl2.fieldbyname( 'id ').asinteger;直接这样就可以了
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#15楼 得分:0回复于:2001-10-03 11:03:57
chechy,偶又错了
xzfyes(dfsf), data.qu_yhgl4.params.clear;
怎么回事?愿闻详情
yxjjx(孤行者) ,count2是整形,由于数据库为空,或者
没有空闲的地方(flag=0),需要+1的
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#16楼 得分:0回复于:2001-10-03 11:15:34
chechy,偶要跳楼了,type……
是不是这里错了
count2:=data.qu_yhgl2.recordcount+1;
两侧类型不对
                           
  • Focus用户头像
  • Focus
  • (母鸡工程)
  • 等 级:
#17楼 得分:0回复于:2001-10-03 11:18:13
count2:=data.qu_yhgl2.recordcount+1没错
你的设计思路确有问题
一定要简化设计
能不用SQL最好别用
因为SQL和EDIT与POST
比起来是较慢的
也不要乱猜
最好看看运行出错在什么地方
照提示应该是SQL出错
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#18楼 得分:0回复于:2001-10-03 11:27:21
老鱼,运行时,报错说type   mismatch   in   exprition
偶设断点都用不上
偶觉得思路没有问题
而且所有情况都考虑了
#19楼 得分:0回复于:2001-10-03 11:28:32
我也要晕倒了。
拜托多东东脑子啊!
data.qu_yhgl4.parambyname( 'value1 ').AsInteger:=count2;
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#20楼 得分:0回复于:2001-10-03 11:30:01
呵呵~~~我来了~~`
#21楼 得分:0回复于:2001-10-03 11:31:13
好了,好了,你来慢慢解释吧。
在这样下去,我要倒了。
  • Focus用户头像
  • Focus
  • (母鸡工程)
  • 等 级:
#22楼 得分:0回复于:2001-10-03 11:31:45
同意CHECHY
我也要晕菜了
这么大的一篇代码
只实现一段不可思议的功能
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#23楼 得分:0回复于:2001-10-03 11:37:12
别,各位师父,
偶跳楼也得等到成功了
老千
这是按照昨天老p教的所写的
逻辑有误吗
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#24楼 得分:0回复于:2001-10-03 11:39:57
我来解释一下吧!!呵呵~~

就是首先从数据库中查询没有使用或者是已经删除了的用户ID号码!
如果有~则新增加的用户就使用这个ID号码~
如果没有~则新增加的用户的ID号码就取数据库总数+1~~
然后就是对于密码的一些操作~~
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#25楼 得分:0回复于:2001-10-03 11:40:19
老牛~~你是不是这个意思呀???????
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#26楼 得分:0回复于:2001-10-03 11:40:55
yeah~~~
#27楼 得分:0回复于:2001-10-03 11:41:57
那你帮他写一下insert的SQL语句吧。很容易的。
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#28楼 得分:0回复于:2001-10-03 11:43:44
写什么INsert语句????作什么用的??
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#29楼 得分:0回复于:2001-10-03 11:44:24
Focus(老鱼) (2001-10-3   11:18:13)     得0分  
...........
能不用SQL最好别用
..........

这句话什么意思?
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#30楼 得分:0回复于:2001-10-03 11:44:52
Delphi执行SQL语句怎么这么复杂啊?
#31楼 得分:0回复于:2001-10-03 11:45:19
就是这段代码,错的一塌糊涂。我就想不通,为什么学东西不能活学活用,非要死板硬套?

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 ';
  • Focus用户头像
  • Focus
  • (母鸡工程)
  • 等 级:
#32楼 得分:0回复于:2001-10-03 11:47:01
to   progame(呵呵呵(傻笑中。。。) 
因为sql是比较慢的
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#33楼 得分:0回复于:2001-10-03 11:47:23
呵呵~~
data.qu_yhgl4.SQL.add( 'insert   into   pass   (field1,field2,field3,field4,field5,field6,field7)   values   (value1,value2,value3,value4,value5,value6,value7) ');

语句里面那有参数呀???????????
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#34楼 得分:0回复于:2001-10-03 11:48:48
偶以前几乎没有过运行期间的sql
#35楼 得分:0回复于:2001-10-03 11:49:20
是啊,我这么写的。但是我不知道表结构,和程序逻辑,胡写。好像参数有些对不牢。
      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 ';
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#36楼 得分:0回复于:2001-10-03 11:49:41
Focus(老鱼):
SQL比较慢?
我在VB中直接使用ADO的Connection或command执行SQL语句是最快的
其速度和在查询分析器中执行是一样的,只是多了传输语句的时间罢了
搞不懂Delphi:(
#37楼 得分:0回复于:2001-10-03 11:51:34
To   progame:
Delphi写数据库很容易,当然简单的方法你不一定知道。
To   Focus:
需要指出的是,Delphi向数据库提交数据都是用SQL,无论你用TTable、TQuery。无论你是否真的写了SQL。Delphi最终向数据库提交都是靠insert,update,delete三条SQL语句。
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#38楼 得分:0回复于:2001-10-03 11:52:30
TO:progame(呵呵呵(傻笑中。。。) ~~

呵呵~~其实写一些存储过程可以更快的~~~
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#39楼 得分:0回复于:2001-10-03 11:52:42
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做法了,仅供参考:)
  • Focus用户头像
  • Focus
  • (母鸡工程)
  • 等 级:
#40楼 得分:0回复于:2001-10-03 11:53:06
我以前曾试过SQL的速度
小批的数据速度不相上下
但大批的绝对是SQL
比edit&post&next慢
主要可能是没有缓冲的缘故
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#41楼 得分:0回复于:2001-10-03 11:53:35
偶的数据库表是这样的
id         name         passwd         qx         alias         issuper           flag

  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#42楼 得分:0回复于:2001-10-03 11:53:59
TO:chechy(chechy) ~~我也不了解他现在的表是什么样子~~呵呵~~已经被修改的面目全非了~~

TO:老牛!!麻烦给我们你的那个Pass表的结构以及字段的解释~~~~
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#43楼 得分:0回复于:2001-10-03 11:55:13
千两:对于一条insert来说,用存储过程意义不大的,而且传递参数麻烦

我用存储过程只是在大数据量操作时才用的


  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#44楼 得分:0回复于:2001-10-03 11:56:45
牛虻:你现在到底错在什么地方了?
#45楼 得分:0回复于:2001-10-03 11:57:21
To   progame
你不觉得VB的字符串处理很笨拙吗?
To   Focus
如果你有兴趣用SQL   MONITOR跟踪,你会知道,即使使用Post语句,Delphi也是用SQL语句对数据库进行提交。
  • Focus用户头像
  • Focus
  • (母鸡工程)
  • 等 级:
#46楼 得分:0回复于:2001-10-03 11:57:49
需要声明的是
老牛用的是PARADOX
不支持存储过程和高级SQL
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#47楼 得分:0回复于:2001-10-03 11:57:56
id     纪录数
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;

  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#48楼 得分:0回复于:2001-10-03 11:58:58
data.qu_yhgl4.SQL.add( 'insert   into   pass   (id,name,passwd,qx,alias,issuper,flag)values   ( '+IntToStr(Count1)+ ', '+#39+Edit1.Text+#39+ ', '+#39+Edit2.Text+#39+ ', ' ' '111111111 ' ' ', ' ' 'newname ' ' ', ' ' ' 'y ' ' ', ' ' '1 ' ' ') ');


看看是不是呀~~呵呵~~

老牛!!字段的类型都是什么的??String??
#49楼 得分:0回复于:2001-10-03 11:59:11
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   (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;
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#50楼 得分:0回复于:2001-10-03 11:59:17
Focus(老鱼):大批的指的是什么?一次更改影响多个记录吗?
那样的话也快呀,如果是多个操作可以这样写,是一样的:
str= "insert   ...... "
str=str   &   "   update   ..... "
str=str   &   "   delete   ..... "
.......

一次性执行:execute   str

这样速度还是很快,不会去多次建立连接和Open
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#51楼 得分:0回复于:2001-10-03 12:00:15
呵呵~~~我的意思就是适当的时候写存储过程的~~

大家好!!呵呵~~不要在跑题了!!:)
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#52楼 得分:0回复于:2001-10-03 12:01:01
chechy(chechy):你说的字符串操作指哪此方面?
  • Focus用户头像
  • Focus
  • (母鸡工程)
  • 等 级:
#53楼 得分:0回复于:2001-10-03 12:01:28
啊呀
从未用过SQLMONITOR
我一直以为这是监视大型SQL数据数据库的执行情况
说起来
好多的DELPHI自带工具我都没仔细研究过
看来得好好看一下
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#54楼 得分:0回复于:2001-10-03 12:01:31
没事,大家探讨一下嘛,这样才能提高呀
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#55楼 得分:0回复于:2001-10-03 12:02:56
先吃饭去了,等下再过来
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#56楼 得分:0回复于:2001-10-03 12:03:00
数据库字段都是string的
报错:type   mismatch   in   expition
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#57楼 得分:0回复于:2001-10-03 12:04:36
老牛!!你现在有两个SQL语句~~
是第一个报错~~还是第二个报错呢??
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#58楼 得分:0回复于:2001-10-03 12:07:50
系统连偶指的断点都不让偶测试,无法知道哪个sql出了问题
#59楼 得分:0回复于:2001-10-03 12:08:29
To   Focus,你需要好好研究一下,悟透Delphi对数据库的操作很有好处。
To   progame,VB写SQL语句够烦琐的。实际上,我写Delphi程序,很少写SQL,我让Delphi替我生成,我为什么要写?
To   tikkypeng,我刚用Delphi编程的时候用存储过程,现在不用了。
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#60楼 得分:0回复于:2001-10-03 12:09:33
你的断电在那里设置的??
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#61楼 得分:0回复于:2001-10-03 12:13:17
chechy(chechy):VB写SQL语句不烦琐的
如果不用存储过程在大型MIS中是无法想像的
牛虻:你能不能把id设为长整型啊
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#62楼 得分:0回复于:2001-10-03 12:13:25
偶好象侦察出来
if   data.qu_yhgl1.recordcount   =   0   then
if   data.qu_yhgl1.recordcount   =   1   then

这两个的recordcount都是inaccessble   value
好像都没得到执行
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#63楼 得分:0回复于:2001-10-03 12:13:36
TO:chechy(chechy)~~呵呵~~其实我一直没有用过存储过程~~看了别人的一个程序以后~~觉得不错~~以后准备用一些~~~因为现在有一些很大的操作全都是SQL执行~~
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#64楼 得分:0回复于:2001-10-03 12:16:49
是不是数据库为空时,没有min(id)?或不允许用min(id)
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#65楼 得分:0回复于:2001-10-03 12:17:33
存储过程不仅仅是速度上的极大提高,而且对于维护会带来很大的方便

因为这就是一个封装的对象,并提供了相关的接口

还有视图和触发器,都是一个个对象,反正我是这样理解的:)
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#66楼 得分:0回复于:2001-10-03 12:18:00
牛虻:可以用,但返回的结果集为空
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#67楼 得分:0回复于:2001-10-03 12:22:02
见鬼了,
究竟问题在哪里呢?
bug没了,
逻辑没错误,
寝食难安……
  • Focus用户头像
  • Focus
  • (母鸡工程)
  • 等 级:
#68楼 得分:0回复于:2001-10-03 12:22:38
to:chechy(chechy) 
你的建议我虚心接受
不过有一点不同意见
DELPHI对数据库的操作是底层的东西
我觉得只要了解了如何使用好它包装了的东西就可以
不必非得打破砂底问到底
是吗?
如果非得打破
那不如用VC
一点浅见请不要见笑
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#69楼 得分:0回复于:2001-10-03 12:22:45
Bug没有了吗??????
  • say用户头像
  • say
  • (㊣為人㊣)
  • 等 级:
#70楼 得分:0回复于:2001-10-03 12:26:01
gz
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#71楼 得分:0回复于:2001-10-03 12:28:09
是不是id的问题?
偶的id是string
count1,2为integer
#72楼 得分:0回复于:2001-10-03 12:29:51
To   progame:存储过程有什么好的,实际上存储过程做的程序都能做。所以,我写MIS程序,最多就用5个存储过程(调用一些特殊操作)。
To   Focus:我没有教你看BDE的底层,没有意思。我的意思是,你需要理解为什么TQuery比TTable效率高?为什么我说Delphi向数据库提交数据都是用SQL?理解了这些,我想对提高你的水平很有好处。也许你误解了我的意思,或者我没有表达清楚。
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#73楼 得分:0回复于:2001-10-03 12:30:26
把id改成整数型
#74楼 得分:0回复于:2001-10-03 12:32:23
整型、字符型,我认为没有区别。
chris2019(牛虻---牛角挂书版),你用了我最后给你的程序吗?报什么错,在什么地方报错?会用SQL   Monitor吗?
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#75楼 得分:0回复于:2001-10-03 12:33:06
chechy(chechy):可以举一个例子,我现在进行结账,我只用存储过程来实现

而传递的参数只是所要结账的月份,如果日后来维护,我只需改动此存储过程

而且对于存储过程,它是启动了事务的,要么全部成功,要么全部不算

这就是存储过程的好处,反正我喜欢用,这对于模块化思想亦有好处
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#76楼 得分:0回复于:2001-10-03 12:34:13
偶在程序里已经做了转化,
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#77楼 得分:0回复于:2001-10-03 12:35:47
不争了,我要写自己的程序了:)
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#78楼 得分:0回复于:2001-10-03 12:36:24
老牛~~给一个最新的代码部分~~然后说出错误在那里~~
#79楼 得分:0回复于:2001-10-03 12:38:05
我不用储存过程的理由是:1、移植性差;2、调试性差。
你说的好处,我不否认。
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#80楼 得分:0回复于:2001-10-03 12:39:16
存储过程的缺点确实比较讨厌的~~

不过号称SQLServer2000支持调试~~~~
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#81楼 得分:0回复于:2001-10-03 12:39:24
数据库编程其实主要是数据库的事情而不是程序的事情
所以在其它方面VB比Delphi弱,因为对于底层的东西操作起来困难
但在数据库方面,绝对不比Delphi差
其实现在大型数据库本身就是一个开发平台
  • tikkypeng用户头像
  • tikkypeng
  • (千两狂死郎之天衣有缝)
  • 等 级:
#82楼 得分:0回复于:2001-10-03 12:39:41
唉~~走了~~吃饭了~~一会在来~~:)
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#83楼 得分:0回复于:2001-10-03 12:40:55
千两:
我会在查询分析器中执行相关存储过程中的语句
然后再写入存储过程,而相关参数则通过声明变量来实现
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#84楼 得分:0回复于:2001-10-03 12:41:58
chechy   师父,已经用了,仍然type……
偶觉得应该一步一步分析
首先确定逻辑有没有问题
偶的treeview
    超级用户
        管理员
        ……

上面的代码是   新建   按钮下的响应事件
即   当选中   超级用户   click时,
新建一个管理员
新建时,新建的用户写入数据库
……
#85楼 得分:0回复于:2001-10-03 12:42:09
还有面向对象特性差(VB.NET除外)。所以不能设计出抽象模型。
没有抽象模型,代码的重用性,扩展性无从谈起。
当然,很多写Delphi程序的人也不用面向对象特性。
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#86楼 得分:0回复于:2001-10-03 12:44:32
最新代码:
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;

if   data.qu_yhgl1.recordcount   =   0   then
if   data.qu_yhgl1.recordcount   =   1   then

这两个的recordcount都是inaccessble   value
好像都没得到执行

拜托了


  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#87楼 得分:0回复于:2001-10-03 12:47:23
chechy(chechy):
其实又有多少人去理解了面向对象呢

VB中照样有控件,照样有DLL,照样有Class,只是不支持继承

如果你具备了这种思想,你照样能够做到面向对象
将功能划分,同样能够进行封装

不过C++的面向对象更加强大,我喜欢C++的思想和它的语法
但我不否定VB,对于开发MIS,VB有它的优势

重要的还是你的思想!
#88楼 得分:0回复于:2001-10-03 12:49:01
问题还是在SQL语句上。
data.qu_yhgl4.SQL.add( 'insert   into   pass   (id,name,passwd,qx,alias,issuper,flag)   values   (:value1,:value2,:value3,:value4,:value5,:value6,:value7) ');
#89楼 得分:0回复于:2001-10-03 12:50:06
呵呵,我对继承根本没兴趣。实际上,抽象模型最重要的多态方面的考虑,而不是继承。
参考一下Nicrosoft的文章。
#90楼 得分:0回复于:2001-10-03 12:50:52
data.qu_yhgl4.SQL.add( 'insert   into   pass   (id,name,passwd,qx,alias,issuper,flag)   values   (:value1,:value2,:value3,:value4,:value5,:value6,:value7) ');
                           
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#91楼 得分:0回复于:2001-10-03 12:54:44
偶刚才是粘贴你的回复运行的,报错
  data.qu_yhgl4.SQL.add( 'insert   into   pass   (id,name,passwd,qx,alias,issuper,flag)   values   (:value1,:value2,:value3,:value4,:value5,:value6,:value7) ');
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#92楼 得分:0回复于:2001-10-03 12:57:03
哇~~,小昂师父也来了,

#93楼 得分:0回复于:2001-10-03 12:57:26
报什么错误?
#94楼 得分:0回复于:2001-10-03 12:57:43
报什么错,
如果只是sql语句错误,只要不执行open操作,程序是可以运行起来的
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#95楼 得分:0回复于:2001-10-03 12:58:21
呵呵,看过了,但我可以在VB中通过
dim   plane   as   Object
plane.fly()

这样来实现对于接口相同但对象不同的调用的
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#96楼 得分:0回复于:2001-10-03 12:58:26
偶吧   用户管理   模块全部重写了,因此成败就在这些代码了
  • progame用户头像
  • progame
  • (www.progame.org)
  • 等 级:
#97楼 得分:0回复于:2001-10-03 12:59:06
只是在你们看起来不太规范而已:)
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#98楼 得分:0回复于:2001-10-03 13:00:32

type   mismatch   in   exprission
  • chris2019用户头像
  • chris2019
  • (牛虻---百年孤独)
  • 等 级:
#99楼 得分:0回复于:2001-10-03 13:03:23
if   data.qu_yhgl1.recordcount   =   0   then
if   data.qu_yhgl1.recordcount   =   1   then

跟踪这两个的recordcount,结果显示都是inaccessble   value
好像都没得到执行
#100楼 得分:0回复于:2001-10-03 13:05:26
;

                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;

    flag到底是什么类型的,如果是字符类型,
;

                data.qu_yhgl1.close;
                data.qu_yhgl1.sql.clear;
                data.qu_yhgl1.SQL.add( 'select   min(id)   from   pass   where   flag= '+#39+ '0 '+#39+ ') ';
                data.qu_yhgl1.open;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多