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,036

HOME > .NET Framework > Forum > VB.Net สอบถามเกี่ยวกับเรื่อง adpt.Update(ds) to database รบกวนผู้รู้ด้วยครับ



 

VB.Net สอบถามเกี่ยวกับเรื่อง adpt.Update(ds) to database รบกวนผู้รู้ด้วยครับ

 



Topic : 101644

Guest




เรื่องมีอยู่ว่า มี dataviewgrid และ Textbox ที่ไว้แก้ไขข้อมูล แล้วกดบันทึก

แต่ แก้ไข Record แรก แล้วบันทึก มันไม่ยอมบันทึกครับ
แต่ ถ้าแก้ไข Record อีก 1 Record (ต่อจากบรรทัดบน) พอกดเซฟ Record นี้ Record บรรทัดบน จะบันทึก แต่ Record ที่กดบันทึกล่าสุดไม่ยอมบันทึกนะครับ

จะเป็นแบบนี้ คือ แก้ไขข้อมูล 10 record จะบันทึก แค่ 1-9 ผมเลยงงว่าทำไม

รบกวนผู้รู้ช่วยตอบด้วยนะครับ ขอบคุณครับ

และผมอยากได้อาจารย์ซักคน คิดค่าใช้จ่ายได้เลยครับ (ไม่ต้องสอน แค่คอยตอบและช่วยผมแก้ปัญหาพอครับ)
เกี่ยวกับ VB.2010 + PostgreSQL

Code
Sub SaveDataProduct()
        Try
            Dim i As Integer
            i = DataGridView1.CurrentRow.Index
            DataGridView1.Item(1, i).Value = txtinternalcode.Text
            DataGridView1.Item(3, i).Value = txtdescription.Text
            DataGridView1.Item(4, i).Value = txtshortdesc.Text
            DataGridView1.Item(5, i).Value = txtunit.Text
            DataGridView1.Item(6, i).Value = txtgroup1.Text
            DataGridView1.Item(10, i).Value = txtvattype.Text
            DataGridView1.Item(11, i).Value = (txtproducttype.Text)
            DataGridView1.Item(13, i).Value = txtcosttype.Text
            'If CheckBox1.Checked = True Then DataGridView1.Item(9, i).Value = 1
            'If CheckBox1.Checked = False Then DataGridView1.Item(9, i).Value = 0
            adpt.Update(ds)
            MsgBox("บันทึกข้อมูลสำเร็จ", MsgBoxStyle.OkOnly, "OK")
        Catch ex As Exception
            Me.Text = "รายละเอียดสินค้า : บันทึกข้อมูล Error : " & ex.Message
        End Try
    End Sub




Tag : .NET, PostgreSQL, VBScript, Win (Windows App), VS 2010 (.NET 4.x), Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-10-14 10:23:16 By : idolman View : 1715 Reply : 50
 

 

No. 1

Guest


นายเอา ds ไปอัฟเดต

แล้วไหนโค้ดตรงส่วนที่ทำงานอัฟเดตค่าของ ds ล่ะ

เห็นนายอัฟเดตแต่ค่าของ datagridview






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 13:55:43 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 2

Guest


ตอบความคิดเห็นที่ : 1 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-10-14 13:55:43
รายละเอียดของการตอบ ::
รบกวนขอแนวทางนะครับ

ปัญหาที่เกิดคือ จากโค้ดนี้ มันอับเดทได้
- กดแก้ไข record "A" กด save (ไม่บันทึก)
- กดแก้ไข record "B" กด save (ดันบันทึก A แต่ว่าไม่บันทึก B)
- กดแก้ไข record "C" ต่อ แล้วกด save (ก็บันทึก B แต่ไม่บันทึก C)

มันจะเป็นแบบนี้นะครับ ผมไม่รุ้ว่ามันผิดตรงไหน งงมากมาย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 14:13:27 By : idolman
 

 

No. 3



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



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


อาจเป็นเพราะว่า
ตอนที่กด update
row นั้นยังอยู่ใน edit mode (ยังไม่ได้อัพเดท)
หรือปล่าวครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 14:22:07 By : fonfire
 


 

No. 4

Guest


นายอัฟเดตข้อมูลด้วย event ไหนของ datagridview ???

ปล. ถ้าเป็นเรา เราจะแก้ข้อมูลให้เสร็จก่อน

โดยข้อมูลแถวที่แก้จะ hilight เอาไว้ แล้วกดปุ่ม save ทีเดียว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 14:38:54 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 5

Guest


ยังไงอะคับ - -''
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 14:49:02 By : idolman
 


 

No. 6

Guest


โค้ดยาวไหม ลองเอามาดูซิ

ใส่ใน vb code ด้วยนะ จะได้อยู่ง่ายๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 14:58:11 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 7



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



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


ลองเพิ่ม
msgbox(ds.getchange.rows.count) ---->>> เขียนผิดขออภัย จำได้ว่าคำสั่งประมาณนี้
ก่อน
adpt.Update(ds)
หน่อยสิครับ

แล้วดูว่า ได้จำนวน row เท่ากับที่อยากได้หรือปล่าว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 15:01:42 By : fonfire
 


 

No. 8

Guest


Code (VB.NET)
    Private com1 As New OdbcConnection(con)
    Private adpt As New OdbcDataAdapter("SELECT * FROM tbproduct_file", com1)
    Private ds As New DataTable
    Private cmdBuilder As OdbcCommandBuilder

    Private Sub frmProductDescription_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            GenGridView()
            cmdBuilder = New OdbcCommandBuilder(adpt)
            adpt.InsertCommand = cmdBuilder.GetInsertCommand
            adpt.UpdateCommand = cmdBuilder.GetUpdateCommand
            adpt.DeleteCommand = cmdBuilder.GetDeleteCommand
            adpt.Fill(ds)
            DataGridView1.DataSource = ds

            Me.WindowState = FormWindowState.Maximized
        Catch ex As Exception
            Me.Text = "รายละเอียดสินค้า : " & ex.Message

            Exit Sub
        End Try
    End Sub

    Sub SaveDataProduct()
        Try
            Dim i As Integer
            i = DataGridView1.CurrentRow.Index
            DataGridView1.Item(1, i).Value = txtinternalcode.Text
            DataGridView1.Item(3, i).Value = txtdescription.Text
            DataGridView1.Item(4, i).Value = txtshortdesc.Text
            DataGridView1.Item(5, i).Value = txtunit.Text
            DataGridView1.Item(6, i).Value = txtgroup1.Text
            DataGridView1.Item(10, i).Value = txtvattype.Text
            DataGridView1.Item(11, i).Value = txtproducttype.Text
            DataGridView1.Item(13, i).Value = txtcosttype.Text
            If CheckBox1.Checked = True Then DataGridView1.Item(9, i).Value = 1
            If CheckBox1.Checked = False Then DataGridView1.Item(9, i).Value = 0

            'MsgBox(DataGridView1.Rows.Count())
            adpt.Update(ds)

            MsgBox("บันทึกข้อมูลสำเร็จ", MsgBoxStyle.OkOnly, "OK")
        Catch ex As Exception
            Me.Text = "รายละเอียดสินค้า : บันทึกข้อมูล Error : " & ex.Message
        End Try
    End Sub


