ต้องการให้ หมายเลขใบสั่งซื้อรันเองเวลาบันทึกต้องทำยังไงคับ ผมใช้ vb.net และ SQL 2005
เก็บเป็น int แบบ auto increment แหละ เสร็จแล้วเวลา query ค่อยเอาไปสร้างเป็น code
@sql server 2005
Create Table [Invoice] (
[ID] int Identity(1,1) Primary Key Clustered,
[InvoiceDate] smalldatetime,
[InvoiceName] nvarchar(255)
)
Code (C#)
DbContext db = new DbContext("....connection string....");
var invoice = from inv in db.Invoice
select new
{
InvoiceNo = string.Format("INV{0}{1}", inv.InvoiceDate.ToString("yyMM", new System.Globalization.CultureInfo("th-TH")), inv.ID.ToString("0000")),
InvoiceName = inv.InvoiceName
};
Date :
2012-09-14 15:59:03
By :
ห้ามตอบเกินวันละ 2 กระทู้
ผมเคยทำให้โรงงานแห่งหนึ่ง
โดยการเขียน Store Procedure ให้มันแอดเลยครับ
ลองศึกษาพวก store procedure เพิ่มเติมนะครับ
แนะนำอีกวิธี ถ้าเขียน store procedure ไม่เป็น
คือเขียนเป็น method/class ขึ้นมาใน .NET
ไว้สำหรับ gen โดยเฉพาะไปเลย
ก็ดึงค่า Date ปัจจุบันมาใช้ให้เป็นประโยชน์
พร้อมกับเช็คข้อมูลจากฐานข้อมูลด้วยว่ามันรันถึงเลขไหนแล้ว
ก็เอามา +1 เข้าไป
ผมว่าไม่ยากนะครับ
Date :
2012-09-14 16:00:42
By :
mixarstudio
ขอบคุณมากคับ แต่ผมก้อยัง งง ? อยู่ดีแฮะ ^ ^
Date :
2012-09-14 16:22:29
By :
MatooM
มีแต่C# หวังว่าจะมีประโยชน์บ้าง
Code (C#)
//รันรหัสใบกำกับภาษี
private void runId()
{
string Date = DateTime.Today.ToString("dd/MM/yyyy"); //เก็บค่าวันที่ปัจจุบันในตัวแปร Date
string year = Date.Substring(8,2).ToString(); //ตัดเฉพาะปีในตัวแปร Date ไว้ในตัวแปร year
string month = Date.Substring(3,2).ToString(); //ตัดเฉพาะเดือนในตัวแปร Date ไว้ในตัวแปร month
string sql = "select * from Invoice ";
cmd = new SqlCommand(sql, conn);
dr = cmd.ExecuteReader();
if (dr.HasRows == false)
{
tbxInvoice_id.Text = year + month + "001";
}
else {
connectionDB();
sql = "select max(invoice_id) as maxid from Invoice ";
cmd = new SqlCommand(sql, conn);
string invoiceidmax = cmd.ExecuteScalar().ToString();
int yymm = Convert.ToInt32(invoiceidmax.Substring(0,4));
int idmax = Convert.ToInt32( invoiceidmax.Substring(4, 3));
if (yymm.ToString() != year + month)
{
idmax = 0;
}
int invoiceid = idmax + 1;
if (invoiceid.ToString().Length == 1)
{
tbxInvoice_id.Text = year + month + "00" + invoiceid.ToString();
}
else if (invoiceid.ToString().Length == 2)
{
tbxInvoice_id.Text = year + month + "0" + invoiceid.ToString();
}
else if (invoiceid.ToString().Length == 3)
{
tbxInvoice_id.Text = year + month + invoiceid.ToString();
}
}
}
Date :
2012-09-14 18:02:31
By :
JaNoRn
ขอบคุณมากคับ เดี๋ยวผมลองศึกษาไปเรื่อยๆก่อน
Date :
2012-09-14 18:37:00
By :
MatooM
Load balance : Server 01