当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 如题 ......
 ·sql里面字段相减问题    »显示摘要«
    摘要: 我在sql语句里面要返回同一条记录两个字段的差,但发现如果其中一个字段值为null的话,就返回null,请问有什么办法判断如果为null,就赋0,这样我就可以相减了! 谢谢! ......


如何用程序实现在一个表中加入记录,并使它的id自动加1

表是用access建的,主要字段如下:  
                                  pid               xh           sc           ss         kj  
                                lp01             m188         45           63         16  
  想加入的是                               m199         55           26         10  
  并使第二条记录的pid为lp02,以后每加一条纪录,pid都+1,即为lp02,lp03,lp04...

NO.1   作者: zleeway

把该字段的类型设为uniqueidentifier

NO.2   作者: IwantFlay

1.   在数据库中把  
                    该字段设为自动增加  
  2.   在增加时先得到pid的值     select   pid   from   table   ordry   by   pid  
        得到返回的记录集的最后一个值.    
        再取出返回值的后两位,将它转传数值型并加一.再转回成字符型,  
        前面加lp拼成   lp02(即新的pid值)  
 

NO.3   作者: Maxwell

如果你不是需要有个lp的前缀的话,可以使用自动编号类型,每次插入一条新记录时都会自动增加。  
  你的这个要求似乎很难实现,可以用自动编号的值加上前缀组合出来你需要的值。

NO.4   作者: Knight_yin

在数据库设计的时候,将id这个字段设为标示字段,并自动加一,这样你用不着对这个字段进行更改操作,这个字段由数据库来自动维护.

NO.5   作者: dawnming

你可以使用自动编号  
  如果不用自动编号,那就在每增加一条时,找出表中最大的id加1,try

NO.6   作者: Maxwell

取出最后一个编号可以用  
  select   max(pid)   from   table

NO.7   作者: firetoucher

 
  1.直接用自增长字段,然后查询时用  
  select   ml   +   ml  
   
  2.用recordcount判断,自己计算出值  
   
  3.保存一个变量或者记录,存储当前的id增长值。

NO.8   作者: stonbing1980

我的用的是paradox数据库  
  请问怎么把ID设置为标示字段,让它自动加1  
  谢谢

NO.9   作者: watercsdn

