ช่วยดูโค้ดให้หน่อยนะค่ะ การทำ Autorun Number ต้องทำไงอะค่ะ
Code (C#)
private string GetNewMemberId()
{
DBCMem = new MembershipCardSystem.BusinessLayer.DBClassMemberCard();
string currentId = DBCMem.getMemberID_MAX(lbTypeNo.Text).ToString();
string nextId = String.Format("{0:0}", 1) + lbTypeNo.Text + DateTime.Now.ToString("MMyy") + String.Format("{0:0000000}", 1);
if (currentId == null)
currentId = String.Format("{0:0}", 1) + lbTypeNo.Text + DateTime.Now.ToString("MMyy") + String.Format("{0:0000000}", 0);
long maxid = 0;
if (currentId.Substring(2, 4) == DateTime.Now.ToString("MMyy"))
{
try
{
maxid = Convert.ToInt32(currentId.Substring(6, 7));
}
catch { }
if (maxid < 9999999)
maxid++;
else
maxid = 1;
}
nextId = String.Format("{0:0}", 1) + lbTypeNo.Text + DateTime.Now.ToString("MMyy") + String.Format("{0:0000000}", maxid);
return nextId;
}
โค้ดนี้รันแล้วจะได้ผลลัพธ์แบบนี้ค่ะ
1109530000001
1109530000002
1109530000005
1209530000003
1309530000004
1309530000005
แต่ที่ต้องการคืออยากให้เลขชุดหลังเรียงกันอะค่ะ
1109530000001
1109530000002
1109530000003
1209530000004
1309530000005
1309530000006
แบบนี้อะค่ะ
แก้โค้ดแล้วแต่ว่าก็ยังเหมือนเดิม รบกวนช่วยดูหน่อยนะค่ะ และถ้าอยากให้ ID ที่ส่งมาแสดง เว้นวรรค แบบนี้ 1 1 09 53 0000001 ใช้แสดงผลในรายงานอะค่ะต้องเขียนรูปแบบไหนค่ะ
Tag : .NET, Ms SQL Server 2005, Win (Windows App), C#, VS 2008 (.NET 3.x)
ประวัติการแก้ไข 2010-09-13 12:25:25 2010-09-13 14:23:17
Date :
2010-09-13 11:45:13
By :
Jing_Jai
View :
1853
Reply :
9
อ้างอิงจาก code ที่ให้มานะคะ comment บรรทัดที่ 11,12 และ 23 ออกค่ะ
และเพิ่ม function add ลงฐานข้อมูลทันทีที่ได้ id ใหม่ ลงในส่วนนี้เลยค่ะ
ซึ่งก้อคือแทรกบรรทัดที่ 25 ลงไปเลยค่ะ
Date :
2010-09-13 12:30:15
By :
blurEyes
ลองแล้วก็เหมือนเดิมค่ะ
Date :
2010-09-13 12:49:54
By :
Jing_Jai
DBCMem.getMemberID_MAX(lbTypeNo.Text).ToString()
เอามาแปะทีดิคะว่าข้างในนี่เป็นยังไง
Date :
2010-09-13 13:23:04
By :
blurEyes
Code (C#)
public long getMemberID_MAX(string cardType)
{
Connect();
long tempReturn = 0;
temp = @"SELECT
(
Case When MAX(MemberID) Is Null Then 1" + cardType + DateTime.Now.ToString("MMyy",new System.Globalization.CultureInfo("th-TH")) + @"0000000
Else MAX(MemberID)
End
)
AS MemberID FROM CODE_MEMBERCARD";
SqlCommand command = new SqlCommand(temp, Conn);
SqlDataReader dr = command.ExecuteReader();
if (dr.Read())
{
tempReturn = Convert.ToInt64(dr[0].ToString());
}
return tempReturn;
}
Date :
2010-09-13 13:25:14
By :
Jing_Jai
อื้อ คุณใช้ MMYY มาแยก RUNNUMBER ออกเป็นช่วงๆน่ะค่ะ ตัดเรื่อง datetime ออกไปจาก select ดิคะ
ค่าที่ได้ของ Current MAX ID จะต้องเป็ค่าที่มากที่สุดไม่ว่าจะมาจากวันไหนไม่ใช่หรอคะ
หรือคุณจะสร้าง id ของแต่ละวันแยกออกไปล่ะ
Code (C#)
public long getMemberID_MAX(string cardType)
{
Connect();
long tempReturn = 0;
string iStr = string.Empty ;
System.Text.StringBuilder CmdBuilder = New System.Text.StringBuilder() ;
CmdBuilder.AppendLine ("SELECT [MemberID] " ) ;
CmdBuilder.AppendLine ("FROM [CODE_MEMBERCARD] ") ;
// ตัดมาพิจารณาเฉพาะ running number
CmdBuilder.AppendLine ("WHERE SUBSTRING([MemberID] ,7 ,7) = MAX(SUBSTRING([MemberID] ,7 ,7))") ;
iStr = CmdBuilder.ToString() ;
SqlCommand command = new SqlCommand(iStr, Conn);
object tempMaxID= command.ExecuteScalar()
if (tempMaxID == null )
iStr ="1" + cardType + DateTime.Now.ToString("MMyy",new System.Globalization.CultureInfo("th-TH"))
+ "0000000" ;
else
iStr = tempMaxID.ToString() ;
tempReturn = Convert.ToInt64(iStr );
return tempReturn;
}
ประวัติการแก้ไข 2010-09-13 14:54:06
Date :
2010-09-13 14:28:13
By :
blurEyes
ลองแล้วค่ะผลลัพธ์ออกมาก็เหมือนเดิมอ่ะค่ะ เลขชุดหลังไม่ได้เรียง
1109530000001
1109530000003
1309530000002
1309530000003
Date :
2010-09-13 15:17:46
By :
Jing_Jai
ต้องแก้ประกบกันนะคะ จากชุดแรกที่ให้ comment ออกด้วยน่ะค่ะ ถ้ายังไม่แก้ด้ายบนน่าจะ เป็นเหมือนเดิมอยู่
Date :
2010-09-13 15:47:13
By :
blurEyes
ทำไรกันอะครับ
ใส่ใน datatable ง่ายกว่าไหม แล้ว sort dataview เอา แค่นี้ก็จบแล้ว
Date :
2010-09-13 15:57:13
By :
tungman
^^ อยากจะแก้แบบคงความคิดของเจ้าของเดิมเอาไว้ให้มากที่สุดอะค่ะ
ถ้าแก้แบบยิงเปรี้ยงเดียวจบ เดวจะกลายเป็นทำงานให้กันแทน
เผื่อคุนเจ้ากาทู้จะได้วิธีคิดหรืออาจจะแก้ไปแบบคิดด้วยตัวเองได้ไงคะ
ประวัติการแก้ไข 2010-09-14 00:07:33
Date :
2010-09-13 23:51:57
By :
blurEyes
Load balance : Server 05