 |
|
สอบถามวิธี Convert time ที่เป็น String ให้เป็น Format H:i:s ใน SQL server ครับ |
|
 |
|
|
 |
 |
|
ถ้าผมจำไม่ผิด คุณเคยถาม เรื่อง "STCRD (Stock Card)" และผมเคยตอบไปโดยใช้ SQL Query จริง (ในบางสถานะการณ์/บางความต้องการ)
ผมถามว่าคุณจำได้หรือไม่? ล่ะ
เพราะฉะนั้น "งดดื่มนมก่อนดีไหม? และทวบทวนดู"
|
 |
 |
 |
 |
Date :
2016-08-08 20:37:52 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุณดูนะผมตั้งใจลืม "ตั้งใจลืมเช็ค"
Code (VB.NET)
'รายงานทางบัญชี สต๊อคการ์ด (IC_B4_02xIC_21)
'OrgCode = OrgName/OrgNameUS/etc
'PARTHIST.PROCESS_SEQ = 60-รับ, 100-จ่าย
'SQLite Date String Format
'yyyy-MM-dd HH:MM:SS.SSS
Public Shared Function IC_B4_02xIC_21(ByVal Warehouse As String,
ByVal From_Part_NO As String,
ByVal To_Part_NO As String,
ByVal From_Date As String,
ByVal To_Date As String,
ByVal OrgCode As String) As DataTable
Dim strSQL As XCData = Nothing
'Dim xFrom_Date As String = WL_Utility.DateUtils.GetFirstDayOfMonth(ZMonth, Zyear).ToString("yyyy/MM/dd") '2014-01-01
'Dim xTo_Date As String = WL_Utility.DateUtils.GetLastDayOfMonth(ZMonth, Zyear).ToString("yyyy/MM/dd 23:59:59") '2014-01-01 23:59
'SQL Server DateAdd(day, -30, GETDATE())
'SQLite SELECT DATE('NOW','-30 day')
'Firebird CAST('TODAY' AS TIMESTAMP) - 30
Dim curDateDec30 As String = If(RDBMSType = "Firebird", "CAST('TODAY' AS TIMESTAMP) - @P_Cycle_NO", If(RDBMSType = "SQLite", "DATE('NOW','-@P_Cycle_NO day')", "Not Implement yet."))
Select Case (WL_Common.PubConstant.RDBMSType)
Case "MsAccess"
'Not Implement yet.
Case Else
strSQL =
<![CDATA[
SELECT 'HED' AS REP_GROUP, WHS_BAL.WAREHOUSE, WHS_BAL.PART_NO, 'AAAAAAAA' AS DOC_NO, ' ' AS SEQ, CAST('3/3/2014' AS TIMESTAMP) AS DOC_DATE, CAST('00' AS INTEGER) AS PROCESS_SEQ,
'AA' AS TRAN_CODE, 'AAA' AS TRAN_TYPE, MIN(WHS_STAT.BEGIN_BAL) AS BEGIN_BAL, MIN(WHS_STAT.BEG_AMT) AS BEG_AMT, SUM(HIS_STAT.REC_QTY) AS REC_QTY,
SUM(HIS_STAT.ISS_QTY) AS ISS_QTY, SUM(HIS_STAT.ADJ_INC) AS ADJ_INC, SUM(HIS_STAT.ADJ_DEC) AS ADJ_DEC, 0.00 AS TRAN_QTY, 0.00 AS TRAN_QTYSORT,
SUM(HIS_STAT.TRAN_AMT) AS TRAN_AMT, '0' AS POST_FLAG, MIN(WHS_BAL.ACCODE) AS ACCODE, MIN(AC_TAB.ACCOUNT_NO) AS ACCOUNT_NO, MIN(UM_TAB.UM) AS UM,
MIN(UM_TAB.UM_DESC) AS UM_DESC, MIN(WHS_BAL.PART_DESC) AS PART_DESC, 0.00 AS UNIT_COST, (
SELECT MIN(WHS_TAB.WHS_DESC)
FROM WHS_TAB
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
AND WHS_TAB.STK_LOCATION = (
SELECT MIN(WHB.STK_LOCATION)
FROM WHS_TAB WHB
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
)
) AS WHS_DESC, (
SELECT MIN(TRAN_DESC)
FROM PARTHIST
WHERE 1 <> 1
) AS TRAN_DESC, MIN(REP1.NOTE) AS NOTE, MIN(REP2.NOTE) AS NOTE2, CAST('0' AS NUMERIC(15, 2)) AS HDL_TRAN_QTY, CAST('0' AS NUMERIC(15, 2)) AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN WHS_STAT ON WHS_BAL.WAREHOUSE = WHS_STAT.WAREHOUSE AND WHS_BAL.PART_NO = WHS_STAT.PART_NO AND WHS_STAT.ZYEAR = '57' AND WHS_STAT.PERIOD = '3'
LEFT JOIN HIS_STAT ON WHS_BAL.WAREHOUSE = HIS_STAT.WAREHOUSE AND WHS_BAL.PART_NO = HIS_STAT.PART_NO AND HIS_STAT.DOC_DATE < '3/1/2014'
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST'
WHERE WHS_BAL.WAREHOUSE = @Warehouse AND WHS_BAL.PART_NO BETWEEN @From_Part_NO AND @To_Part_NO
GROUP BY WHS_BAL.WAREHOUSE, WHS_BAL.PART_NO
UNION ALL
SELECT 'DET' AS REP_GROUP, PARTHIST.WAREHOUSE, PARTHIST.PART_NO, PARTHIST.DOC_NO, PARTHIST.SEQ, PARTHIST.DOC_DATE, PARTHIST.PROCESS_SEQ, PARTHIST.TRAN_CODE,
PARTHIST.TRAN_TYPE, 0.00 AS BEGIN_BAL, 0.00 AS BEG_AMT, 0.00 AS REC_QTY, 0.00 AS ISS_QTY, 0.00 AS ADJ_INC, 0.00 AS ADJ_DEC, PARTHIST.TRAN_QTY, CASE
WHEN ABS(PARTHIST.TRAN_QTY) > 0
THEN (PARTHIST.TRAN_QTY / (ABS(PARTHIST.TRAN_QTY)))
ELSE 0
END AS TRAN_QTYSORT, PARTHIST.TRAN_AMT, PARTHIST.POST_FLAG, WHS_BAL.ACCODE, AC_TAB.ACCOUNT_NO, UM_TAB.UM, UM_TAB.UM_DESC, WHS_BAL.PART_DESC, PARTHIST.UNIT_COST, (
SELECT MIN(WHS_TAB.WHS_DESC)
FROM WHS_TAB
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
AND WHS_TAB.STK_LOCATION = (
SELECT MIN(WHB.STK_LOCATION)
FROM WHS_TAB WHB
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
)
) AS WHS_DESC, PARTHIST.TRAN_DESC, REP1.NOTE AS NOTE, REP2.NOTE AS NOTE2, CAST('0' AS NUMERIC(15, 2)) AS HDL_TRAN_QTY, CAST('0' AS NUMERIC(15, 2)) AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN PARTHIST ON WHS_BAL.WAREHOUSE = PARTHIST.WAREHOUSE AND WHS_BAL.PART_NO = PARTHIST.PART_NO AND PARTHIST.DOC_DATE BETWEEN '3/1/2014' AND '3/3/2014 23:59'
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST'
WHERE WHS_BAL.WAREHOUSE = 'หอยหมี' AND WHS_BAL.PART_NO BETWEEN 'หอย' AND 'เหม็น'
UNION ALL
SELECT 'DET' AS REP_GROUP, PARTHIST.WAREHOUSE, PARTHIST.PART_NO, PARTHIST.DOC_NO, PARTHIST.SEQ, PARTHIST.DOC_DATE, PARTHIST.PROCESS_SEQ, PARTHIST.TRAN_CODE, PARTHIST.TRAN_TYPE, 0.00 AS BEGIN_BAL, 0.00 AS BEG_AMT, 0.00 AS REC_QTY, 0.00 AS ISS_QTY, 0.00 AS ADJ_INC, 0.00 AS ADJ_DEC, PARTHIST.TRAN_QTY, CASE
WHEN ABS(PARTHIST.TRAN_QTY) > 0
THEN (PARTHIST.TRAN_QTY / (ABS(PARTHIST.TRAN_QTY)))
ELSE 0
END AS TRAN_QTYSORT, PARTHIST.TRAN_AMT, PARTHIST.POST_FLAG, WHS_BAL.ACCODE, AC_TAB.ACCOUNT_NO, UM_TAB.UM, UM_TAB.UM_DESC, WHS_BAL.PART_DESC, PARTHIST.UNIT_COST, (
SELECT MIN(WHS_TAB.WHS_DESC)
FROM WHS_TAB
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
AND WHS_TAB.STK_LOCATION = (
SELECT MIN(WHB.STK_LOCATION)
FROM WHS_TAB WHB
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
)
) AS WHS_DESC, PARTHIST.TRAN_DESC, REP1.NOTE AS NOTE, REP2.NOTE AS NOTE2, CASE
WHEN (- HDL.TRAN_QTY) > 0
THEN CAST((- HDL.TRAN_QTY) AS NUMERIC(15, 2))
ELSE 0
END AS HDL_TRAN_QTY, CASE
WHEN HDL.UNIT_COST > 0
THEN CAST(HDL.UNIT_COST AS NUMERIC(15, 2))
ELSE 0
END AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN PARTHIST ON WHS_BAL.WAREHOUSE = PARTHIST.WAREHOUSE AND WHS_BAL.PART_NO = PARTHIST.PART_NO AND PARTHIST.DOC_DATE BETWEEN '3/1/2014' AND '3/3/2014 23:59'
LEFT JOIN HIS_DTL HDL ON HDL.WAREHOUSE = PARTHIST.WAREHOUSE AND HDL.DOC_DATE = PARTHIST.DOC_DATE AND HDL.DOC_NO = PARTHIST.DOC_NO AND HDL.SEQ = PARTHIST.SEQ
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST'
WHERE WHS_BAL.WAREHOUSE = 'หอยหมี' AND HDL.UNIT_COST > 0 AND (- HDL.TRAN_QTY) > 0 AND WHS_BAL.PART_NO BETWEEN 'หอย' AND 'เหม็น'
ORDER BY 2, 3, 6, 7, 4, 5
]]>
End Select
'ตั้งใจลืมเช็ค WHS_TAB.WAREHOUSE.OrgCode = 'OrgCode' ด้วย
Return WL_DatabaseVB.DbHelper.Query(strSQL.Value, New List(Of DbParameter) From
{
BuildParameter("@From_Date", From_Date),
BuildParameter("@To_Date", To_Date),
BuildParameter("@Tran_Code", Warehouse),
BuildParameter("@Warehouse", Warehouse)
})
End Function
|
 |
 |
 |
 |