一、表结构  
   
  1、表TK结构:  
  N1:string;   ->名称  
  N2:string;->内容  
  t11:string:->类型  
  tk表存有记录30000条。  
   
  2、表f-leixin结构:  
  F1:string;->标识名  
  leixin:string:->类型  
  YTI:integer;->记录数  
  LX表存有不同“类型”的记录200条。  
   
  3、我用ADO连接ACCESS数据库。  
   
   
  二:要实现的目的。  
  我想把TK表里符合f_leixin表类型的记录全部查询出来,   并将查询结果进行计数,   然后将值存入  
  f_leixin表的YT字段。  
  三:   我自己的编程  
  我主要是用加循环遍历的方式,用一条SQL语句,先进行查询统计、替换,然后循环f_leixin表,  
  这样查询的字段值就会根据随着LX表的指针移动进行变动,就实现了上述要求。    
  代码如下:  
  while   not   adotable2.eof   do   begin  
                lx1:=adotable2.fieldbyname(leixin).AsString;  
                lx1:=trim(lx1);  
                adoquery2.Close;  
                adoquery2.SQL.Clear;  
                adoquery2.sql.add(select   count(*)   as   lnfen2   from   tk   where   t11   like     %+lx1+%     group   by   t11);  
                adoquery2.Open;  
                lnfen2:=adoquery2.fieldbyname(lnfen2).asinteger;  
                adotable2.Edit;  
                adotable2.fieldbyname(yti).asinteger:=lnfen2;  
                adotable2.Next;  
                end;  
                end;  
  四:问题???]  
  用我自己的代码很慢,很慢。在网上别人告诉我这样可以:  
   
  begin  
  adotable2.Open;  
  adotable2.edit;  
  adoquery2.Close;  
  adoquery2.SQL.Clear;  
  adoquery2.sql.Add(update     f_leixin   set   yti=(select   count(*)   from   tk   where     f_leixin.leixin=tk.t11   ));  
  ADOQUery2.ExecSQL;  
      adoquery2.sql.clear;  
      adoquery2.sql.add(select   *   from   f_leixin);  
      adoquery2.open;  
  END;  
  但是执行不了好像ACCESS数据库不支持此SQL语句。  
   
  请高手帮我想个办法,我搞了一夜啊。!!!!!  
   
     
     
  来自:xzh2000,   时间:2003-4-30   8:36:00,   ID:1816056    
  终于搞清楚你要做什么啦,  
  其实问题时将表结构的创建语法及少许测试数据贴出来大家会更乐意帮你测试  
   
  按常规猜,你的TK.tt1与f_leixin.leixin内容是一样的。  
   
  update   f_leixin    
    set   yti   =   (select   count(*)   from   tk   group   by   tt1  
  where   f_leixin.leixin=tk.tt1)  
   
  update     f_leixin    
      set   yti=(select   count(*)   from   tk   where     tk.t11   =   f_leixin.leixin   )  
   
  因为是ACCESS,测试性能的方法很麻烦。  
   
     
     
  来自:20082008,   时间:2003-4-30   8:47:00,   ID:1816097   |   编辑    
  用哪一句都不行呀??  
   
  我在ACCESS里调试:  
  提示不能在查询数据里进行更新。  
   
  原因或者是主建冲突,  
  或者是锁定冲突;  
  或者是有效性冲突;  
  但是我的TK表里有ID,F-LIXIN表里我把ID删除了也不行啊。???  
   
  你帮我吧。  
     
     
  来自:xzh2000,   时间:2003-4-30   8:51:00,   ID:1816113    
  那可能ACCESS就不支持这种操作,  
  用SQL吧。  
     
     
  来自:20082008,   时间:2003-4-30   8:54:00,   ID:1816129   |   编辑    
  可是我的后台数据库用的是ACCESS数据库啊。我不想转呀  
   
  你帮帮UP以下对了怎么给你分呀。  
   
  好像ACCESS数据结果统计出来了就是不知替换的问题???  
  你帮帮我吧  
   
  我很急的???  
     
     
  来自:卜泰男,   时间:2003-4-30   9:02:00,   ID:1816172    
  UP!  
     
     
  来自:20082008,   时间:2003-4-30   9:07:00,   ID:1816213   |   编辑    
  有一个网友告诉我这样好像可以:  
  select   a.*,(select   count(*)   from   tk   where   a.leixin=tk.t11)   as   c   from   f_leixin   a  
   
  但是在在某些方面F—LIXIN表新增了一个字段C,它把所有的统计结果放在C里面不能放在指定字段YTI里面呀????  
     
     
  来自:trf,   时间:2003-4-30   11:00:00,   ID:1816834    
  Update   语句应该这样写:  
  update     f_leixin,tk   set   yti=(select   count(tk.*)   from   tk   where     f_leixin.leixin=tk.t11)    
     
     
  来自:20082008,   时间:2003-4-30   11:06:00,   ID:1816857   |   编辑    
  我用的是ACCESS数据库  
   
  update     f_leixin,tk   set   yti=select   count(tk.*)   from   tk   where     f_leixin.leixin=tk.t11  
   
  运行不了呀。  
     
     
  来自:trf,   时间:2003-4-30   11:48:00,   ID:1817133    
  对不起,写错了,应该:  
  update     f_leixin,tk   set   f_leixin.yti=(select   count(tk.*)   from   tk   where     f_leixin.leixin=tk.t11)  
     
     
  来自:20082008,   时间:2003-4-30   11:58:00,   ID:1817168   |   编辑    
  你再帮我试一下在ACCSSE里不能运行提示:  
  select   count(tk.*)   from   tk     where     f_leixin.leixin=tk.t11有错误啊  
     
     
  来自:trf,   时间:2003-4-30   12:03:00,   ID:1817195    
  试一下  
  update     f_leixin,tk   set   f_leixin.yti=(select   count(tk.t11)   from   tk   where     f_leixin.leixin=tk.t11)  
     
     
  来自:20082008,   时间:2003-4-30   12:08:00,   ID:1817220   |   编辑    
  还是不行啊是不是ACCEES不支持啊。  
   
  运行后提示不能更新查询结果呀???  
  大哥你帮我UP以下吧求你了。  
     
     
  来自:trf,   时间:2003-4-30   12:36:00,   ID:1817331    
  对不起,应该这样,先创建一个表T1,存放满足下面条件记录:  
          select   tk.t11,count(*)   as   A   from   tk,f_leixin   on   tk.t11=f_leixin.leixin  
                  group   by   tk.t11  
  然后Update语句:  
      update     f_leixin,T1   set   f_leixin.yti=T1.A   where   f_leixin.leixin=T1.t11  
   
     
     
  来自:20082008,   时间:2003-4-30   13:05:00,   ID:1817424   |   编辑    
  第一句有问题执行不了  
     
     
 


    摘要: form上有若干个image控件,表示若干台设备。要在两个控件间画线,表示为设备添加连接。希望的效果是:用户单击一个控件,拖动鼠标,此时就有一条线段跟着鼠标而移动,两个端点分别是那个控件的中心位置和鼠标的当前位置(这部分本人已经实现)。当放开鼠标后,如果当前的鼠标位置在另一个控件上,则在这两个控件之间画线;如果当前的位置只是在form上,则什么都不做,原来的那条线也消失。现在的问题是,当我......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE