|
|
|
ขอสอบถามการทำRunning Number ซึ่ง Insertลงฐานข้อมูลไม่ได้ค่ะ |
|
|
|
|
|
|
|
จะทำ RunningNumberค่ะ โดยมีรูปแบบนี้ "RF17010001"
ตำแหน่ง 1,2 >>ตัวอักษร
ตำแหน่ง 3,4 >>ปีปัจจุบัน
ตำแหน่ง 5,6 >>เดือนปัจจุบัน
ตำแหน่ง 7,10 >> Running Number4หลัก
พอRUN Code ด้านล่างแล้ว insert ไม่ได้ค่ะ รบกวนช่วยเช็คหน่อยค่ะว่าผิดตรงไหน
Code (PHP)
$sqlinsert = "INSERT INTO `TISS_PresaleQUOTATION`
(`quotation_no`)
VALUES (
# ใช้ฟังก์ชั่นนี้เชื่อมต่อสตริงเข้าด้วยกัน
CONCAT(
# ปีและเดือนของเวลาปัจจุบัน เช่น 1701
DATE_FORMAT(NOW(), 'RF%y%m'),
# ใช้ LPAD() เพื่อเติมตัวอักษรตามที่ต้องการเข้าข้างหน้าตัวเลข (ในที่นี้คือ 0)
LPAD(
IFNULL(
# Sub Query ที่จะเลือก 'ตัวเลขสุดท้าย' ของ quotation_no ในปีปัจจุบัน
(SELECT
# ตัดเฉพาะส่วนเลขอัตโนมัติของ quotation_no ออกมา
SUBSTR(`quotation_no`, 7)
FROM `TISS_PresaleQUOTATION` AS `alias`
# โดยหาเฉพาะปีและเดือนปัจจุบัน
WHERE SUBSTR(`quotation_no`, 1, 6) = DATE_FORMAT(NOW(), 'RF%y%m')
# เรียงตามลำดับ quotation_no จากมากไปหาน้อย เพื่อเอาค่าล่าสุดออกมา
ORDER BY `quotation_no` DESC
LIMIT 1
)
# และ + ด้วย 1 เสมอ ซึ่งจะทำให้ได้เลขที่เรียงกันไป
+ 1,
# หาก Sub Query ข้างบนคืนแถวกลับมาเป็น NULL ก็ให้ใช้ค่า 1 (เริ่มแถวแรกของปี)
1
),
4, # โดยให้เป็นตัวเลข 4 หลัก
'0' # ตัวอักษรที่จะเติมข้างหน้าตัวเลข
)
)
)
";
sqlsrv_query($sqlinsert,$Conn)or die("Error $sqlinsert");
Tag : PHP, Ms SQL Server 2008
|
|
|
|
|
|
Date :
2017-01-27 11:11:42 |
By :
watanya1951 |
View :
1112 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แนวคิดอาจต้องสร้าง ฐานข้อมูล Count ในการการนับ และทำการ update เมื่อ Insert เรียบร้อย เช่น
Code (PHP)
<?php
//DB_TB(count) :: Countname(text),Count(int)
$CountName="Order";
$SelectCount=mysqli_query($con,"SELECT * FROM count WHERE CountName='".$CountName."'");
$Count=mysqli_query($con,$SelectCount);
$Text="RF";
$Year=substr(date('Y'),2,3);
$Month=date('m');
echo $Text.$Year.$Month.substr("0000000".$Count['Count'],-5);
?>
|
|
|
|
|
Date :
2017-01-27 11:36:14 |
By :
dudesaranyu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หาเลขที่ docno ล่าสุด (SQL)
SELECT IF(ISNULL(MAX(docno)) OR MAX(docno) = '', DATE_FORMAT(NOW(),'%y%m') * 10000 + 1, MAX(docno) + 1) AS lastdoc FROM table WHERE DATE_FORMAT(docdate,'%Y%m') = DATE_FORMAT(NOW(),'%Y%m')
ลองเอาไปต่อยอดดูครับ
|
|
|
|
|
Date :
2017-01-28 10:07:48 |
By :
fossil31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|