10/10/2018, 00:00

sâu mỗi lần lưu thì thời gian và số tăng theo

xin chào các anh chị
Em có dự định viết một hàm mà nội dung như sau:
có nghĩ là sau mỗi tháng thì đếm lại từ đầu,chảng hạn như sau cho 2 tháng đầu tiên:08020001, 08020002, 08030001, 08030002, 08030003 ?
Xin các vị tiền bối giúp em
Chân thành cám ơn nhiều
Hero_vanchien viết 02:09 ngày 10/10/2018
Chỉ theo những giá trị bạn nêu thì không thể viết được hàm nào thỏa mãn yêu cầu này. Bạn cần phải đưa thêm vào các điều kiện để làm nền tảng tính toán vd như database chẳng hạn.

ví dụ: id của bài viết sẽ được đặt theo dạng yymm***x trong đó yy là năm (07, 08, 09), mm là tháng (01, 02, ..., 11,12), ***x là thứ tự của bài viết đó trong tháng mà bài viết đó được thêm vào (01, 02, ....)
Theo cách này bài viết đầu tiên của tháng 2 năm 2008 có dạng: 080201
bài thứ 2: 080202
bài 999: 0802999

Không biết có đúng theo ý của bạn không?
phuc2583 viết 02:12 ngày 10/10/2018
Cám ơn bạn đã trao đổi với mình,những ý của bạn hơi khác của mình một chút,mình sẽ nói chi tiết hơn:
yymmdd####:
yy:2008
mm:02
dd:15
####:số thứ tự(0001)
gọp chung tất cả là:200802150001
sau khi bấm lưu thi số này sẽ tăng thêm là:20080215001
sang ngay hôm sau là ngày:16
thì lại như sau:20080216001(001 sẽ tăng lại từ đầu)
bước sang tháng ba thì 03
20080301001
và cứ như thế sẽ lưu ma ID
mình đã viết rồi nhưng vẫn còn sai:
mong bạn giúp mình với:
mã như sau:
if trim(request("Option"))="AddOrder" then
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "orderdetail", conn, 2, 2
' Adding data
rs.AddNew
if not rs.eof then
strmonth=month(date())
strday=day(date())
stryear=year(date())
whole=stryear&strmonth&strday

OrderID=whole+"000"
session("OrderID")=OrderID
'response.Write("<br/>")
'response.Write(OrderID)
OrderID=OrderID+1

rs("OrderID") = OrderID
rs("CustomerId") = CustomerId
rs("Item") = Items
rs("Description") = Descriptions
rs("Quantity")=Quantity
rs("price") = price
rs("UnitCurrency") = UnitCurrency
rs("CreateDate") = CreateDate
rs("ExpirationDate") = ExpirationDate
response.Write(OrderID)
'rs.Update
end if
session("orderid")=orderID
session("Item")=items
session("Descriptions")=Descriptions
session("Quantity")=Quantity
session("price")=price
session("UnitCurrency")=UnitCurrency
session("CreateDate")=CreateDate
session("ExpirationDate")=ExpirationDate

response.Redirect "ShowOrderdetail.asp"
'rs.Close
'Set rs = Nothing
end if
Hero_vanchien viết 02:12 ngày 10/10/2018
Cách khắc phục đơn giản thôi.
Trước khi insert thì bạn count xem trong database có record nào cho ngày hôm nay chưa...
sau đó chỉnh sửa lại đoạn:
OrderID=whole+"000"
session("OrderID")=OrderID
'response.Write("<br/>")
'response.Write(OrderID)
OrderID=OrderID+1


Một chút là được
phuc2583 viết 02:09 ngày 10/10/2018
if trim(request("Option"))="AddMoreOrder" then
Set Con = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
data_source = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
server.mappath("db/customer.mdb")
Con.Open data_source
rs.Open "Orderdetail", conn, 1, 3
' Adding data
strmonth=Right("0" & DatePart("m", Now()), 2)
strday=Right("0" & DatePart("d", Now()), 2)
stryear=Right(DatePart("yyyy", Now()), 2)
rs.AddNew
'Dòng này kiểm mã tăng
if not rs.eof then
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select * from Orderdetail", conn, 1, 3
NewsOrderId=rs("OrderID")+1
'rs.movelast()
OrderID=stryear&strmonth&strday&right("0000"&NewsO rderId,4)
end if
'Hết kiểm tra
rs("OrderID") = OrderID

rs("CustomerId") = request.Form(("CustomerId"))
rs("Item") = Items
rs("Description") = Descriptions
rs("Quantity")=Quantity
rs("price") = price
rs("UnitCurrency") = UnitCurrency
CreateDate=request.Form("day1")&"/"&request.Form("month1")&"/"&request.Form("year1")
rs("CreateDate") = CreateDate
ExpirationDate=request.Form("day2")&"/"&request.Form("month2")&"/"&request.Form("year2")
rs("ExpirationDate") = ExpirationDate
'rs.Update
response.Write(OrderID)
'rs.close
'set rs=nothing
' end if

session("OrderID")=OrderID
session("Item")=items
session("Descriptions")=Descriptions
session("Quantity")=Quantity
session("price")=price
session("UnitCurrency")=UnitCurrency
session("CreateDate")=CreateDate
session("ExpirationDate")=ExpirationDate

' response.Redirect "ShowOrderCustomer.asp"
'rs.Close
' Set rs = Nothing

end if
Xin các bậc tiền bối kiểm tra giúp em
Hero_vanchien viết 02:11 ngày 10/10/2018
Có thể nó đã chạy nhưng không đúng phải không?
'Dòng này kiểm mã tăng
if not rs.eof then
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select * from Orderdetail", conn, 1, 3
NewsOrderId=rs("OrderID")+1

'rs.movelast()
OrderID=stryear&strmonth&strday&right("0000"&NewsO rderId,4)
end if
'Hết kiểm tra
Câu query này không chính xác. Bạn dùng LIMIT để chỉ lấy ra các record cho ngày hiện tại.
phuc2583 viết 02:00 ngày 10/10/2018
Vậy làm sao để cho nó chạy vậy bạn.bạn có the giúp minh được không,minh khổ vì cái này mất nhiều ngày rồi.mong bạn giúp đở mình với
Nó không tăng thêm khi mình save nó
vídu:08020009..
khi mình lưu thì nó tự động tăng thêm
08020010...
và cứ như thế
Cám ơn bạn nhiều
Hero_vanchien viết 02:08 ngày 10/10/2018
Bạn phải dựa vào cấu trúc database của bạn thì mới làm chính xác được
Giả sử trang table Orderdetail có 1 fields là createDate lưu ngày mà bài viết được insert vào (2008-02-15;...)

trong đoạn mã ASP bạn tạo biến sToday lưu ngay hiện tại theo đúng chuẩn mà bạn dùng để insert(Mã ASP mình không còn nhớ nữa rồi)
Câu query bạn sửa lại như sau:
"SELECT count('OrderId') as numOfRecord FROM Orderdetail WHERE createDate=" & sToday & ";";

bạn sẽ có biến numOfRecord là số record đã insert vào cho ngày hôm đó. sau đó tính toán thế nào tùy bạn.
phuc2583 viết 02:03 ngày 10/10/2018
Mình đã tìm ra giải pháp này rồi.Chỉ một câu lệnh rất là đơn giản thôi
Cám ơn các bạn nhé.
Hoàng Phúc
Bài liên quan
0