  | 
              
	              
	                
  
    |   | 
   
  
    
        
        VB.net (Win App) ติดปัญหาการแปลง Data Type จาก DataGridView ก่อนเก็บเข้า SQL SERVER ค่ะ     | 
   
  
    |   | 
   
 
 
 
	
		
			  | 
	   | 
	    | 
		
			  | 
	 
	
		
			  | 
		 		   | 
	  	    
          
            
			
	
			
			 
                มีข้อมูลที่รับมาจาก Text File แล้วนำมาใส่ใน DataGrid จากนั้น Update และ Insert เข้า SQL ค่ะ  
แต่ว่าติดปัญหาการแปลง Type ในส่วนของ insert ซึ่งใน DB มีอยู่ 2 Table ค่ะ  
TB_LOCATION มี Field LocNo,LocType,LocPlace >> VarChar หมดเลย 
TB_INVENTORY มี Field PartNo,LocNo,Instock >> Instock : Decimal 
ส่วน Text File ที่รับมาจะมีข้อมูล PartNo|LocNo,|Instock|LocType|LocPlace 
 
ลองทำทั้ง 2 แบบแล้วอ่ะค่ะ คือแบบ 1. ลองใส่ Code ไม่มีการแปลง Type สามารถ insert ได้ค่ะ  
แต่ว่า จับ Try catch  แล้วเกิด error ตามรูปค่ะ  
 
1. 
Code (VB.NET) 
For i = 0 To DataGridView1.RowCount - 1
                Dim intRows As Integer
                sqlCheck = "SELECT COUNT(*) FROM TB_LOCATION WHERE LocNo = '" + DataGridView1.Rows(i).Cells(1).Value + "'"
                cmd = New SqlCommand(sqlCheck, con)
                intRows = cmd.ExecuteScalar()
                If intRows > 0 Then
                    LisFindUp = True
                    cmd.CommandText = "UPDATE TB_LOCATION SET " & " LocType = '" & CStr(DataGridView1.Rows(i).Cells(3).Value) & "', LocPlace = '" & CStr(DataGridView1.Rows(i).Cells(4).Value) & "' WHERE LocNo = '" & DataGridView1.Rows(i).Cells(1).Value & "'"
                    cmd.ExecuteNonQuery()
                Else
                    IsFindAdd = True
                    SqlIns2 = "INSERT INTO TB_LOCATION (LocNo,LocType,LocPlace) VALUES(@LocNo,@LocType,@Place)"
                    cmd = New System.Data.SqlClient.SqlCommand(SqlIns2, con)
                    cmd.Parameters.Add(New SqlParameter("@LocNo", DataGridView1.Rows(i).Cells(1).Value))
                    cmd.Parameters.Add(New SqlParameter("@LocType", DataGridView1.Rows(i).Cells(3).Value))
                    cmd.Parameters.Add(New SqlParameter("@Place", DataGridView1.Rows(i).Cells(4).Value))
                    cmd.ExecuteNonQuery()
                End If
                Dim intRows2 As Integer
                sqlCheck = "SELECT COUNT(*) FROM TB_INVENTORY WHERE PartNo = '" + DataGridView1.Rows(i).Cells(0).Value + "' AND LocNo = '" + DataGridView1.Rows(i).Cells(1).Value + "'"
                cmd = New SqlCommand(sqlCheck, con)
                intRows2 = cmd.ExecuteScalar()
                If intRows2 > 0 Then
                    LisFindUp = True
                    cmd.CommandText = "UPDATE TB_INVENTORY SET " & " Instock = '" & CDec(DataGridView1.Rows(i).Cells(2).Value) & "' WHERE PartNo = '" + DataGridView1.Rows(i).Cells(0).Value + "' AND LocNo = '" + DataGridView1.Rows(i).Cells(1).Value + "'"
                    cmd.ExecuteNonQuery()
                Else
                    IsFindAdd = True
                    SqlIns = "INSERT INTO TB_INVENTORY (PartNo,LocNo,Instock) VALUES(@PartNo,@LocNo,@Instock)"
                    cmd = New System.Data.SqlClient.SqlCommand(SqlIns, con)
                    cmd.Parameters.Add(New SqlParameter("@PartNo", DataGridView1.Rows(i).Cells(0).Value))
                    cmd.Parameters.Add(New SqlParameter("@LocNo", DataGridView1.Rows(i).Cells(1).Value))
                    cmd.Parameters.Add(New SqlParameter("@Instock", DataGridView1.Rows(i).Cells(2).Value))
                    cmd.ExecuteNonQuery()
                End If
            Next
 
 
  
 
 