โค้ดตามนี้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 15:49:20 By : idolman
 


 

No. 9

Guest


เอ่อ ตกลงจะถามหรือจะกั๊กครับ ทำไมหวงโค้ดจัง

ไม่ตอบแระ เซ็ง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 16:12:28 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 10

Guest


ตอบความคิดเห็นที่ : 9 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-10-14 16:12:28
รายละเอียดของการตอบ ::
ก็มันมีแค่นี้นะครับ - -'' อันอื่นมันก็ไม่เกี่ยวอะไร

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-14 17:08:04 By : idolman
 


 

No. 11

Guest


เราดูแล้ว โค้ดแค่นี้มันก็พอรันได้แหละ

แต่จะให้ทำงานอย่างที่นายต้องการไม่ได้แน่นอน

นายจะสั่ง SaveDataProduct จาก form load เลยเหรอ

แต่ดูแล้วมันก็ไม่มีคำสั่งอยู่ดี เอาเป็นว่าเราทำไม่ได้แล้วกัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 08:11:19 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 12

Guest


คำว่า "อาจารย์" ของคุณ ผมไม่รู้ว่าความหมายมันจะตรงกับสิ่งที่ผมเข้าใจหรือไม่
(ผมพิมพ์สดสด ผมไม่ได้กรองความคิดและคำพูด)

สมมุติว่า อาจารย์ หมายความว่า
1. มีเงิน(...) เหลือเฟือ อันนี้ผมไม่มี ผมจน และจนจริงฯ
2. มีกินเกิน 3 มื้อต่อวัน อันนี้ผมไม่มี ผมอดทุกมื้อทุกทุกวัน
...


เข้าประเด็นที่ 1. เงินของคุณ
ถ้าคุณเป็นนักศึกษา ต่อให้คุณเอาเงินล้านมากองตรงหน้าและบอกผมว่า พี่เอาไปเลยครับ ผมยกให้ ผมก็ไม่เอา
ถ้าคุณเป็นพนักงานบริษัท ต่อให้คุณเอาเงินล้านมากองตรงหน้าแต่มันเป็นเงินของคุณ พี่เอาไปเลยครับ ผมยกให้ ผมก็ไม่เอา
ถ้าบริษัทของคุณ ยกเงินมากองตรงหน้าของผม อย่างนี้ ผมเอาครับ รีบเอาเลยครับ ผมไม่ปฏิเสธเงินแบบนี้

ผมอธิบายให้คุณเข้าใจในเบื้องต้น เพื่อให้รู้ว่า ทำไมผมถึงจน และจนจริงจริง โดยไม่ต้องเสแสร้งหรือว่าแกล้งทำ

เข้าประเด็นที่ 2. งานของคุณ
Overviews SourceCode ของคุณมันผิดตั้งแต่บรรทัดแรกเลยครับ วิธีการคิดก็ผิดด้วยครับ
บรรทัดที่ 1 - 4 คุณจะใช้คำสั่งอะไร คุณต้องเข้าใจอย่างลึกซึ้งว่ามันทำงานอย่างไร?
ผมเดาเอา (ถูกด้วย) ว่าคุณไม่เข้าใจมันอย่างลึกซึ้ง ผลลัพธ์ที่ตามมาก็อย่างที่คุณเห็น

ถ้าคุณถามผมว่า ในสมองของผมมันมีอะไรอยู่ ผมตอบคุณได้เป็นข้อข้อดังนี้ครับ
1. กางเกงในเก่าเก่าของภรรยาผม เมื่อ 5 ปีที่แล้ว ทุกวันนี้หล่อนก็ยังสวมใส่อยู่
2. มี วิศวกรไฟฟ้า + วิศกรเครื่องกล อยู่ด้วย (อันนี้ผมใช้เวลาศึกษามาแค่ครึ่งเดือน ลองนึกว่าถ้าผมใช้เวลามากกว่านี้ล่ะ)
2.1-1 เอาตั้งแต่หน้าประตูโรงงาน ผมออกแบบได้สะบายง่ายพอพอกับที่ผมเขียนโปรแกรมได้
2.1-2 ยกตัวอย่างเช่นระบบงาน เงินเดือน (Payroll) ผมใช้คำสั่ง SQL Query เดียวเท่านั้นแหละ
ตอบโจทย์ได้ทั้งหมด ผมรู้ใส้รู้พุงมันหมดแหละครับ วันนี้ พรุ่งนี้ อาทิตย์นี้ เดือนนี้ ปีนี้ ปีหน้า
ผมบอกผู้จัดการฝ่ายบุคคลได้แบบสะบายสะบาย ครับ


ผัง (Flowchart) มันฝังอยู่ในหัวสมองของผมแบบไม่เคยจางหาย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 09:23:46 By : ผ่านมา
 


 

No. 13

Guest


ตอนนี้ผม อยากรู้ให้มากที่สุด (Automations Industrial)
ผมหลงไหลในศาสตร์ความรู้ด้าน วิศวกรรรมไฟ้ฟ้าและเครื่องกล จนผมโงหัวไม่ขึ้นครับ
ดาราทีวีทุกซ่อง มานั่งตักของผม ผมยังไม่เคยสนในเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 09:33:52 By : ผ่านมา
 


 

No. 14



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



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


ลองเปลี่ยนเป็น ไปแก้ที่ ds แทน

Sub SaveDataProduct()
Try
Dim i As Integer
i = DataGridView1.CurrentRow.Index
DataGridView1.Item(1, i).Value = txtinternalcode.Text ------>>>> ds.row(i)(1)=txtinternalcode.Text
DataGridView1.Item(3, i).Value = txtdescription.Text
DataGridView1.Item(4, i).Value = txtshortdesc.Text
DataGridView1.Item(5, i).Value = txtunit.Text
DataGridView1.Item(6, i).Value = txtgroup1.Text
DataGridView1.Item(10, i).Value = txtvattype.Text
DataGridView1.Item(11, i).Value = txtproducttype.Text
DataGridView1.Item(13, i).Value = txtcosttype.Text
If CheckBox1.Checked = True Then DataGridView1.Item(9, i).Value = 1
If CheckBox1.Checked = False Then DataGridView1.Item(9, i).Value = 0

'MsgBox(DataGridView1.Rows.Count())
adpt.Update(ds)

MsgBox("บันทึกข้อมูลสำเร็จ", MsgBoxStyle.OkOnly, "OK")
Catch ex As Exception
Me.Text = "รายละเอียดสินค้า : บันทึกข้อมูล Error : " & ex.Message
End Try
End Sub


ประวัติการแก้ไข
2013-10-15 10:43:06
2013-10-15 10:52:47
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 09:34:54 By : fonfire
 


 

No. 15

Guest


ผมเสนอราคาแล้วได้งาน (ไม่มี)

ตัวอย่างผลงานที่ที่ผมนำเสนอแล้วไม่เคยได้งาน บานเบอะเลยนับไม่ไหว
อันนี้ของจริงนะเนี่ย (จริงฯ มันต้องต่อพ่วงเครื่องชั่งน้ำหนัก 4 ตัว เครื่องพิมพ์อีก 38 ตัวและอื่นฯอีก เช่น Digital I/O)
wh08

และก็นี่อีก

wh9


[x] กรุณาอย่าถามข้าพเจ้าว่าทำไม่ถึงไม่ได้งาน ถ้าข้าพเจ้าทราบ (ล่วงหน้า) รวยไปตั้งนานแล้ว (ไม่จนดักดานเหมือนทุกวันนี้ครับ)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 10:13:02 By : ผ่านมา
 


 

No. 16

Guest


อะไรของนายนะครับ เว็บบอร์ดมีไว้โพสถามตอบ เพื่อความรู้ เพื่อให้เข้าใจ แบ่งปันความรู้

ผมไม่รู้ผมก็สอบถามผู้รู้ คุณมาใส่ๆ ผม ผมก็ไม่เข้าใจนะครับ

ส่วนเรื่องหาคนสอน และตอบปัญหา การจ้างสอนเขียนโปรแกรมก็เป็นปกติธุรกิจ

แต่แค่ว่าไม่ต้องมานั่งสอนทุกอย่างทุกเรื่อง แค่ตอบปัญหาผมผ่านเมลเป็นเวลา

แล้วก็ต้องมีค่าสอนค่าวิชากัน มันก็ปกติ คุณยกโน่นนี่มา ผมก็ไม่เข้าใจ

คุณเข้าใจมั้ยหละครับว่า webboard มันมีไว้ทำอะไร แต่มันจะมีคนบางกลุ่มที่คอยมาอ่านแล้วก็บอกว่า "สะกดผิดมั่ง" จับผิดโน่นนี่

แล้วก็ด่าๆ คนโพส ผมก็ไม่เข้าใจนะครับ

ต้องขอโทษด้วยที่โพสอะไรไปแล้วทำให้คุณมีปัญหากับสิ่งที่ผมโพส
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 10:36:59 By : idolman
 


 

No. 17

Guest


ตอบความคิดเห็นที่ : 16 เขียนโดย : idolman เมื่อวันที่ 2013-10-15 10:36:59
รายละเอียดของการตอบ ::


สิ่งที่คุณโพสมา ผมเห็นโอกาสและผมคิดว่าผมจะได้มีงานทำบ้าง
ผมต้องขอโทษคุณด้วยครับ


ปล. และนี่ก็เป็นอีกครั้งหนึ่งที่ผมไม่ได้งานครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 10:56:15 By : ผ่านมา
 


 

No. 18

Guest


ตอบความคิดเห็นที่ : 16 เขียนโดย : idolman เมื่อวันที่ 2013-10-15 10:36:59
รายละเอียดของการตอบ ::


สิ่งที่คุณโพสมา ผมเห็นโอกาสและผมคิดว่าผมจะได้มีงานทำบ้าง
ผมต้องขอโทษคุณด้วยครับ


ปล. และนี่ก็เป็นอีกครั้งหนึ่งที่ผมไม่ได้งานครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 10:56:21 By : ผ่านมา
 


 

No. 19



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



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



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 10:58:23 By : fonfire
 


 

No. 20

Guest


ตอบความคิดเห็นที่ : 11 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-10-15 08:11:19
รายละเอียดของการตอบ ::


ผมมีระบบไทยแท้อยู่ในมือ ผ่านความถูกต้องโดยผู้จัดการฝ่ายบัญชี มามากนับบริษัทได้
(ไม่ใช่เขียนกันเอง แล้วคิดว่าดีที่สุดแล้ว)

อทิเช่น
ระบบซื้อ ระบบขาย ระบบสินค้าคลัง รับเงิน/จ่ายเงิน ระบบบัญชี ระบบบริหารจัดการผลิต


ผมจะเขียนขึ้นมาใหม่ทั้งหมดและผมจะเอาขึ้น www (เขียนกันแค่ 2 คนนี่แหละ) คุณจะกรุณามาช่วยผมไหม
ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 11:22:42 By : ผ่านมา
 


 

No. 21

Guest


ตอบความคิดเห็นที่ : 11 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-10-15 08:11:19
รายละเอียดของการตอบ ::


ระบบบริหารจัดการผลิต ที่เหนือกว่าคำว่า โปรแกรมมิ่ง นั่นคือ
คนเขียนโปรแกรม รู้แม้กระทั่ง สายไฟทุกเส้นในโรงงานอุตสากรรม มันต่ออย่างไร (ภายใน/ภายนอก)
เชื่อมต่อกับ สายพานลำเลียง เครื่องชั่ง หรืออุปกรณ์อื่นฯ (สั่งอย่างไร) เช่น

NC หรือ NO
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 11:32:25 By : ผ่านมา
 


 

No. 22

Guest


ตอบความคิดเห็นที่ : 14 เขียนโดย : fonfire เมื่อวันที่ 2013-10-15 09:34:54
รายละเอียดของการตอบ ::
ขอบคุณครับ FONFIRE
ได้แล้วนะครับ
Code (VB.NET)
            ds.Tables("tbproduct").Rows(i)(1) = txtinternalcode.Text
            ds.Tables("tbproduct").Rows(i)(3) = txtdescription.Text
            ds.Tables("tbproduct").Rows(i)(4) = txtshortdesc.Text
            ds.Tables("tbproduct").Rows(i)(5) = txtunit.Text
            ds.Tables("tbproduct").Rows(i)(6) = txtgroup1.Text
            ds.Tables("tbproduct").Rows(i)(10) = txtvattype.Text
            ds.Tables("tbproduct").Rows(i)(11) = txtproducttype.Text
            ds.Tables("tbproduct").Rows(i)(13) = txtcosttype.Text
            If CheckBox1.Checked = True Then ds.Tables("tbproduct").Rows(i)(9) = 1
            If CheckBox1.Checked = False Then ds.Tables("tbproduct").Rows(i)(9) = 0

            'MsgBox(DataGridView1.Rows.Count())
            adpt.Update(ds, "tbproduct")




แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 11:52:13 By : idolman
 


 

No. 23

Guest


ตอบความคิดเห็นที่ : 21 เขียนโดย : ผ่านมา เมื่อวันที่ 2013-10-15 11:32:25
รายละเอียดของการตอบ ::


เดี๋ยวคุณงง
NC คือ Normal Close
NO คือ Normal Open
(สาย 3 เส้น เอาไว้สั่งอุปกรณ์ต่าง ให้หยุด/ให้ทำงาน) เช่น ระบบงานพิมพ์ fault เราอาจจำเป็นต้องสั่ง
ให้ระบบสายพานลำเีลียง (Conveyer) หยุด หรือให้ Matchine ตัวอื่นฯ หยุด ประมาณนี้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 11:54:55 By : ผ่านมา
 


 

No. 24

Guest


ตอบความคิดเห็นที่ : 23 เขียนโดย : ผ่านมา เมื่อวันที่ 2013-10-15 11:54:55
รายละเอียดของการตอบ ::


ผมอธิบายเพิ่มเติมอีกนิดหนึ่ง (ภาพรวม) โดยปกติแล้วในโรงงานอุตสาหกรรม อุปกรณ์ทุกชิ้นจะต้องทนได้ในทุกสภาพแวดล้อม เช่น
ฝุ่น, ความร้อน เป็นต้น และ หยุดไม่ได้

เพราะฉะนั้น การเชื่อมต่ออุปกรณ์ทุกชิ้น จะต้องดูคู่มือเป็นสำคัญว่ามันต่ออย่างไร มันทำงานอย่างไร แต่ส่วนใหญ่แล้วใช้
TTL เป็นหลัก (แรงดันไฟฟ้า +- 3V เป็นต้น) ผมยกตัวอย่าง เครื่องพิมพ์เร็ว (อาจจะมากถึง 1,000 ชิ้น/นาที) มันจะมีการเชื่อมต่อดังนี้

ก็บอกแล้วว่าเกรดสูงอุปกรณ์ เพื่อใช้ในโรงงาน มันต้องมีดังนี้
USB/RS232/RS485 External Connection Terminal Block ยังงัยยังงัย มันต้องมีอย่างน้อย 2 ฺBlock ขี้นไป
และหนึ่งในนั้นมันจะมีช่อง C, O, N หรือเรียกว่าง่ายฯว่า วงจร Relay เอาไว้บอกให้อุปกรณ์อื่นฯได้รับรู้ว่า
ฉันพร้อมนะ ฉันงงอยู่ เป็นต้น

และอีก Block หนึ่งอาจจะเป็นเอาไว้จับสัญญาญต่างฯ เช่น ปิด/เปิด/Hold/Setup/พิมพ์เสร็จแล้ว/อะไร เป็นต้น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 12:07:15 By : ผ่านมา
 


 

No. 25

Guest


ตอบความคิดเห็นที่ : 24 เขียนโดย : ผ่านมา เมื่อวันที่ 2013-10-15 12:07:15
รายละเอียดของการตอบ ::


ขยายความ Block ที่ 1 อาจมีมากถึง 17 ช่อง (Signal) ผมอาจจะ้ใช้ 3 ช่อง เสียบกับอุปกรณ์ เซ็นเซอร์ (sensor) เอาไว้ Mark วัสดุที่ไหลมา
ตามสายพานการผลิต แน่นอนว่าผมต้องเขียนโปรแกรมคำนวณ ความเร็วรอบของ sorvor motor เพื่อที่จะสั่งให้มันพิมพ์
วิธีการพิมพ์มันก็แล้วแต่เราจะทำอย่างไร แต่ที่แน่แน่ มันพิมพ์ได้โดยที่ไม่ต้องสำผัสอุปกรณ์ มันพ่นเอา (Inkjet)

ประมาณนี้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 12:18:08 By : ผ่านมา
 


 

No. 26

Guest


ตอบความคิดเห็นที่ : 25 เขียนโดย : ผ่านมา เมื่อวันที่ 2013-10-15 12:18:08
รายละเอียดของการตอบ ::


ผมลืมบอกไปว่า สไตล์การเขียนโปรแกรมของผม สมมุติว่านะ ผมให้เด็กออกแบบหน้าจอมา เช่น ลาก Controls ต่างฯ
มาวาง จัดให้สวยงาม แค่นี้ผมก็ยิ้มแล้ว เพราะเวลาใช้จริงฯ มันอาจจะไม่เป็นอย่างที่ได้ออกแบบหน้าจอเอาไว้ก็ได้

ผมอ่าน xxx.designer.xx มาวนลูปแทนค่าลงไป
เอา Controls ของผม ยัดใส่ ทำคล้ายวิซาต (wizard) ตรงนี้คิดตามให้ทันนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 12:36:25 By : ผ่านมา
 


 

No. 27

Guest


พูดง่ายง่ายว่า หน้าจอที่ได้ออกแบบเอาไว้แล้วนั้น ผมไม่ได้ใช้งานเลยนะครับ (เป็นสะพานให้ผมเฉยเฉย)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 12:37:39 By : ผ่านมา
 


 

No. 28

Guest


สไตล์การเขียนของผมมั่นใจว่า ในเมืองไทยนี้ มีคนที่ใช้ไม่กี่คน ที่ผมรู้
อยู่ที่จ. นครราชสีมา หนึ่งท่าน นอกนั้นนึกไม่ออก (ไม่มีเลย)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 12:47:09 By : ผ่านมา
 


 

No. 29



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



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


ป๊าาาาาดดดดดดดดด
บ่เซาจั๊กเทือ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 12:47:25 By : fonfire
 


 

No. 30

Guest


ตอบความคิดเห็นที่ : 29 เขียนโดย : fonfire เมื่อวันที่ 2013-10-15 12:47:25
รายละเอียดของการตอบ ::


กระผมไม่รู้ความหมาย แต่ถ้าให้ผมเดาคงไม่ใช่คำชมแน่นอนครับ ถึงอย่างไรผมก็ไม่โกธร
เพราะว่าผมไม่มีเวลาเหลือให้กับมันอีกแล้ว (ความโกรธ) พูดให้เข้าใจง่ายฯ ผมเป็นคนหน้าด้านนั่นแหละครับ +55555


ตัวอย่างการเขียน สไตล์ Store Procedure ของผม

