Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > asp ปัญหา ข้อมูลใน Dataset ของ แต่ล่ะUserสร้าง ซ้อนทับกัน



 

asp ปัญหา ข้อมูลใน Dataset ของ แต่ล่ะUserสร้าง ซ้อนทับกัน

 



Topic : 053079



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์




ผมสร้า่ง dataset ไว้เก็บรายการข้อมูลไว้ก่อนส่งไปเก็บใน ฐานข้อมูล เพื่อให้ User สามารถลบหรือแก้ไขข้อมูลก่อนส่งได้ แต่เกิดปัญหาเมื่อมี User อื่นมาทำด้วยกลายเป็นว่าไปเขียนทับรายการของคนเก่า ซึ่งพอต่างคนต่างแก้ข้อมูล ข้อมูลเลยมั่วไปหมด มีวิธีให้dataset แยกข้อมูลของ user ออกจากกัน หรือการสำรองข้อมูลแบบอื่น ไหม๊ครับ


Partial Class test
Inherits System.Web.UI.Page
Dim plantcode As String
Shared DSPendingDailyOperation As PendingDailyOperationDataSet
Dim x As Boolean
Shared dr As DataRow
Shared addr As DataRow
Shared selectedEditRowIndex As Integer
Dim cutdateText As String
Shared editst As Boolean

Sub ClearTextbox()
TxOperator.Text = ""
TxNotification.Text = ""
TxJobOrder.Text = ""
TxWhat.Text = ""
TxHow.Text = ""
TxWhy.Text = ""
DdlWhose.SelectedIndex = 0
End Sub

Sub cutdate(ByVal cutdatetochange As String)
Dim cutdate() As String = Split(cutdatetochange.ToString, "/")

End Sub
Sub CreatePendingDailyOperation()
DSPendingDailyOperation = New PendingDailyOperationDataSet
Session("PendingDailyOperation") = DSPendingDailyOperation
End Sub

Sub EditRow()
Dim cdr As DataRow
Try
cdr = DSPendingDailyOperation.Tables("PendingOperationDetails").Rows(selectedEditRowIndex)

Catch
AddToPending()
Exit Sub

Finally

End Try


cdr.BeginEdit()
cdr("Taskid") = selectedEditRowIndex + 1
cdr("PlantCode") = TxPlantcode.Text
cdr("OperationDate") = calOperatedate.DatetimeValue
cdr("TaskStart") = calOperatedateStart.DatetimeValue.AddHours(CInt(hTStart.Text)).AddMinutes(CInt(mTStart0.Text))
cdr("TaskStop") = calOperatedateStop.DatetimeValue.AddHours(CInt(hTStop.Text)).AddMinutes(CInt(mTStop.Text))
cdr("What") = TxWhat.Text
cdr("Whose") = DdlWhose.Text
cdr("JobOrderID") = TxJobOrder.Text
cdr("Why") = TxWhy.Text
cdr("How") = TxHow.Text
cdr("NotificationID") = TxNotification.Text
cdr("Operator") = TxOperator.Text
cdr("Subdivide") = ddlKind.SelectedItem
cdr("MachineName") = ddlMachine.SelectedItem
cdr("Equipment") = ddleq.SelectedValue
cdr.EndEdit()
DSPendingDailyOperation.Tables("PendingOperationDetails").AcceptChanges()
gvPending.DataSource = DSPendingDailyOperation.Tables("PendingOperationDetails")
gvPending.DataBind()
editst = False
End Sub

Sub AddToPending()
DSPendingDailyOperation = Session("PendingDailyOperation")

dr = DSPendingDailyOperation.Tables("PendingOperationDetails").NewRow
dr("PlantCode") = TxPlantcode.Text
dr("OperationDate") = calOperatedate.DatetimeValue


dr("TaskStart") = calOperatedateStart.DatetimeValue.AddHours(CInt(hTStart.Text)).AddMinutes(CInt(mTStart0.Text))


dr("TaskStop") = calOperatedateStop.DatetimeValue.AddHours(CInt(hTStop.Text)).AddMinutes(CInt(mTStop.Text))