Date :
2016-08-08 20:52:40 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
งงครับ
|
 |
 |
 |
 |
Date :
2016-08-09 08:37:19 |
By :
kenghockey |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันไม่มีอะไรซับซ้อนเลย (ตอบแบบไม่ต้องใช้สมองคิด)
(ข้างบนก็มีคำตอบแต่ความละเอียดของคุณไม่ถึง)
ถ้าคุณใช้ SQL Server Version > 2008 ก็ใช้ฟังก์ชั่น Format จบเห่
นอกเหนือจากนั้นก็นี่เลย ตรงไปและตรงมา
Code (SQL)
SELECT SUBSTRING('184455', 1, 2) + ':' + SUBSTRING('184455', 3, 2) + ':' + SUBSTRING('184455', 5, 2)
SELECT REPLACE((SELECT SUBSTRING('184455', 1, 2) + ':' + SUBSTRING('184455', 3, 2) + ':' + SUBSTRING('184455', 5, 2)), ':', '')
|
 |
 |
 |
 |
Date :
2016-08-09 09:13:49 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Time string 184455 จากจะเขียน Sql Query Select ให้มันแสดงเป็น H:i:s
i คืออะไรรึ
แล้วทำไมไม่ Insert เป็น H:i:s ตั้งแต่แรกละครับ
แบบนี้ก็ทำงานซ้ำซ้อนสิครับ
|
 |
 |
 |
 |