Code (SQL)
USE [xDB]
GO
/****** Object:  StoredProcedure [dbo].[xGen]    Script Date: 10/15/1900 12:52:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		โชคไม่เคยเข้าข้าง (กู)
-- Create date: 1900-07-10
-- Description:	
-- =============================================
ALTER PROCEDURE [dbo].[ClassGen] 
	-- Add the parameters for the stored procedure here
	@p1 int = 0, 
	@p2 int = 0
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

declare @field table (fieldname varchar(50), fieldtype varchar(50))
declare @table_name varchar(50)
set @table_name = 'msrUsers'  -- this is the table name

insert into @field
Select sc.name, st.name
from 
	sysobjects so, 
	syscolumns sc,
	systypes st
where 
	so.id = sc.id 
	and so.xtype = 'U'
	and so.name = @table_name
	and st.xtype = sc.xtype

print 'Public Class ' + @table_name

declare @fieldname varchar(50)
declare @fieldtype varchar(50)
declare @constructor varchar(500)
declare @assign varchar(500)

declare cur cursor for
select fieldname, fieldtype
from @field

open cur

fetch next from cur
into @fieldname, @fieldtype

set @constructor = ''
set @assign = ''

while @@fetch_status = 0
begin
	set @fieldtype = case @fieldtype
			when 'int' then 'Integer'
			when 'smallint' then 'Int16'
			when 'tinyint' then 'Short'
			when 'varchar' then 'String'
			when 'nvarchar' then 'String'
			when 'bit' then 'Boolean'
			when 'float' then 'Double'
			when 'datetime' then 'DateTime'
			else @fieldtype
		end

	set @constructor = @constructor + 'ByVal v' + @fieldname + ' AS ' + @fieldtype + ', '
	set @assign = @assign + '_' + @fieldname + ' = v' + @fieldname + ' : '

	print ''
	print 'Private _' + @fieldname + ' AS ' + @fieldtype
	print 'Public Property ' + @fieldname + '() AS ' + @fieldtype
	print '   Get'
	print '     return _' + @fieldname
	print '   End Get'
	print '   Set (value AS ' + @fieldtype + ')'
	print '     _' + @fieldname + ' = value'
	print '   End Set'
	print 'End Property'
	print ''

	fetch next from cur
	into @fieldname, @fieldtype
end

print 'Public Sub New(' + substring(@constructor, 0, len(@constructor)) + ')'
print '   ' + substring(@assign, 0, len(@assign) -1)
print 'End Sub'

print 'End Class'
END


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 12:57:00 By : ผ่านมา
 


 

No. 31

Guest


ผมลืมบอกไปว่า #NO 30 ผมเอามาจากเมืองฝรั่งเขา ผมนั่งดูมันอยู่ตั้งนาน มันทำอะไรของมันว่ะ
พอผมพิจารณาอย่างถ้วนถี่ ใช่เลย ผมก็ประยุกต์ใช้เอา


พอพูดถึงคำว่าประยุกต์ ก็ย้อนกลับไป ที่ Block1, Block สมมุติว่า มันไม่มีล่ะ มันเป็นไปได้ครับ
คำตอบคือ บ้านหม้อ, Sila Researdh, ETT, และอีกเยอะเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 13:10:12 By : ผ่านมา
 


 

No. 32



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



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




ยังใช้ Join แบบเก่าอยู่เหรอครับ แสดงว่าลุงต้องเก๋าพอสมควรเลย

SP Gen Class ก็เข้าใจน่ะครับ ตามประสางู ๆ ปลา ๆ ของผม
ว่าแต่ว่าทำ parameter ไว้ทำไมเหรอครับ ไม่เห็นใช้เลย

ตัว table name ไม่รับจาก parameter อ่ะครับ
ฝั่งไว้ใน code ดีกว่าเหรอครับ

แล้วทำไมต้องทำ var table ด้วยในมือ query ผ่าน cursor ได้เลย

ถามเป็นความรู้น่ะครับ


ประวัติการแก้ไข
2013-10-15 13:16:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 13:11:27 By : fonfire
 


 

No. 33



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



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


http://www.sqlservercentral.com/Forums/Topic516496-23-1.aspx


ประวัติการแก้ไข
2013-10-15 13:25:47
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 13:21:02 By : fonfire
 


 

No. 34

Guest


ตอบความคิดเห็นที่ : 32 เขียนโดย : fonfire เมื่อวันที่ 2013-10-15 13:11:27
รายละเอียดของการตอบ ::


ผมดีใจที่คุณเข้าใจ (ความรู้มันอยุ่ที่ตัวของคุณ) ที่เหลือก็อยู่ที่การประยุกต์
ผมขยายความคำว่า "เก่า" จะพูดว่ามันล้าสมัยมันก็ไม่ผิดแต่มันก็ไม่ถูกต้องเสมอไปครับ ยกตัวอย่างเช่น

RS232 ก็ยังใช้กันอยู่ทั่วฯไป ตามโรงงานต่างฯ ทำไมไม่เปลี่ยนเป็น USB/วิธีอื่นฯ ที่ดีกว่าล่ะ
ทุกโรงงาน (คน) ย่อมมีเหตุผลของตัวเองครับ ระบบไม่เหมือนกัน หน้างานไม่เหมือนกัน ภาระค่าใช้จ่ายและอีกจิปาถะ

การเปลี่ยนแปลงระบบอย่าลืมนะครับ ทำแล้วมันต้องดีกว่าเดิม แล้วใครจะรัปประกันว่ามันดีกว่าเดิม
อย่าลืมนะครับแค่เราคนเดียว แต่จริงฯแล้วมันมีอีก ภาระที่อยู่ข้างหลังมันมีหลายคน เช่น เมีย, ลูก, etc
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 13:29:33 By : ผ่านมา
 


 

No. 35



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



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


ผมบอกว่า เก๋า ครับ ไม่ใช่ เก่า


ประวัติการแก้ไข
2013-10-15 13:34:26
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 13:30:45 By : fonfire
 


 

No. 36



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



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



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 13:46:47 By : watcharop
 


 

No. 37

Guest


ตอบความคิดเห็นที่ : 36 เขียนโดย : watcharop เมื่อวันที่ 2013-10-15 13:46:47
รายละเอียดของการตอบ ::
อันนี้ผมก็ไม่รู้ความหมายของคุณ ผมก็เลยไม่รู้จะประยุกต์ใช้งานอย่างไรครับ
ผมสรุปว่า สไตล์การเขียนโปรแกรม มันก็ของใครของมัน วิธีไหนที่ดีกว่าก็เลือกเอาครับ ผมเป็นกลางในเรื่องนี้พอสมควร
รวมถึงเรื่องอื่นฯ ด้วย



หวังว่ากระทู้นี้คงจบลงด้วยดี อย่างน้อยผมก็ได้รู้ว่าทำไมผมถึงไม่ได้งานโน้นงานนี้
โชคดีทุกฯท่าน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 14:05:53 By : ผ่านมา
 


 

No. 38



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



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


ตอบความคิดเห็นที่ : 37 เขียนโดย : ผ่านมา เมื่อวันที่ 2013-10-15 14:05:53
รายละเอียดของการตอบ ::
เข้าใจว่าเป็น sp เอาไว้สร้าง class แต่กำลังนึกอยู่ว่าจะเอาไปประยุกต์ยังไง



ประวัติการแก้ไข
2013-10-15 14:30:39
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 14:29:20 By : watcharop
 


 

No. 39

Guest


รวมคำสั่ง SQL สไตล์ของผม
ผมจำอะไรได้ไม่หมดครับ ผมสงสัยผมก็จะรันดู แล้วผมก็นึกอ๋อ ตัดแปะมั่ง เอามาจาก www ผมจำไม่ได้จริงฯครับ
เผื่อใครหลงทางไปมาอ่านเจอตรงนี้ และประยุกต์ใช้ได้บ้าง

อันนี้คือสิ่งทดแทนคำขอโทษเจ้าของกระทู้ จากผมคนไร้นาม

Code (SQL)

USE tempdb
GO

IF OBJECT_ID(N'tempdb..#A') IS NULL --IS NOT NULL
	BEGIN
	 CREATE TABLE #A (ID int)
	 INSERT INTO #A VALUES (1), (2), (3)
	END
SELECT * FROM #A	
	
IF OBJECT_ID(N'tempdb..#B') IS NULL --IS NOT NULL
	BEGIN
	 CREATE TABLE #B (ID int)
	 INSERT INTO #B VALUES (2), (3), (4)
	END
SELECT * FROM #B	
/*
DECLARE #A TABLE (ID int)
DECLARE #B TABLE (ID int)

INSERT INTO #A VALUES (2),(3),(4)
INSERT INTO #B VALUES (2),(3),(4)
*/

