trevoray
asked on
doing a search and replace on a datatable?
is there a way to search a datatable and whereever there is no value for a particular dataitem, to replace it with something, like a "0"?
ASKER
ok, this is how i set up my datatable...
Dim dt As New DataTable("duesTable")
With dt
.Columns.Add("transid")
.Columns.Add("nmmst_id")
.Columns.Add("dues_year")
.Columns.Add("member_dues" )
.Columns.Add("toxsci")
End With
and then later i would do...
di = dt.NewRow()
di("transid") = strTransID
di("nmmst_id") = Label6.Text
and then finally...
dt.Rows.Add(di)
I put this datatable into my datagrid and i can see that the columns that i did not add any values to are blank. (I DO NOT KNOW IF THIS IS NULL BY DEFAULT )
so, with the structure outlined above how could i do your statement? (esp, since i did not do a dim dc as DataColumn)
thanks!
Dim dt As New DataTable("duesTable")
With dt
.Columns.Add("transid")
.Columns.Add("nmmst_id")
.Columns.Add("dues_year")
.Columns.Add("member_dues"
.Columns.Add("toxsci")
End With
and then later i would do...
di = dt.NewRow()
di("transid") = strTransID
di("nmmst_id") = Label6.Text
and then finally...
dt.Rows.Add(di)
I put this datatable into my datagrid and i can see that the columns that i did not add any values to are blank. (I DO NOT KNOW IF THIS IS NULL BY DEFAULT )
so, with the structure outlined above how could i do your statement? (esp, since i did not do a dim dc as DataColumn)
thanks!
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Private Function getValue(ByVal currValue As Object, Optional ByVal isNum As Boolean = True, Optional ByVal defaultValue_num As Double = 0, Optional ByVal defaultValue_String As String = "") As Object
If IsDBNull(currValue) Then
If isNum Then
Return defaultValue_num
Else
Return defaultValue_String
End If
Else
If isNum Then
If IsNumeric(currValue) Then
Return Val(currValue)
Else
Return defaultValue_num
End If
Else
Return defaultValue_String
End If
End If
End Function
If IsDBNull(currValue) Then
If isNum Then
Return defaultValue_num
Else
Return defaultValue_String
End If
Else
If isNum Then
If IsNumeric(currValue) Then
Return Val(currValue)
Else
Return defaultValue_num
End If
Else
Return defaultValue_String
End If
End If
End Function
ASKER
thanks! that worked, perfect!!
Public Class Form2
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.ICon
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents DataGrid1 As System.Windows.Forms.DataG
Friend WithEvents Button1 As System.Windows.Forms.Butto
<System.Diagnostics.Debugg
Me.DataGrid1 = New System.Windows.Forms.DataG
Me.Button1 = New System.Windows.Forms.Butto
CType(Me.DataGrid1, System.ComponentModel.ISup
Me.SuspendLayout()
'
'DataGrid1
'
Me.DataGrid1.DataMember = ""
Me.DataGrid1.HeaderForeCol
Me.DataGrid1.Location = New System.Drawing.Point(16, 8)
Me.DataGrid1.Name = "DataGrid1"
Me.DataGrid1.Size = New System.Drawing.Size(432, 144)
Me.DataGrid1.TabIndex = 0
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(16, 160)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(112, 24)
Me.Button1.TabIndex = 1
Me.Button1.Text = "Do Replace"
'
'Form2
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(464, 310)
Me.Controls.Add(Me.Button1
Me.Controls.Add(Me.DataGri
Me.Name = "Form2"
Me.Text = "Form2"
CType(Me.DataGrid1, System.ComponentModel.ISup
Me.ResumeLayout(False)
End Sub
#End Region
Dim dt As DataTable
Dim dr As DataRow
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dt = New DataTable("Employees")
With dt
With .Columns
.Add("ID", (0).GetType)
.Add("Salary", (1.1).GetType)
.Add("Name", "".GetType)
End With
dr = .NewRow
With dr
.Item(0) = "1"
.Item(1) = DBNull.Value
.Item(2) = "Michaels"
End With
.Rows.Add(dr)
dr = .NewRow
With dr
.Item(0) = "2"
.Item(1) = 20
.Item(2) = DBNull.Value
End With
.Rows.Add(dr)
dr = .NewRow
With dr
.Item(0) = "2"
.Item(1) = 30
.Item(2) = "Jones"
End With
.Rows.Add(dr)
Me.DataGrid1.DataSource = dt
End With
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dc As DataColumn
For Each dr In dt.Rows
For Each dc In dt.Columns
If IsDBNull(dr(dc)) Then
dr(dc) = 0
End If
Next
Next
End Sub
End Class