VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1822|回复: 8

求表中编码自动生成

[复制链接]

1

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2021-3-4 12:30:01 | 显示全部楼层 |阅读模式
我想将一表中的一个编号字段在新增记录时,自动生成,但不重复,怎么编写代码?请指教!
回复

使用道具 举报

0

主题

32

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2021-3-4 12:45:01 | 显示全部楼层
用VFP7.0以上的自增量字段。

如果是VFP7.0以下:

select max(字段1)+1 as MaxID into cursor t1 from 表名
insert into 表名 (字段1) values (t1.MaxID)
回复

使用道具 举报

1

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2021-3-4 13:45:01 | 显示全部楼层
能详细讲解一下代码的意思吗?谢谢
回复

使用道具 举报

0

主题

32

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2021-3-4 14:00:01 | 显示全部楼层
select max(字段1)+1 as MaxID into cursor t1 from 表名

取出最大编号然后+1存于临时表T1的MaxID字段中。


insert into 表名 (字段1) values (t1.MaxID)
select 表名
go bott
replace .... &&此处为你要写入的内容

在你的增加记录前,将最大编号+1的编号写入表中
回复

使用道具 举报

1

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2021-3-4 14:15:01 | 显示全部楼层
“select 表名
go bott
replace .... &&此处为你要写入的内容

在你的增加记录前,将最大编号+1的编号写入表中”
这段话还是不太明白,再详细讲解一下,另外你所说的语句是直接加在新增记录的控件按钮的"click"事件中吗?
还有一个问题,我想在一个多条件查询的表单中,将查询说得到的结果,直接在此表单中以表格的形式显示出来,同时还可以报表的形式打印或导出此查询的结果,应该怎样实现?万分感谢!
回复

使用道具 举报

0

主题

32

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2021-3-4 14:30:01 | 显示全部楼层
把以下代码放在你的增加按钮的Click事件中:

select max(编号)+1 as MaxID into cursor t1 from 表名 &&取出最大编号然后+1存于临时表T1的MaxID字段中。
Insert into 表名 (编号) values (t1.MaxID)
select 表名
go bott
replace .... &&此处为你要写入的内容
回复

使用道具 举报

0

主题

32

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2021-3-4 14:45:01 | 显示全部楼层
还有一个问题,我想在一个多条件查询的表单中,将查询说得到的结果,直接在此表单中以表格的形式显示出来,同时还可以报表的形式打印或导出此查询的结果,应该怎样实现?万分感谢!
-------------------------------------

用GRID控件:

查询按钮的Click事件:

thisform.grid1.recordsource=null
select ...into cursor t1 from ... &&这句是你的查询语句
thisform.grid1.recordsource='t1'
thisform.grid1.refresh
回复

使用道具 举报

1

主题

10

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2021-3-4 15:00:01 | 显示全部楼层
如果你的编号是没有序的可以使用随机涵数,如果是有序的可以在CLICK里写上
use 表名
go boot
bb=表名.编号

appe black
repl 表名.编号 with bb+1
...
这个比简单
如果按十三豆的程序我的理解如下,不对请指正
在CLICK里写下代码
select max(字段1)+1 as MaxID into cursor t1 from 表名
insert into 表名 (字段1) values (t1.MaxID) &&在表名的最后一条记录里插入一条新记录,这样可以省去APPE BLABK

select 表名
go bott&&指向最后一条记录也就是当才插入的那条记录
replace .... &&此处为你要写入的内容



回复

使用道具 举报

1

主题

19

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2021-3-4 16:45:01 | 显示全部楼层
最简单的办法:
    在表设计器里设“编号”字段的默认值:
                         如果字段为数值型,则默认值为RECNO()
                         如果字段为字符型,则默认值为allt(str(RECNO()))
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表