SELECT * FROM #A x FULL OUTER JOIN #B y ON x.ID = y.ID
/*----------- -----------
1           NULL
2           2
3           3
NULL        4
(4 row(s) affected)
*/

SELECT * FROM #A x JOIN #B y ON x.ID = y.ID
/*----------- -----------
2           2
3           3
(2 row(s) affected)
*/

SELECT * FROM #A x CROSS JOIN #B y
/*----------- -----------
1           2
2           2
3           2
1           3
2           3
3           3
1           4
2           4
3           4
(9 row(s) affected)
*/

/* 
That is not legal because A.Val is out of scope within the derived table; 
this is because the derived table is evaluated independently of the other tables in the SELECT.  
To limit the rows in table B so that B.Val = A.Val, 
we must do that outside of the derived table via a join or in the criteria

SELECT * FROM #A a CROSS JOIN (SELECT x.ID FROM #B x WHERE x.ID = a.ID) b
*/

SELECT a.*, b.* FROM #A a CROSS JOIN (SELECT * FROM #B) b
WHERE a.ID = b.ID
/*
----------- -----------
2           2
3           3
(2 row(s) affected)
*/


/*
Summary : Full Outer Join
all matching rows (inner join) + all rows from A not matching B 
                               + all rows from B not matching A 
(it applies actually a left and a right join at the same time)
*/

/*
Summary : Cross Join 
is a cartesian product, so this will in fact combine all rows from A with all rows from B
*/

/*OK Finally 
  cross join is a*b rows,
  full outer join gives matched and unmatched rows
*/

SELECT #A.*, b.* FROM #A CROSS APPLY (SELECT #B.ID FROM #B ) b 
SELECT * FROM #A CROSS APPLY (SELECT TOP 1 * FROM #B ORDER BY ID DESC) b 
/*
SELECT #A.*, b.ID FROM #A CROSS JOIN (SELECT #B.ID FROM #B WHERE #B.ID = #A.ID) b
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "#A.ID" could not be bound.
*/
SELECT #A.*, b.ID FROM #A CROSS APPLY (SELECT #B.ID FROM #B WHERE #B.ID = #A.ID) b


-- CROSS APPLY also allows us to quickly get columns from the "previous" row 
-- in a table quite easily:

SELECT a.*, Prev.*
FROM #A a
CROSS APPLY 
(
  SELECT TOP 1 * FROM #A p 
  WHERE p.ID < a.ID ORDER BY ID DESC
 ) Prev

/*
Note that the above CROSS APPLY will not return 
any orders without a previous order; 
we would use OUTER APPLY to ensure that all orders are returned even 
if no previous orders exist:
*/
SELECT a.*, Prev.*
FROM #A a
OUTER APPLY 
(
  SELECT TOP 1 * FROM #A p 
  WHERE p.ID < a.ID ORDER BY ID DESC
 ) Prev
 
 
 IF OBJECT_ID(N'tempdb..#A') IS NOT NULL
	BEGIN
		DECLARE @ValueA int;
	END
 IF OBJECT_ID(N'tempdb..#B') IS NOT NULL
	BEGIN
	    DECLARE @ValueB int;
	END

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 14:32:23 By : ผ่านมา
 


 

No. 40

Guest


ตอบความคิดเห็นที่ : 35 เขียนโดย : fonfire เมื่อวันที่ 2013-10-15 13:30:45
รายละเอียดของการตอบ ::


ผมนึกออกแล้วว่า คุณบอกว่าไม่จำเป็นต้องใช้ PIVOT/UNPIVOT ก็ได้ในหัวข้อกระทู้ที่ #???
ผมมีอีกวิธีหนึ่งคุณใช้ไอ้นี่แทนก็ได้ครับ
OUTER APPLY ทดแทนคำสั่ง PIVOT/UNPIVOT เร็วกว่าเห็นฯ จึ๊ํกฯฯฯ เลยครับ

และก็อีกอย่างหนึ่งเวลาคุณ ORDER BY อย่าทำใน QUERY ให้ทำใน Temp Table เร็วปึ๊ดเลยครับ > 10 เท่า ครับ

โชคดีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 15:01:17 By : ผ่านมา
 


 

No. 41

Guest


ตอบความคิดเห็นที่ : 40 เขียนโดย : ผ่านมา เมื่อวันที่ 2013-10-15 15:01:17
รายละเอียดของการตอบ ::


ผมลืมบอกอีกแล้วครับ จาก#NO 39 บรรทัดที่ 118 - 124
มันก็คือการ Select แบบ cummulative (ยอดสะสม)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 15:05:59 By : ผ่านมา
 


 

No. 42

Guest


ตอบความคิดเห็นที่ : 38 เขียนโดย : watcharop เมื่อวันที่ 2013-10-15 14:29:20
รายละเอียดของการตอบ ::


ประมาณนี้มั้งครับ +55555