dr("Taskid") = gvPending.Rows.Count + 1
dr("What") = TxWhat.Text
dr("Whose") = DdlWhose.Text
dr("JobOrderID") = TxJobOrder.Text
dr("Why") = TxWhy.Text
dr("How") = TxHow.Text
dr("NotificationID") = TxNotification.Text
dr("Operator") = TxOperator.Text
dr("Subdivide") = ddlKind.SelectedItem
dr("MachineName") = ddlMachine.SelectedItem
dr("Equipment") = ddleq.SelectedValue
dr("Recorder") = lbUsername.Text
DSPendingDailyOperation.Tables("PendingOperationDetails").Rows.Add(dr)
Session("PendingDailyOperation") = DSPendingDailyOperation
gvPending.DataSource = DSPendingDailyOperation.Tables("PendingOperationDetails")
gvPending.DataBind()
End Sub


Protected Sub bAddItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bAddItem.Click

Try
DSPendingDailyOperation = Session("PendingDailyOperation")
addr = DSPendingDailyOperation.Tables("PendingDailyoperations").NewRow
addr("PlantCode") = TxPlantcode.Text
addr("OperationDate") = calOperatedate.DatetimeValue
addr("Recorder") = lbUsername.Text
DSPendingDailyOperation.Tables("PendingDailyoperations").Rows.Add(addr)
Session("PendingDailyOperation") = DSPendingDailyOperation

Catch ex As Exception

Finally


End Try



Dim timestart As DateTime = calOperatedateStart.DatetimeValue.AddHours(hTStart.SelectedValue).AddMinutes(mTStart0.SelectedValue)
Dim timestop As DateTime = calOperatedateStop.DatetimeValue.AddHours(hTStop.SelectedValue).AddMinutes(mTStop.SelectedValue)

If timestop > timestart Then

If TxOperator.Text = "" Then
Label3.Text = "Error : ไม่ระบุชื่อผู้ปฏิบัติงาน"

Exit Sub
Else
If TxWhat.Text = "" Then
Label3.Text = "Error : ไม่ระบุงานที่ทำ"

Exit Sub
Else

Dim NumLoopCheck As Integer = gvPending.Rows.Count - 1
Dim CountLoop As Integer = 0

Dim teststart As DateTime

teststart = calOperatedateStart.DatetimeValue.AddHours(CInt(hTStart.Text)).AddMinutes(CInt(mTStart0.Text))

Dim teststop As DateTime
teststop = calOperatedateStop.DatetimeValue.AddHours(CInt(mTStart0.Text)).AddMinutes(CInt(mTStop.Text))



If gvPending.Rows.Count > 0 Then 'รายการแรกไม่มีการตรวจสอบเวลาซ้อนทับกัน

'''''''''''''''''''''''''''''''''''''''''''Check Time Loop''''''''''''''''''''''''''''''''''''''''''''''''''''
For CountLoop = 0 To NumLoopCheck Step 1
DSPendingDailyOperation = Session("PendingDailyOperation")

If (TxOperator.Text = gvPending.Rows(CountLoop).Cells(9).Text) Then

If teststart > CDate(gvPending.Rows(CountLoop).Cells(1).Text) And teststart < CDate(gvPending.Rows(CountLoop).Cells(2).Text) Then
Label3.Text = "Error : เวลาทำงานซ้อนทับ"

Exit Sub
ElseIf teststop > CDate(gvPending.Rows(CountLoop).Cells(1).Text) And teststop < CDate(gvPending.Rows(CountLoop).Cells(2).Text) Then
Label3.Text = "Error : เวลาทำงานซ้อนทับ"

Exit Sub
ElseIf teststart = CDate(gvPending.Rows(CountLoop).Cells(1).Text) Then
Label3.Text = "Error : เวลาทำงานซ้อนทับ"

Exit Sub
ElseIf teststop = CDate(gvPending.Rows(CountLoop).Cells(2).Text) Then
Label3.Text = "Error : เวลาทำงานซ้อนทับ"

Exit Sub

End If


End If
Next


'''''''''''''''''''''''''''''''''''''''''''End Check Time Loop''''''''''''''''''''''''''''''''''''''''''''''''''''
Else
If editst = False Then
Label3.Text = ""
AddToPending()
ClearTextbox()
Else
EditRow()
ClearTextbox()
End If
bAddItem.Text = "เพิ่มรายการ"
Exit Sub
End If
End If

