|  | 
	                
  
    |  |  
    | 
        
        VB.Net สอบถามหน่อยครับ วิธีการ  new Row DataGridView ข้าม Page ยังไง     |  
    |  |  
 
              
  
    | 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ตัวอย่างการเพิ่ม Row ใน DataTable ครับ 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-03-21 10:07:00 | By :
                            mr.win |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ไม่ครับ ผมไม่ได้จะcreate row เข้าใน datatable อ่ะครับ คือตัวโปรแกรมผมคือ กดใส่จำนวนในหน้าที่1ก่อนแล้วกด ok แล้วให้ แสดงใน datagridview หน้า sell
 อันนี้คือรูปตัวโปรแกรม
 
 
  
 โทษที่ครับ รูปcode แรก ถ่ายมาไม่ครบเลยอาจจะทำให้เกิดความเข้าผิดว่าจะcreate  datatable
 อันนี้ code
 
 
  
 พอมีคำแนะนำไหมครับว่าควรทำยังไง
 ลองดูตามlink ที่ให้แล้ว ขึ้น error เหมือนในรูปแรกอ่ะครับ
 รูปแรก ผมลอง debug ดูที่ละบรรทัดแล้ว ตรง ResutlNum ที่select จะ DB ก็มีค่าอ่ะครับ
 
 |  
              | 
 ประวัติการแก้ไข
 2015-03-23 14:01:49
 2015-03-23 14:56:29
 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-03-23 13:59:09 | By :
                            kamasaigis2 |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | บ้านๆๆๆๆมากๆๆๆ ครับ ก็ลองเชคดูสิครับ
 หลังจากกด OK แล้วมันส่งค่าไรไปให้ database ทำไมถึง null
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-03-23 15:09:38 | By :
                            lamaka.tor |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | อันนี้ ผม ลอง debug แล้วก็มีค่า นะ ครับ 
 
  
 ปุ่ม OK พอกดแล้วจะเรียก ฟังชั่น ตัวนี้ทำงานอ่ะครับ
 
 Code (VB.NET)
 
 Sub InputHK(BC As String, ii As Integer)
       
        Dim da As New OleDbDataAdapter
        Dim ds As New DataSet
        Dim dt As DataTable
        Dim dt2 As DataTable
        Connect()
        'Dim dr As DataRow
        ''  Try
        Dim sql_search As String
        Dim search As String
        Dim search2 As String
        Dim num As Integer
        sql_search = "SELECT Item_Detail.Item_Barcode,Item_Detail.Item_Name,Item_Detail.Item_AticleCode,Item_Stock.ItemStock,Item_Detail.Item_UnitPrice FROM Item_Stock INNER JOIN Item_Detail ON Item_Stock.ID_Item_Stock = Item_Detail.ID_Item_Detail"
        'sql_search = "SELECT Item_Detail.Item_Barcode,Item_Stock.ItemStock,Item_Detail.Item_UnitPrice FROM Item_Stock INNER JOIN Item_Detail ON Item_Stock.ID_Item_Stock = Item_Detail.ID_Item_Detail"
        Dim sqlWhere As String
        sqlWhere = " where Item_barcode LIKE'" & BC.ToString & "'"
        Dim sqlemp As String
        'Dim group As String = "GROUP BY IT_PlannedList.PlannedListID, IT_PlannedList.ItemNo, IT_Description.Item_Desc, IT_PlannedList.ContractorID, Contractor.Contractor_Name, IT_PlannedList.OrderedTimes, IT_PlannedList.Qty, IT_PlannedList.Unit, IT_TransContractor.ModelID, IT_PlannedList.DateCreated ORDER BY IT_PlannedList.ItemNo"
        sqlemp = sql_search & sqlWhere '& group
        Dim OledbCmd As OleDbCommand
        OledbCmd = New OleDbCommand(sqlemp, conn)
        Dim oledbReader As OleDbDataReader = OledbCmd.ExecuteReader()
        Dim Def0 As Integer = 0
        Dim dis As Integer = 0
        While oledbReader.Read
            'MsgBox(oledbReader.Item(0).ToString & "  -  " & oledbReader.Item(1).ToString & "  -  " & oledbReader.Item(2).ToString & "  -  " & oledbReader.Item(3).ToString & "  -  " & oledbReader.Item(4).ToString)
            ' dt.Rows.Add()
            Dim ResutlNum As Integer = CInt(oledbReader.Item(3)) - CInt(ii)
            Dim RSTotal As Integer = (CInt(oledbReader.Item(4).ToString) * CInt(ii)) - dis
            '     MessageBox.Show(ResutlNum.ToString)
            Dim dr As DataRow
            dr = dt.NewRow
            dr(0) = oledbReader.Item(0).ToString
            dr(1) = oledbReader.Item(1).ToString
            dr(2) = oledbReader.Item(2).ToString
            dr(3) = FormatNumber(oledbReader.Item(4).ToString, 2)
            dr(4) = ii
            dr(5) = FormatNumber(dis.ToString, 2)
            dr(6) = FormatNumber(RSTotal.ToString, 2)
            'dr(6) = BC.ToString
            dt.Rows.Add(dr)
            sell.GridControl1.DataSource = dt
            Price_Array(CInt(BC_CKrow)) = CInt(RSTotal.ToString)
            Price_OArray(CInt(BC_CKrow)) = CInt(RSTotal.ToString)
            ' MessageBox.Show(BC_CKrow.ToString)
        End While
        BC_CKrow = BC_CKrow + 1
        SumTotalCost2()
    End Sub
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-03-23 15:55:43 | By :
                            kamasaigis2 |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | มันเกิดเออเร่อเพราะไม่เคยใส่ค่าให้ตัวแปร dt ไงครับ อยู่ๆคุณก็จะไปขอ new row จาก datatable ที่ค่าเป็น nothing อยู่มันก็แจ้งเตือนกลับว่าคุณอ้างอิงไม่ถูกสิ
  
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-03-24 13:59:41 | By :
                            deksoke |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | อ่อ ขอบคุณครับ ได้แล้ว คือ หน้าแรก อ่ะครับ ใช้ ฟังชั่น ตัวนี้เหมือนกัน(ยิงบาร์โค้ด) แต่คือ หน้า แรกตอน ผมload form ขึ้นมา ผมให้มัน โหลด ฟังชั่นloadCol() ตัวนี้ไปด้วย 
 Code (VB.NET)
 
    dt = New DataTable
        dt.Columns.Add("No")
        dt.Columns.Add("Name")
        dt.Columns.Add("AticleCode")
        dt.Columns.Add("Price")
        dt.Columns.Add("Num")
        dt.Columns.Add("Dis")
        dt.Columns.Add("Total")
        GridControl1.DataSource = dt
อีกอันที่เปนปัญหาคือกดกับตัว HotKeys ADD ITEM เข้าไป ผมไม่ได้ให้มันโหลดฟังชั้นloadCol()ด้วยเลยError
 
 
 ขอบคุณมากครับทุกท่านที่ช่วยผม
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-03-24 14:21:32 | By :
                            kamasaigis2 |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  |  |