Date :
2016-08-09 09:57:56 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Quote:แบบนี้ก็ทำงานซ้ำซ้อนสิครับ
--- RDBMS สมัยนี้มันเก่ง เก็บอย่างไรก็ได้
--- Hard disk สมัยนี้มันเก่ง และราคาถูก (ซื้อเอาไว้ปาหัวหมาเล่นฯก็ย่อมได้)
แล้วแต่ท่าน SA จะสะดวกเก็บ (เรื่องของมึง+5555)
--- เราในฐานะโปรแกรมเมอร์ "คุณอยากได้แบบไหน เราทำให้ได้เสมอ (ดึงข้อมูลมาใช้งาน)"
พอดีนั่งแกะโปรแกรม 12 ตัว (และจัดทำเป็นเอกสารอ้างอิง)
มีอยู่อย่างหนึ่งที่เหมือนฯกันในทุกฯโปรแกรมนั่นคือ ยอดสะสม (GL Balance)
--- บางโปรแกรมก็เก็บเป็น A งวด 1-24
--- บางโปรแกรมก็เก็บเป็น B งวด 1-12 (0 คือยอดยกมาต้นปี)
--- บางโปรแกรมก็เก็บเป็น C งวด 1-13 (13 คือยอดยกไปชาติหน้า) เป็นต้น
...
...
...
ก็ว่ากันไป แต่สุดท้ายแล้วผลลัพธ์ที่ได้ก็เหมือนฯกันนั่นแหละ
เบื่อเหมือนกันก็เลยนั่งเขียน SQL Query เล่นฯ และอยากได้ผลลัพธ์ดังนี้