End If


Else : Label3.Text = "Error : กรอกเวลาไม่ถูกต้อง"

Exit Sub

End If
If editst = False Then

AddToPending()
Else : EditRow()
End If
Label3.Text = ""
ClearTextbox()
bdelete.Visible = False
bedit.Visible = False
bAddItem.Text = "เพิ่มรายการ"


End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Master.DisplayPageTitle("บันทึกรายงานประจำวัน")
If Not IsPostBack Then
CreatePendingDailyOperation()
End If


Dim UserName As String = User.Identity.Name.ToString
lbUsername.Text = UserName

Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("Feedusers").ConnectionString)
Dim Cmd As SqlCommand = New SqlCommand("SELECT * FROM [UserProfiles] WHERE ([UserName] = @Username)", conn)

Cmd.Parameters.AddWithValue("Username", UserName)
conn.Open()
Dim Rd As SqlDataReader
Rd = Cmd.ExecuteReader()
Rd.Read()
plantcode = Rd("PlantID").ToString

Session("Plantcode") = plantcode
conn.Close()

Protected Sub bsent_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bsent.Click

'''''''''''''''''''''''''''''''''''''''''''''''''Record Recorder Name''''''''''''''''''''''''''''''''''''''''''''''''

Dim conn2 As New SqlConnection(WebConfigurationManager.ConnectionStrings("PlantMaintenance").ConnectionString)
Dim sqlcmd2 As New SqlCommand("addDailyOperationRecorder", conn2)
sqlcmd2.CommandType = CommandType.StoredProcedure
sqlcmd2.Parameters.AddWithValue("Plantcode", Session("Plantcode"))


sqlcmd2.Parameters.AddWithValue("Operationdate", calOperatedate.DatetimeValue)

sqlcmd2.Parameters.AddWithValue("Recordeddate", DateTime.Now)
sqlcmd2.Parameters.AddWithValue("Recorder", User.Identity.Name)


Try
conn2.Open()
sqlcmd2.ExecuteNonQuery()
ClearTextbox()
Label3.ForeColor = Drawing.Color.Blue

Catch ex As Exception
Label3.ForeColor = Drawing.Color.Red

Label3.Text = "การส่งรายงานล้มเหลว! : " & ex.Message
Exit Sub
Finally
conn2.Close()

End Try

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim i As Integer = gvPending.Rows.Count - 1
Dim j As Integer = 0


For j = 0 To i Step 1

'''''''''''''''''''''''''''''''''''Copy DATA From gvPending'''''''''''''''''''''''''''''''''''
Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("PlantMaintenance").ConnectionString)
Dim sqlcmd As New SqlCommand("addDailyOperations", conn)
sqlcmd.CommandType = CommandType.StoredProcedure

Dim cdr As DataRow = DSPendingDailyOperation.Tables("PendingOperationDetails").Rows(j)
Dim Equipment = cdr("Equipment")
Dim what As String = cdr("What")
Dim How As String = cdr("How")
Dim Why As String = cdr("Why")
Dim Operatorname = cdr("Operator")

Dim StartTime As DateTime = cdr("TaskStart")
Dim StopTime As DateTime = cdr("TaskStop")
Dim Whose As String = cdr("Whose")
Dim JobOrderID As String = cdr("JobOrderID")


Dim NotificationID = cdr("NotificationID")

Dim taskid = cdr("TaskID")
Dim MachineName = cdr("MachineName")
Dim Subdivide As String = cdr("Subdivide")



''''''''''''''' Sent Data To DATABASE '''''''''''''''''''''''''
sqlcmd.Parameters.AddWithValue("Plantcode", plantcode)


sqlcmd.Parameters.AddWithValue("OperationDate", calOperatedate.DatetimeValue)

