有時後會遇到像是需要流水號編號,
可是又會刪去,並新增
這時後真的很頭大,
是有在網路上看到不錯的範例,但是因為我的選單是做成下拉式的
所以需按照新增的順序往下排,就不採用了
不過怕未來需用上,在此做個筆記一下
建立資料表:
create table T_User(F_ID int identity(1,1) not null,F_Name varchar(20) not null)
插入數據:
insert into T_User(F_Name) values('我是第一名') Select SCOPE_IDENTITY()
存儲過程:
CREATE PROCEDURE [dbo].[sp_User](@F_Name int) AS
begin tran Insertinto_T_User
Insert into dbo.T_User(F_Name) values(@F_Name)
Select SCOPE_IDENTITY()
詳細內容可轉往→http://www.cnblogs.com/yank/archive/2008/04/16/1156713.html
另外自已寫的
很簡單:(但是老 實說不太滿意
★需找到目前流水號最大值
★取得目前所有的流水序號表
★如果有相同的流水號,就+1處理
★找到空缺(代表中間有被刪除
★一直到最大值都沒有空缺,則將最大值+1處理,為目前的流水號
SqlCommand cmd = new SqlCommand("SELECT [id] From [tb] ORDER BY [id] DESC", Connection);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
if (dt != null)
{
int maxid = Int32.Parse(dt.Rows[0][0].ToString());
int curid = 0;
bool bhave = false;
//尋找有無間值(起始值為1,故從2開始)
for (int i = 2; i < maxid; i++)
{
//檢查此序號已有使用
bhave = false;
foreach (DataRow dataRow in dt.Rows)
{
if (dataRow[0].ToString().Equals(i.ToString()))
{
bhave = true;
break;
}
}
if (!bhave)
{
curid = i;
break;
}
}
//無找到,加在最後面
if (curid == 0)
{
curid = maxid + 1;
}
tagid = curid.ToString();
沒有留言:
張貼留言