2. ลองใส่แปลง Type (ไม่แน่ใจว่าใส่ถูกหรือเปล่า) ในส่วนของ insert อย่างเดียว แล้ว Try catch เหมือนกันค่ะ  
Code และ  error ตามรูปค่ะ ซึ่งงงมากเลย ที่เป็น Varchar อยู่แล้ว แต่ insert ไม่ได้ รบกวนขอคำแนะนำด้วยนะค่ะ^^ 
 
Code (VB.NET) 
SqlIns2 = "INSERT INTO TB_LOCATION (LocNo,LocType,LocPlace) VALUES(@LocNo,@LocType,@Place)"
                    cmd = New System.Data.SqlClient.SqlCommand(SqlIns2, con)
                    cmd.Parameters.Add(New SqlParameter("@LocNo", SqlDbType.VarChar = DataGridView1.Rows(i).Cells(1).Value))
                    cmd.Parameters.Add(New SqlParameter("@LocType", SqlDbType.VarChar = DataGridView1.Rows(i).Cells(3).Value))
                    cmd.Parameters.Add(New SqlParameter("@Place", SqlDbType.VarChar = DataGridView1.Rows(i).Cells(4).Value))
                    cmd.ExecuteNonQuery()
SqlIns = "INSERT INTO TB_INVENTORY (PartNo,LocNo,Instock) VALUES(@PartNo,@LocNo,@Instock)"
                    cmd = New System.Data.SqlClient.SqlCommand(SqlIns, con)
                    cmd.Parameters.Add(New SqlParameter("@PartNo", SqlDbType.VarChar = DataGridView1.Rows(i).Cells(0).Value))
                    cmd.Parameters.Add(New SqlParameter("@LocNo", SqlDbType.VarChar = DataGridView1.Rows(i).Cells(1).Value))
                    cmd.Parameters.Add(New SqlParameter("@Instock", SqlDbType.Decimal = DataGridView1.Rows(i).Cells(2).Value))
                    cmd.ExecuteNonQuery()
 
 
 
 
 
  Tag : .NET, Ms SQL Server 2008, Win (Windows App), VB.NET, Windows               
                        | 
           
          
            | 
			
                             | 
           
          
            
              
                   | 
                   | 
                   | 
               
              
                   | 
                
                    
                      | Date :
                          2014-03-13 20:22:35 | 
                      By :
                          Menerva | 
                      View :
                          1147 | 
                      Reply :
                          3 | 
                     
                  | 
                   | 
               
              
                   | 
                   | 
                   | 
               
              | 
           
          
            | 
			 | 
           
         
	    
		             | 
		
			  | 
	 
	
		
			  | 
		  | 
		
			  | 
		
			  | 
	 
 
              
  
          
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 Code (C#) 
SqlParameter createdon = new SqlParameter("@createdon", SqlDbType.DateTime, 50);
                    createdon.Value = DateTime.Now;
                    cmd.Parameters.Add(createdon);
 
 
น่าตะประมาณนี้ครับ                        
               
               | 
             
            
              
			  			  
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2014-03-14 10:03:09 | 
                        By :
                            mr.win | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ลองดูแล้วและได้แล้วค่ะ   ขอบคุณมากมายค่ะ                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2014-03-15 17:12:53 | 
                        By :
                            menerva | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                                          
               
               | 
             
            
              
			  			  
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2014-03-17 06:37:21 | 
                        By :
                            mr.win | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
      		  
	
     | 
   
 
                 |