sqlcmd.Parameters.AddWithValue("What", what)
sqlcmd.Parameters.AddWithValue("TaskID", taskid)
sqlcmd.Parameters.AddWithValue("TaskStart", StartTime)
sqlcmd.Parameters.AddWithValue("TaskStop", StopTime)
sqlcmd.Parameters.AddWithValue("Whose", Whose)
sqlcmd.Parameters.AddWithValue("JobOrderID", JobOrderID)
sqlcmd.Parameters.AddWithValue("Why", Why)
sqlcmd.Parameters.AddWithValue("How", How)
sqlcmd.Parameters.AddWithValue("NotificationID", NotificationID)
sqlcmd.Parameters.AddWithValue("Operator", Operatorname)
sqlcmd.Parameters.AddWithValue("MachineName", MachineName)
sqlcmd.Parameters.AddWithValue("Subdivide", Subdivide)
sqlcmd.Parameters.AddWithValue("Equipment", Equipment)

Try
conn.Open()
sqlcmd.ExecuteNonQuery()
ClearTextbox()
Label3.ForeColor = Drawing.Color.Blue

Catch ex As Exception
Label3.ForeColor = Drawing.Color.Red
Label3.Text = "การส่งรายงานล้มเหลว! : " & ex.Message
Exit Sub
Finally
conn.Close()
End Try
Next

Label3.Text = "ส่งรายงานสำเร็จ"
ClearTextbox()
DSPendingDailyOperation = Session("PendingDailyOperation")
DSPendingDailyOperation.Tables("PendingOperationDetails").Clear()
gvPending.DataSource = DSPendingDailyOperation.Tables("PendingOperationDetails")
gvPending.DataBind()
cbsent.Checked = False

End Sub

Protected Sub bCear_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bCear.Click
Label3.Text = ""
DSPendingDailyOperation = Session("PendingDailyOperation")
DSPendingDailyOperation.Tables("PendingOperationDetails").Clear()
DSPendingDailyOperation.Tables("PendingDailyOperations").Clear()
gvPending.DataSource = DSPendingDailyOperation.Tables("PendingOperationDetails")
gvPending.DataBind()
ClearTextbox()
End Sub

Protected Sub gvPending_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvPending.SelectedIndexChanged
selectedEditRowIndex = gvPending.SelectedIndex

bdelete.Enabled = True
bdelete.Visible = True
bedit.Enabled = True
bedit.Visible = True

End Sub

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs) Handles Menu1.MenuItemClick
If Menu1.SelectedValue = "How" Then
mvDailyRecord.SetActiveView(View3)
ElseIf Menu1.SelectedValue = "Operator" Then
mvDailyRecord.SetActiveView(view1)
ElseIf Menu1.SelectedValue = "What" Then
mvDailyRecord.SetActiveView(View2)
ElseIf Menu1.SelectedValue = "Why" Then
mvDailyRecord.SetActiveView(View4)

End If
End Sub

Protected Sub bedit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bedit.Click



TxOperator.Text = gvPending.Rows(selectedEditRowIndex).Cells(10).Text

Dim cutdateClick() As String = Split(FormatDateTime(gvPending.Rows(selectedEditRowIndex).Cells(2).Text, DateFormat.ShortDate), "/")
Dim cDay As String = cutdateClick(1)
Dim cMonth As String = cutdateClick(0)
Dim cYear As String = cutdateClick(2)

calOperatedate.DatetimeValue = cMonth & "/" & cDay & "/" & cYear
calOperatedateStart.DatetimeValue = cMonth & "/" & cDay & "/" & cYear

Dim cutdate2() As String = Split(FormatDateTime(gvPending.Rows(selectedEditRowIndex).Cells(3).Text, DateFormat.ShortDate), "/")
cDay = cutdate2(1)
cMonth = cutdate2(0)
cYear = cutdate2(2)

calOperatedateStop.DatetimeValue = CDate(cMonth & "/" & cDay & "/" & cYear)

Dim test As DateTime = CDate(gvPending.Rows(selectedEditRowIndex).Cells(2).Text)

