[.NET] 請問以DataReader的DataTable可以修改值嗎
VB.NET的問題
各位前輩你們好,目前剛接觸vb.net關於資料流的部份有些疑問
請前輩們不吝指教,謝謝
問題敘述:
以sqlDataReader形式得到了DataTable("OnLine_mtr"),
之後把這個table丟入畫面中的DataGridView1中,接著我在DataGridView1中處理我的資料,
比方A<B,那麼backColor為黃底,
而AX002這個欄位值原本20100217001,我要改成31A-20100217001-0001卻會得到一個錯誤訊息
訊息為:
"在DataGridView中發生下列例外狀況:
System.ArgumentException:無法設定資料行'AX002'該值違反了這個資料行的
MaxLength限制"
問一:是否在sqlDataReader無法這樣修改值?因為長度已經固定了?
即使增加長度也不行DataGridView1.Columns(0).Width = 150
問二:有什麼解決的方式?
請前輩們指點,大大感謝~!
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim thisConnection As New SqlConnection("Data
Source=127.0.0.1;Initial Catalog=abc;User ID=sa;Password=123123")
Dim TD001, TD002, TD003, sql As String
sql = "SELECT * from A_TABLE"
Dim thisCommand As New SqlCommand(sql, thisConnection)
Dim thisReader As SqlDataReader
Try
thisConnection.Open()
thisReader = thisCommand.ExecuteReader()
Dim dt As New DataTable("OnLine_mtr")
dt.Load(thisReader)
DataGridView1.DataSource = dt
'Assign New Width to DataGrid column
'DataGridView1.Columns(0).Width = 150
For i = 0 To dt.Rows.Count - 1
Form_num001 = dt.Rows(i).Item("AX001").ToString()
Form_num002 = dt.Rows(i).Item("AX002").ToString()
Form_num003 = dt.Rows(i).Item("AX003").ToString()
DataGridView1.Rows(i).Cells(0).Value = "無錫自購"
If TD001 = "" Then
DataGridView1.Rows(i).Cells(1).Value = Trim(Form_num 001)
& "-" & Trim(Form_num 002)
Else
DataGridView1.Rows(i).Cells(1).Value = Trim(Form_num 001)
& "-" & Trim(Form_num 002) & "-" & Trim(Form_num 003) '--錯誤發生--
End If
Next
thisReader.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
thisConnection.Close()
End Try
End sub
Private Sub customerDataGridView_CellFormatting(ByVal sender As Object,
ByVal e As DataGridViewCellFormattingEventArgs) Handles
DataGridView1.CellFormatting
DataGridView1.Columns(0).HeaderText = " mtr_kind"
DataGridView1.Columns(1).HeaderText = " form_num"
DataGridView1.Columns(2).HeaderText = " send_date"
DataGridView1.Columns(3).HeaderText = " vendor_name"
DataGridView1.Columns(4).HeaderText = " mtr_no"
DataGridView1.Columns(5).HeaderText = " desc"
DataGridView1.Columns(6).HeaderText = " amount"
DataGridView1.Columns(7).HeaderText = " arrive_date"
DataGridView1.Columns(8).HeaderText = " rec_amt"
DataGridView1.Columns(9).HeaderText = "memo_A"
DataGridView1.Columns(10).HeaderText = “memo_B"
'過期則黃底
For i = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(i).Cells(3).Value <
String.Format("{0:yyyymmdd}", DateTime.Now) Then
DataGridView1.Rows(i).DefaultCellStyle.BackColor =
Color.Yellow
End If
Next
End Sub
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.244.57.50
→
01/06 22:12, , 1F
01/06 22:12, 1F
→
01/06 22:31, , 2F
01/06 22:31, 2F
推
01/08 09:09, , 3F
01/08 09:09, 3F
推
01/08 11:38, , 4F
01/08 11:38, 4F
推
01/08 23:50, , 5F
01/08 23:50, 5F