ผมมีปัญหาเรื่องการ Update ข้อมูล เวลาที่ขึ้้นเดือนใหม่แล้วให้ค่ามัน Reset เองครับ
ตัวที่คุณถามในกระทู้เก่า ๆ มีคนเขียนแจกไว้น่ะครับ ลองค้นหาดูครับ มีเยอะมาก
Date :
2012-08-13 08:30:16
By :
mr.win
ผมก็คิดว่าเรื่องเรื่องทุกเรื่องน่าจะมีคนเคยถามคำถามมาก่อนแล้ว แต่หาไม่เจออะครับ อย่างน้อย ขอ keyword ในการค้นหาหน่อยได้มั้ยครับ ขอบคุณครับพี่วิน
Date :
2012-08-13 08:54:28
By :
PizzaCPE23
แนวคิดนะ
1. เราต้องหาปีขึ้นมาก่อน เช่น ปีนี้ปี 2012 เราก็เอามาบวก 543 จะได้ปี ไทย 2555 ( YearBill = (DateTime.Now.AddYear(+543).ToString());)
2. หาเดือน ( "0" + (DateTime.Now.Month.ToString());) โดยปกติเดือน 8 จะได้แค่ 1 หลักเราต้องการ 2 หลักเราก็เพิ่ม 0 ให้อยู่ข้างหน้า
3.เราก็เอาปี ที่หาได้ไป where หา มันก็จะโชว์ ปีออกมา แล้วเรา หาเดือนต่อ พอได้เดือนเราก็มาหาเลขที่บิล เลขสุดท้ายมา + 1
4.ถ้า where ไม่เจอก็ให้มันเอาปี + เดือน + 0001
ในตัวอย่าง ข้างล่างเป็น c# ของผมจะได้ Ser-12080001
12 คือ ปี
08 คือ เดือน
0001 คือเลขรันนำเบอร์
Code (C#)
string YearBill;
string MountBill;
int ReciveID;
string SQLSaleID;
YearBill = (DateTime.Now.Year.ToString().Substring(2, 2));
MountBill = "0" + (DateTime.Now.Month.ToString());
string sqlNewID;
sqlNewID = " SELECT Serv_ID ";
sqlNewID += " FROM tb_Serv";
sqlNewID += " WHERE Substring(Serv_ID,5,2) = '" + YearBill + "' And Substring(Serv_ID,7,2) = '" + MountBill + "' ";
sqlNewID += " ORDER BY Substring(Serv_ID,5,2) + Substring(Serv_ID,7,2)+ Substring(Serv_ID,9,4) DESC";
SqlDataReader dr;
com = new SqlCommand();
com.CommandType = CommandType.Text;
com.CommandText = sqlNewID;
com.Connection = Conn;
dr = com.ExecuteReader();
If (dr.HasRows) Then
{
DataTable dtNewID = new DataTable();
dtNewID.Load(dr);
SQLSaleID = dtNewID.Rows[0]["Serv_ID"].ToString();
ReciveID = 10001 + Convert.ToInt32(SQLSaleID.Substring(8, 4));
txtFindBill.Text = "Ser-" + YearBill + MountBill + ReciveID.ToString().Substring(1, 4);
}
Else
{
txtFindBill.Text = "Ser-" + YearBill + MountBill + "0001";
}
dr.Close();
ถ้าไม่เข้าใจเดี๋ยวมาตอบให้ ลองเอาไปแปลงดูก่อนนะ
ประวัติการแก้ไข 2012-08-13 11:11:35 2012-08-13 11:23:02
Date :
2012-08-13 11:11:06
By :
SeedNew
ผมลองเขียนแบบนี้แล้ว แต่ไม่ได้อ่ะครับ
Code (VB.NET)
mySqlCon.Open()
SQL = "SELECT Value FROM RunningInvoiceS WHERE Name = 'InvoiceNo'"
mySqlCmd = New SqlCommand(SQL, mySqlCon)
Try
mySqlReader = mySqlCmd.ExecuteReader
If mySqlReader.HasRows Then
While mySqlReader.Read
txtInvoiceNo.Text = Year(Today) & Format(Month(Today), "00") & Format(mySqlReader.Item(0), "0000")
End While
mySqlReader.Close()
Else 'ผมเพิ่ม else บรรทัดนี้ครับ
txtInvoiceNo.Text = Year(Today) & Format(Month(Today), "00") & "0001"
End If
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
ประวัติการแก้ไข 2012-08-13 14:29:54 2012-08-13 14:30:00 2012-08-13 14:40:30
Date :
2012-08-13 14:19:15
By :
PizzaCPE23
ตรงนี้ผิด
SELECT Value FROM RunningInvoiceS WHERE Name = 'InvoiceNo'
เป็นคำสงวน
Date :
2012-08-13 14:33:26
By :
SeedNew
มันจะเข้า Else เมื่อไหร่หรอครับ คุณ SeedNew
Date :
2012-08-13 14:45:37
By :
PizzaCPE23
เอาอย่างงนี้ เรามาไป ทีละ stap ด้วยกัน vb ไม่ได้เขียนนานแล้ว แต่จะพยายามช่วย
เริ่มแรกนะ เราใช้ MS SQL หรือเปล่า
ถ้าใช้ก็เขียน ใน คิวรี่
SELECT InvoiceNo
FROM RunningInvoiceS
WHERE Substring(InvoiceNo,1,4) And Substring(InvoiceNo,5,2)
OERDER BY Substring(InvoiceNo,1,4) And Substring(InvoiceNo,5,2) And Substring(InvoiceNo,7,4) DESC
คิวรี่ ออกมาดูก่อน ว่าได้ผลลัพธ์อะไร แล้วบอกด้วยจะบอก step ถัดไป
Date :
2012-08-13 15:59:05
By :
SeedNew
ผมใช้ SQL Server 2008 r2 ครับ
รู้สึกคำสั่ง Substring จะใช้ไม่ได้นะครับ ไม่แน่ใจ มันฟ้อง error นี้ครับ
Msg 4145, Level 15, State 1, Line 3
An expression of non-boolean type specified in a context where a condition is expected, near 'And'.
Date :
2012-08-13 16:07:51
By :
PizzaCPE23
ได้ดิ substing เป็นคำสั่งพื้นฐานของ sql
Date :
2012-08-13 16:33:06
By :
SeedNew
Load balance : Server 02