hTStart.SelectedItem.Text = CInt(CDate(FormatDateTime((gvPending.Rows(selectedEditRowIndex).Cells(2).Text), DateFormat.GeneralDate)).Hour)
mTStart0.SelectedItem.Text = CDate(FormatDateTime((gvPending.Rows(selectedEditRowIndex).Cells(2).Text), DateFormat.GeneralDate)).Minute
hTStop.SelectedItem.Text = CDate(FormatDateTime((gvPending.Rows(selectedEditRowIndex).Cells(3).Text), DateFormat.GeneralDate)).Hour
mTStop.SelectedItem.Text = CDate(FormatDateTime((gvPending.Rows(selectedEditRowIndex).Cells(3).Text), DateFormat.GeneralDate)).Minute

If gvPending.Rows(selectedEditRowIndex).Cells(11).Text = "&nbsp;" Then
TxNotification.Text = ""
Else : TxNotification.Text = gvPending.Rows(selectedEditRowIndex).Cells(11).Text
End If

If gvPending.Rows(selectedEditRowIndex).Cells(8).Text = "&nbsp;" Then
gvPending.Rows(selectedEditRowIndex).Cells(8).Text = ""
Else : TxJobOrder.Text = gvPending.Rows(selectedEditRowIndex).Cells(8).Text
End If

Dim cdr As DataRow = DSPendingDailyOperation.Tables("PendingOperationDetails").Rows(selectedEditRowIndex)
ddlKind.SelectedItem.Text = cdr("Subdivide")
DdlWhose.SelectedItem.Text = cdr("Whose")
TxWhat.Text = cdr("What")
TxHow.Text = cdr("How")
TxWhy.Text = cdr("Why")
ddlMachine.Text = cdr("MachineName")
TxOperator.Text = cdr("Operator")
bdelete.Enabled = False
bedit.Enabled = False
bAddItem.Text = "บันทึก"
editst = True
End Sub

Protected Sub bDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bdelete.Click



Dim selectedRow As Integer = gvPending.SelectedIndex

DSPendingDailyOperation = Session("PendingDailyOperation")
DSPendingDailyOperation.Tables("PendingOperationDetails").Rows(selectedRow).Delete()
DSPendingDailyOperation.Tables("PendingOperationDetails").AcceptChanges()

Dim i As Integer = gvPending.Rows.Count - 2
Dim j As Integer = 0
Dim cdr As DataRow
For j = 0 To i Step 1
cdr = DSPendingDailyOperation.Tables("PendingOperationDetails").Rows(j)
cdr.BeginEdit()
cdr("Taskid") = j + 1
cdr.EndEdit()

Next

gvPending.DataSource = DSPendingDailyOperation.Tables("PendingOperationDetails")
gvPending.DataBind()
bdelete.Enabled = False
bedit.Enabled = False
bdelete.Visible = False
bedit.Visible = False
End Sub

Protected Sub cbsent_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbsent.CheckedChanged
If cbsent.Checked Then
bsent.Enabled = True
Else : bsent.Enabled = False

End If
End Sub


End Class



Tag : .NET, Web (ASP.NET), VB.NET







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-12-13 16:32:50 By : kokopun View : 1048 Reply : 3
 

 

No. 1



โพสกระทู้ ( 410 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

กำหนดขอบเขตหนอ่ยครับไม่ใช้ ก๊อปมาหมดอย่างนี้ ใครจะทำให้ละครับ แล้วอย่างไงใส่ VB CODE ไปด้วย






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-13 16:53:23 By : zero1150kfc
 


 

No. 2



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


แฮะๆ โทษทีครับ พอดีไม่รุว่าจะเริ่มจากตรงใหนดี แต่ ตอนนี้รู้แล้วว่าเกิด จากไปSet
Shared DSPendingDailyOperation As PendingDailyOperationDataSet ข้อมูลมันเลยไปทับกัน
ตอนนี้ เปลี่ยน ไปเป็น Private แก้ปัญหาได้แล้วครับ แค่นิดเดียวทำมึนเป็นอาทิตย์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-14 01:29:31 By : kokopun
 

 

No. 3



โพสกระทู้ ( 410 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ครับ ไงก็ยินดีด้วยครับ ^ ^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-14 05:38:52 By : zero1150kfc
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : asp ปัญหา ข้อมูลใน Dataset ของ แต่ล่ะUserสร้าง ซ้อนทับกัน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่