Code (VB.NET)
    Public Shared Function Write2Database(ByVal BranchID As Integer, ByVal sysID As Short,
                                          ByVal MenuID As Integer, ByVal ErrorAction As String,
                                          ByVal ErrorDescription As String, ByVal ErrorDateTime As DateTime,
                                          ByVal ErrorUserID As Integer, ByVal ErrorIPAddress As String) As Boolean
        Dim suc As Boolean = False
        Try
            Dim value As New List(Of WL_Model.sysErrorLog) From {New WL_Model.sysErrorLog With {.BranchID = BranchID,
                                                                                                .sysID = sysID,
                                                                                                .MenuID = MenuID,
                                                                                                .ErrorAction = ErrorAction,
                                                                                                .ErrorDescription = ErrorDescription,
                                                                                                .ErrorDateTime = ErrorDateTime,
                                                                                                .ErrorUserID = ErrorUserID,
                                                                                                .ErrorIPAddress = ErrorIPAddress
                                                                                                }
                                                                  }

            WL_Database.WL_SQLHelperExt.SetData(WL_BLL.sysErrorLog.SetInsertCommand(value))
            suc = True
        Catch ex As Exception
            'Write Error log.
        End Try
        Return suc
    End Function

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 16:00:27 By : ผ่านมา
 


 

No. 43

Guest


มีอีหนูคนหนึ่งถามว่า ไม่ผ่าน DS (DataSet) ต้องทำอย่างไร?
คำตอบคือ #NO 42 ไงครับ ประยุกต์นิดหน่อย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 16:04:36 By : ผ่านมา
 


 

No. 44



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



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


555555 คิดถึง พี่ฟง จริง ๆ เลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 17:17:35 By : fonfire
 


 

No. 45

Guest


ตอบความคิดเห็นที่ : 44 เขียนโดย : fonfire เมื่อวันที่ 2013-10-15 17:17:35
รายละเอียดของการตอบ ::
ผมไม่เข้าใจความหมายของคุณครับ


พวกคุณเชื่อหรือไม่ว่า ผมใช้หัวข้อกระทู้นี้ เป็นประวัติเพื่อสมัครงาน ที่บริษัทแห่งหนึ่ง ดังนี้
ผมรู้ว่ามันเป็นไปแทบไม่ได้ แต่นี่คือความพยายามของผม



2013/10/15 17:00 PM
เรียนคุณ ...

กระผมทราบข่าวจาก xxx ว่าท่านต้องการโปรแกรมเมอร์ 1 ตำแหน่ง

คุณสมบัติของผมท่านสามารถอ่านได้จาก https://www.thaicreate.com/dotnet/forum/101644.html#43

โดยที่ผมใช้นามแฝงว่า ผ่านมา เป็นบางครั้ง


ในท้ายนี้ถ้าหากกระผมทำให้ท่านเสียเวลา หรือทำให้ท่านไม่พอใจจะด้วยสาเหตุใดก็ตาม

กระผมต้องกราบขออภัยท่านเป็นอย่างสูง มาณ.ที่นี้ด้วยครับ





จึงเรียนมาเพื่อพิจารณา

ตัวของผมเอง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-15 17:31:17 By : ผ่านมา
 


 

No. 46

Guest


เหอๆ หนัก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-16 10:18:42 By : idolman
 


 

No. 47

Guest


ตอบความคิดเห็นที่ : 46 เขียนโดย : idolman เมื่อวันที่ 2013-10-16 10:18:42
รายละเอียดของการตอบ ::
อันนี้ผมไม่รู้ความหมายของคุณครับ


ผมมีความเชื่อว่าเมื่อถึงจุดหนึ่งและสักวันหนึ่ง ถ้าเรายังเดินทางในสายทางนี้ (คอมพิวเตอร์) มันต้องเจอปัญหาแบบนี้ครับ
และไม่มีใครที่จะหนีมันพ้นไปได้ ผมเชื่อเช่นนี้ครับ

1. Web Application สร้างโฟล์เดอร์ในเครื่อง Client ได้หรือไม่
2. Web Application สั่งรันโปรแกรมในเครื่อง Client ได้หรือไม่
3. local, www, etc...

คำตอบเดียว "มันทำได้อยู่แล้ว" ผมรู้ครับว่ามันไม่ใช่เรื่องง่ายฯ แต่ก็ไม่น่าจะเกินความสามารถของเราทุกฯคน
เมื่อได้คำตอบมาแล้ว ก็ประยุกต์ใช้ (ขึ้นอยู่กับความต้องการ) อทิเช่น
1. สั่งปิดเปิดไฟฟ้าผ่านหน้าเวปไซต์
2. สั่งเครื่องจักร หยุด/เริ่มทำงานผ่านหน้าเวปไซต์ (ผมจะเอาใช้งานจริงด้วยครับ)
3. สั่งรันโปรแกรม (.EXE) ในเครื่องลูกค้าแบบ Real time. รับส่งหรือจะทำอะไรก็ว่ากันไปครับ
4. etc อีกเยอะเลย แล้วแต่จะจินตนาการ


จากบรรทัดนี้ไปจนถึงหน้าจอ แทงรวย ผมสมมุติขึ้นมาเฉยฯ ครับ

1. หน้าจอ Login มี SourceCode ระบบป้องกันข้อมูลหลายชั้น ดังนี้ครับ
(ตัวอย่างอันนี้ผมใช้แค่ชั้นเดียวครับ)
Code (VB.NET)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    '2012-03-24 Support Windows Client & All Application. example delphi, visual foxpro, etc
    If Request.QueryString("UserName") <> Nothing AndAlso Request.QueryString("Password") <> Nothing Then
        Dim strUserName As String = Request.QueryString("UserName") '***** byebye Decrypt
        Dim strPassword As String = Request.QueryString("Password") '***** byebye Decrypt
        ' ******************************************************************************************
        ' Protect Decomplier Algorithm with C++ for Encrypt UserName and Password
        ' validation here and check the username and password in the database
        ' *******************************************************************************************
        FormsAuthentication.Authenticate("นามคุณ", "รหัสผ่าน") 'Check in web.config with SHA1
        FormsAuthentication.SetAuthCookie(strUserName, False, FormsAuthentication.FormsCookiePath)
        FormsAuthentication.RedirectFromLoginPage(strUserName, False, FormsAuthentication.FormsCookiePath)

        ' Create cookie and return it
        Dim ticket As New FormsAuthenticationTicket(1,
                                                    strUserName,
                                                    DateTime.Now,
                                                    DateTime.Now.AddDays(30),
                                                    False,
                                                    New Guid().ToString(),
                                                    FormsAuthentication.FormsCookiePath)
        ' Encrypt the ticket.
        Dim encTicket As String = FormsAuthentication.Encrypt(ticket)
        ' Create the cookie.
        Response.Write(encTicket)
        Response.End()
    Else
        FormsAuthentication.SetAuthCookie("Guest", False) 'Test only XXX Remove this line in production
    End If