ข้อมูลตัวอย่าง
Code (SQL)
DECLARE @GLBAL TABLE (Level smallint, Account varchar(100), Balance Numeric(10,2), AccountCode varchar(10), ParentACCode varchar(10))
INSERT INTO @GLBAL VALUES(1, 'Revenue', 0, '41', null)
INSERT INTO @GLBAL VALUES(2, 'Direct Income', 0, '411', '41')
INSERT INTO @GLBAL VALUES(3, 'Sales', 0, '4111', '411')
INSERT INTO @GLBAL VALUES(4, 'Sales', 0, '41111', '4111')
INSERT INTO @GLBAL VALUES(5, 'In Store Sales', 100, '411111', '41111')
INSERT INTO @GLBAL VALUES(5, 'Online Sales', 200, '411112', '41111')
INSERT INTO @GLBAL VALUES(2, 'Indirect Income', 0, '412', '41')
INSERT INTO @GLBAL VALUES(3, 'Interest', 0, '4121', '412')
INSERT INTO @GLBAL VALUES(4, 'Bank Interest', 0, '41211', '4121')
INSERT INTO @GLBAL VALUES(5, 'Bank Interest A', 400, '412111', '41211')
INSERT INTO @GLBAL VALUES(5, 'Bank Interest B', 700, '412112', '41211')
INSERT INTO @GLBAL VALUES(3, 'Other Income', 0, '4122', '412')
INSERT INTO @GLBAL VALUES(4, 'Other Income', 0, '41221', '4122')
INSERT INTO @GLBAL VALUES(5, 'Other Income', 900, '412211', '41221')
SELECT * FROM @GLBAL
|
 |
 |
 |
 |
Date :
2016-08-09 13:00:49 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แสดงว่ามีหลายคนที่ เดิมกลับไปกลับมา(แบบว่าชีวิตนี้ว่างจัด)
น่านแหละคือประเด็นครับ(RDBMS Hard disk ปิ่นโต นมโต แต่อย่างใด นะปู่)
เอ....รึว่าผมพิมผิดพักนี้มั่วแต่กับวงจรไม่ได้เขียนโปรแกรม บ้านๆ เลยทำให้คนแก่ๆ(สมองอะนะ)เลอะเลือนจากคำง่ายๆไปได้ก็เป็นได้
ย้อนกลับมาๆๆๆอย่าเพิ่งไปไกลครับ
เด๋วก็ตกเหว.....หร่อก
|
 |
 |
 |
 |
Date :
2016-08-09 13:30:17 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO4 เจ้าของกระทู้ก็คงจะได้คำตอบไปแล้ว (ถ้าไม่ได้มีอยู่ทางเดียวนั่นคือ เลิกเขียนโปรแกรมไปเลย)
จาก #NO7-#NO8
ผมจะเล่าอะไรให้ฟังเล่นฯนะครับ
จาก 12 โปรแกรมที่ผมนั่งแงะมันอยู่ ทุกฯโปรแกรมมันมีจุดเด่นของมันครับ
--- บางอย่างจุดเด่นมันก็เป็นครูของเรา จุดด้อยผมยังมองไม่เห็นนะครับ
ผมคิดอะไรไปไกลกว่าที่คุณเห็น (แน่นอนว่าผมคิดหลายชั้น ยากที่ใครฯจะตามทัน ณ.เวลานี้)
จาก #NO6 ที่ผมเขียนประกอบเอกสารของผม เพื่ออะไร?
--- ผมอยากรู้ว่าหลายฯโปรแกรมที่ใช้งานจริง (ลูกค้า > หลายแสนราย) เวลามันลงบัญชีมันทำอย่างไร?
----- คำว่าลงบัญชี บางคนก็เรียกว่า "ผ่านรายการ" บางคนก็เรียกว่า "สั่งให้ลงบัญชีใหม่"
------ แน่นอนว่า มันต้องมี Algorithm ซ่อนอยู่ข้างใน (คุณมีผมก็มีเช่นเดียวกันครับ "ไก่เห็นหมีนมงู งูเห็นหมีนมไก่นั่นแหละครับ")

