比如,
1日   有300笔数据
函数自动生成1--300的数字
2日   有500笔数据
那么自动生成 1--500的数字
也就是每天有多少笔数据,这个函数自动生成多少个函数。必须从1开始。
我使用的是ACCESS数据库,
这个函数想利用DELPHI代码实现。谢谢指教。

解决方案 »

  1.   

    access数据库的字段不是有自动编号类型吗
      

  2.   

    但是Access自动编号的记录删除后就会报错
      

  3.   

    直接在SQL语句中Select当天的记录,选择MAX的编号再+1不就是新编号了。
      

  4.   

    设置两个变量
    A一个记录datetostr(日期)
    B一个记录序号
    再令字段等于=A+B
      

  5.   

    (*******************************************************************************
    *   函数名:GetAutoCode
    *
    *   函数说明:    根据数据库中的表内容,取得一个比原来记录最大的编号+1的值
    *
    *   参数说明:
    *   ADOConnection1  :对数据进行查询的数据库连接
    *   TableName       :需要读取的表的名称
    *   Column          :需要读取的字段的名称
    *   CurrDate        :编号左边的固定值,取的是服务器的当前日期
    *   CodeLen         :编号长度
    *******************************************************************************)
    function GetAutoCode(ADOConnection1 : TADOConnection; Table_str : string; Column_str : string ; CurrDate_str : String; CodeLen : integer) : string;
    var
        tmpNum : integer;
        MaxBillNo, tmpMax : String;
        tmp_format : array[0..20] of char;
        ADOdatasettmp : TADODataSet;
    begin
        ADOdatasettmp := TADODataSet.Create(nil);
        ADOdatasettmp.Connection := ADOConnection1;
        FillChar(tmp_format, CodeLen, '0');
        ADOdatasettmp.CommandText := 'select max(' + Column_str + ') as MaxBillNO from ' + Table_str + ' where ' + Column_str + ' like''' + CurrDate_str + '%''' ;
        ADOdatasettmp.Open;
        MaxBillNo := ADOdatasettmp.FieldByName('MaxBillNO').AsString;
        if MaxBillNo<>'' then
        begin
            tmpMax := copy(MaxBillNo,9,length(MaxBillNo) - 8);
            tmpNum := StrToInt(tmpMax) + 1;
            tmpMax := InttoStr(tmpNum);
        end
        else
            tmpMax := '1';
        tmpMax := copy(tmp_format,1,CodeLen - 8 - length(tmpMax)) + tmpMax;
        Result := CurrDate_str + tmpMax;
    end;
      

  6.   

    IF object_id('tempdb..#aa') IS not NULL begin drop table #aa endSELECT IDENTITY (int, 1, 1) AS a, field1,field2 INTO #aa
    FROM table endifselect * from #aa
      

  7.   

    IF object_id('tempdb..#aa') IS not NULL begin drop table #aa endSELECT IDENTITY (int, 1, 1) AS a, area, bmbm, kind, idno, cur_date, custom, goods, 
          amount, tax
    INTO #aa
    FROM wu_sa_oil_invoice
    endif
    select * from #aa
      

  8.   

    第二个是从我做的项目中copy过来的