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

解决方案 »

  1.   

    把该字段的类型设为uniqueidentifier
      

  2.   


                   pid       xh      sc     ss    kj
                   lp01      m188    45     63    16
    想加入的是               m199    55     26    10
    用adoquery,如何加入记录,能说具体点吗?谢谢!
      

  3.   

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

  4.   

    to IwantFlay(她说我是一个小孩!)
     我数据库不是太懂,能否说得更清楚点? 我的表中的pid还有lq01,lj01的。
      

  5.   

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

  6.   

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

  7.   

    如果你在一个表中有多个pid 的前缀,这个问题还真不好解决,可以考虑另外建一个表保存,每种前缀当前的最大值或者下一个值,然后需要添加时从另外一个表中读取需要的值,在添加完成之后再修改另外一个表中的值。
    另外一个表的结构可以是
    前缀 值
    两个字段,前缀字段保存lq,lj,lp 之类的,值保存最后一个值或者下一个值。
      

  8.   


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

  9.   

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

  10.   

    在要加入记录时,可以确定对哪个pid进行操作,pid是个文本类型,比如,我现在想加入的是lp02.
        select * from lpxn where pid like ''lp%'';
      

  11.   

    用程序加入除pid这个字段记录的代码已经完成,可pid如何加呢?大家帮帮忙吧.如果不加前缀的话,就无法区分;如果分开建表,表的数目就太多了,挺麻烦的
      

  12.   

    一、表结构1、表TK结构:
    N1:string; ->名称
    N2:string;->内容
    t11:string:->类型
    tk表存有记录30000条。2、表f-leixin结构:
    F1:string;->标识名
    leixin:string:->类型(有200个不同类型)
    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 | 编辑 
    第一句有问题执行不了