จากรูปภาพ #NO6 ผมยกตัวอย่างให้ดูเฉยฯ (จริงฯแล้วมันลงเป็นงวดฯไป เช่น งวดเดือน1, งวดเดือน2, ...)
การเขียน SQL Query แบบนี้สำหรับผมมันง่ายพอฯกับ ผมให้สาวฯตักข้าวเข้าปากของผมเสียอีกครับ
หรือปลอกกล้วยเข้าปาก ประมาณนั้นครับ
***** การเขียน SQL Query ไม่มีอะไรที่ซับซ้อนไปกว่าความต้องการของผมอีกแล้ว *****
--------- ประมาณว่าความรู้พวกนี้ผมใช้แค่ ประถม 1 เองครับ
ถามว่าผมว่างไหม?
--- ระดับนี้แล้ว งานบนมือหลักล้านทั้งนั้น (และมีหลายงาน)
--- เวลาของผมมีค่า ทุกฯวินาทีครับ (ผมทำอะไรผมไม่สูญเปล่าแน่นอน เชื่อใจได้ครับ)
---- ผมไม่ใช่นักเลงคีย์บอร์ด ที่หาสาระและแก่นสารไม่ได้ (ทุบโต๊ะปังปังปัง ฟังผม +55555)
|
 |
 |
 |
 |
Date :
2016-08-09 16:31:57 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จากรูปภาพ #NO9 ผมอธิบายเพิ่มเติมให้อีกก็ได้ (หัดสงสัย ปัญญามันจะตามมาโดยที่สมองไม่ต้องสั่ง)
คำว่า Revenue และ AccountCode ทำไมมันขึ้นต้นด้วยตัวเลข 4
อธิบายแบบกระชับ (เครื่องฟิตสตาร์ดติดง่าย) ดังนี้
มันเป็นภาษาสากลและใช้กันทั่วโลก ดังนี้ชะเอิงเอย
ในทางบัญชีนิยมแบ่งออกเป็น 5 หมวดใหญ่ฯ ดังนี้
1. Assets (ทรัพย์สิน)
2. Liablilities (หนี้สิน)
3. Capital (ทุน)
4. Revenue (รายได้)
5. Expenses (ค่าใข้จ่าย)
สมการบัญชีมันเป็นแบบนี้ สินทรัพย์ = หนี้สิน + ทุน (ส่วนของเจ้าของ)
มีอีกเยอะเลย แต่อธิบายให้กระชับ มันก็ขี้เกียจพิมพ์แล้วง่ะ
...
...
...
ปล. กำลังเตรียมตัวไปสอบวิชาบัญชี 102 อยู่ครับ (ถือโอกาสทบทวนไปในตัว)
---- ที่ไปเรียนเพิ่มไม่ใช่อะไรหรอก (เผื่อได้ฟัน อ.สาวฯ หรือ น.ศ สาวฯ ได้ก็ดีไม่ได้ก็ไม่เป็นไร (ฟัน)) + 55555
|
 |
 |
 |
 |
Date :
2016-08-09 16:43:11 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เกินเยียวยาจริงๆ น่าสงสารจัง(สงสัยผมสื่อสารผิดจริง)
ผมรู้สึกสงสารทุกคนที่หลงทางเสมอ แม้เขาจะยังงงกับตัวเอง
แต่อย่างไรก็ดีเราควรหวังว่าซักวันเขาจะกลับมาสู่เส้นทางที่ถูกต้อง
คำกล่าวของ TOR@CHEMISTRY
|
 |
 |
 |
 |
Date :
2016-08-09 18:04:48 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมไม่ไหวแล้ว (ของีบสัก 24 ชั่วโมง)
--- จริงฯในฝั่งของ PHP ผมอยากได้ (อยู่เวียตนามมักจะใช้คำว่า "หเงี่ยน") มาเป็นที่ปรึกษาของผมนะ อทิเช่น
------ คุณ mr.v , คุณ DÜd€ :3 และอีกหลายฯท่าน
แต่ผมคงไม่มีวาสนา แม้กระทั่งหวังว่า "กินเหล้ากินเบียร์ คุยกันไป"
--- โปรแกรมเมอร์คุยกับโปรแกรมเมอร์
--- (ไม่มีคำว่าธุรกิจมาปะปน ยกเว้นว่า น้องคนนี้สวยดีนะ HOW Mouch... +55555)
|
 |
 |
 |
 |
Date :
2016-08-09 20:28:32 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|