End Sub



2. อันนี้เป็นคำสั่ง SQL Query สำหรับออกรายงาน ในตัวอย่างสมมุตินี้ ผมใช้แค่คำสั่งเดียวครับ
และไม่ได้เขียนเอาไว้เป็น Store Procedure (เรียกตรงตรง)

Code (VB.NET)
    Public Function GetPurchaseNumber(Optional ByVal isOverLimit As Boolean = False) 
        Dim strWhere As String = If(isOverLimit, " WHERE (X.OverP1 > 0 Or X.OverP2 > 0)", String.Empty)
        Dim x As String = <xsql>
;
WITH cte
AS (
	SELECT *
		,ROW_NUMBER() OVER (
			ORDER BY InputType DESC
				,StringNum ASC
			) AS rn
	FROM (
		SELECT InputType
			,StringNum
			,LimitPrice1
			,LimitPrice2
			,Y.Price1
			,Y.Price2
			,ISNULL(LimitPrice1, 0) + ISNULL(Y.Price1, 0) AS OverP1
			,ISNULL(LimitPrice2, 0) + ISNULL(Y.Price2, 0) AS OverP2
		FROM GoodLuckConfigSpread AS Z
		CROSS APPLY (
			SELECT SUM(Price1) AS Price1
				  ,SUM(Price2) AS Price2
			FROM GoodLuck a
			WHERE a.InputType = Z.InputType
				AND a.StringNum = Z.StringNum
			) Y
		) X <%= strWhere %> --{0}
	    --WHERE X.OverP1 > 0
		--OR X.OverP2 > 0
	)
	,cte0
AS (
	SELECT InputType, MIN(rn) AS rn
	FROM cte
	GROUP BY InputType
	)
	,cte1
AS (
	SELECT cte.InputType
		,StringNum
		,OverP1
		,OverP2
		,cte.rn
        ,Price1
        ,Price2
	FROM cte0
	CROSS JOIN cte WHERE cte0.InputType = cte.InputType AND (cte.rn -cte0.rn ) % 5 = 0
	)	
SELECT cte1.InputType
	,cte1.StringNum AS StringNum_1
    ,cte1.Price1 AS Price1_1
    ,cte1.Price2 AS Price2_1
	,cte1.OverP1 AS OverP1_1
	,cte1.OverP2 AS OverP2_1
	,cte2.StringNum AS StringNum_2
    ,cte2.Price1 AS Price1_2
    ,cte2.Price2 AS Price2_2
	,cte2.OverP1 AS OverP1_2
	,cte2.OverP2 AS OverP2_2
	,cte3.StringNum AS StringNum_3
    ,cte3.Price1 AS Price1_3
    ,cte3.Price2 AS Price2_3
	,cte3.OverP1 AS OverP1_3
	,cte3.OverP2 AS OverP2_3
	,cte4.StringNum AS StringNum_4
    ,cte4.Price1 AS Price1_4
    ,cte4.Price2 AS Price2_4
	,cte4.OverP1 AS OverP1_4
	,cte4.OverP2 AS OverP2_4
	,cte5.StringNum AS StringNum_5
    ,cte5.Price1 AS Price1_5
    ,cte5.Price2 AS Price2_5
	,cte5.OverP1 AS OverP1_5
	,cte5.OverP2 AS OverP2_5
FROM cte1
LEFT JOIN cte AS cte2 ON cte1.InputType = cte2.InputType
	AND cte2.rn - cte1.rn = 1
LEFT JOIN cte AS cte3 ON cte1.InputType = cte3.InputType
	AND cte3.rn - cte1.rn = 2
LEFT JOIN cte AS cte4 ON cte1.InputType = cte4.InputType
	AND cte4.rn - cte1.rn = 3
LEFT JOIN cte AS cte5 ON cte1.InputType = cte5.InputType
	AND cte5.rn - cte1.rn = 4
                          </xsql>

        Return Query(x.ToString())
    End Function



3. อันนี้เป็นหน้าจอสมมุติที่ผมทำขึ้นมา เล่นเล่นครับ

lot01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-16 12:33:14 By : ผ่านมา
 


 

No. 48



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



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


ตอบความคิดเห็นที่ : 47 เขียนโดย : ผ่านมา เมื่อวันที่ 2013-10-16 12:33:14
รายละเอียดของการตอบ ::




ประวัติการแก้ไข
2013-10-16 13:19:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-16 12:59:24 By : watcharop
 


 

No. 49

Guest


ตอบความคิดเห็นที่ : 48 เขียนโดย : watcharop เมื่อวันที่ 2013-10-16 12:59:24
รายละเอียดของการตอบ ::
ผมนึกเล่นเล่นสนุกสนุกครับ ว่าจะประยุกต์ใช้งานอย่างไรอีก นี่เลยครับ
แจก SourceCode ของจริงให้ลูกค้าไปทั้งหมดเลย แต่มีข้อแม้ว่า คุณต้องเชื่อมต่ออินตาเน็ทน่ะ
(ให้มันวิ่งมาเช็ค/ตรวจสอบที่เวปไซต์ของเรา)

มันจะอะไรกันหนักกันหนากับการที่เราจะ Get MAC Address จากเครื่องลูกค้าขึ้นมาดูเล่น
จะโอเคหรือว่า NONO อะไรก็ว่ากันไปครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-16 13:44:43 By : ผ่านมา
 


 

No. 50

Guest


ผมเคารพในเหตุผลของแต่ละบุคคลและแต่ละหน่วยงาน (ทุกทุกคนย่อมมีเหตุผลเป็นของตัวเอง)

และนี่ก็เป็นอีกครั้งหนึ่งที่ผมไม่ได้งานครับ และยังจะมีอีกต่อไป
ผมต้องคิดว่านี่คือรางวัลชีวิตของผม เพราะถ้าผมคิดเป็นอย่างอื่น
นั่นหมายความว่าผมจะได้ศัตรูเพิ่มขึ้นมาโดยไม่จำเป็น
(เท่าที่ผมมีอยู่มันก็มากเำกินพออยู่แล้วครับ)

ผมขอจบหัวข้อกระทู้นี้แต่เพียงเท่านี้ ผมขอโทษเจ้าของหัวกระทู้อีกครั้งหนึ่ง
มา ณ.ที่ด้วยด้วยครับ

ขอแสดงความนับถือ
ผ่านมา
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-10-17 04:32:18 By : ผ่านมา
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : VB.Net สอบถามเกี่ยวกับเรื่อง adpt.Update(ds) to database รบกวนผู้รู้ด้วยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 01
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 อัตราราคา คลิกที่นี่