VS2010VB.BET程序DataAdapter.SelectCommand 属性需要初始化

Imports System.Data.SqlClient
Public Class frmstdfeerecord
Private Sub frmstdfeerecord_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim sqlcmd As String '查询命令
Dim dt As DataTable
'清除下拉列表
cboofc.Items.Clear()
cbono.Items.Clear()
cboclass.Items.Clear()
'添加住院科室到下拉列表中
sqlcmd = "SELECT DISTINCT Consultation_Office FROM Patient"
dt = sqlqry(sqlcmd, Nothing)
For i = 0 To dt.Rows.Count - 1
cboofc.Items.Add(dt.Rows(i).Item("Consultation_Office"))
Next
sqlcmd = "SELECT DISTINCT Class FROM CuredItem"
dt = sqlqry(sqlcmd, Nothing)
For i = 0 To dt.Rows.Count - 1
cboclass.Items.Add(dt.Rows(i).Item("class"))
Next
End Sub

Private Sub cboofc_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboofc.SelectedIndexChanged
    Dim sqlcmd As String              '查询命令
    Dim dt As DataTable
    cbono.Items.Clear()
    txtname.Text = ""                 '清除病人姓名内容
    '添加对应住院科室下的所有住院号到下拉列表中
    sqlcmd = "SELECT DISTINCT Patient_ID FROM Patient "
    sqlcmd = sqlcmd & " WHERE Consultation_Office='" & cboofc.Text & "'"
    sqlcmd = sqlcmd & " AND Leave_Time IS NULL"
    dt = sqlqry(sqlcmd, Nothing)
    For i = 0 To dt.Rows.Count - 1
        cbono.Items.Add(dt.Rows(i).Item("patient_id"))
    Next
End Sub

Private Sub cbono_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbono.SelectedIndexChanged
    Dim sqlcmd As String              '查询命令
    Dim dt As DataTable
    '查找对应住院号的病人姓名,以便显示核对
    sqlcmd = "SELECT Name,total_prefee FROM Patient "
    sqlcmd = sqlcmd & " WHERE Patient_ID='" & cbono.Text & "'"
    dt = sqlqry(sqlcmd, Nothing)
    If dt.Rows.Count = 0 Then
        MsgBox("没有找到这个住院病人!", vbOKOnly, "提示")
    Else
        txtname.Text = dt.Rows(0).Item("name").ToString()
        txttotfee.Text = dt.Rows(0).Item("total_prefee").ToString()
    End If
End Sub

Private Sub cboclass_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboclass.SelectedIndexChanged
    Dim sqlcmd As String              '查询命令
    Dim dt As DataTable
    sqlcmd = "SELECT * FROM CuredItem WHERE Class='" & cboclass.Text & "'"
    dt = sqlqry(sqlcmd, Nothing)
    lstitem.Items.Clear()               '清除原有内容
    lstitem.View = View.Details
    lstitem.FullRowSelect = True
    lstitem.Columns.Add("项目id", 100, HorizontalAlignment.Left)
    lstitem.Columns.Add("项目名称", 100, HorizontalAlignment.Left)
    lstitem.Columns.Add("费用", 100, HorizontalAlignment.Right)
    For i = 0 To dt.Rows.Count - 1
        objitem = lstitem.Items.Add(dt.Rows(i).Item("item_id"))
        objitem.SubItems.Add(dt.Rows(i).Item("name"))
        objitem.SubItems.Add(Format(dt.Rows(i).Item("fee"), "####0.00"))
    Next
End Sub

Private Sub lstitem_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstitem.DoubleClick
    Dim dt As DataTable
    Dim itemprice As Double
    Dim sqlcmd As String
    ItmNo = lstitem.SelectedItems.Item(0).Text
    sqlcmd = "SELECT * FROM cureditem WHERE item_ID='" & ItmNo & "'"
    dt = sqlqry(sqlcmd, Nothing)
    If dt.Rows.Count > 0 Then
        itemprice = dt.Rows(0).Item("fee")
    End If
    txtfee.Text = Format(itemprice, "####0.00")
    txtfee.Focus()
End Sub

Private Sub lstitem_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstitem.SelectedIndexChanged

End Sub

Private Sub cmdok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdok.Click
    Dim CureFeeNo As Integer   '费用编号
    Dim sqlcmd As String
    Dim da As SqlDataAdapter
    Dim dt As DataTable
    Dim PatNo As String    '住院号
    PatNo = Trim(cbono.Text)
    If PatNo = "" Then
        MsgBox("请首先选择住院病人", vbOKOnly, "提示")
        cboofc.Focus()
        Exit Sub
    End If
    If lstitem.Items.Count = 0 Or Val(txtfee.Text) = 0 Then
        MsgBox("请选择检查治疗项目", vbOKOnly, "提示")
        lstitem.Focus()
        Exit Sub
    End If
    If Val(txtfee.Text) = 0 Then
        MsgBox("费用为零", vbOKOnly, "提示")
        txtfee.Focus()
        Exit Sub
    End If
    sqlcmd = "SELECT cnt =count(*) FROM CureFee WHERE Patient_ID='" & PatNo & "'"
    sqlcmd = sqlcmd & " AND FeeItem_ID='" & ItmNo & "'"
    dt = sqlqry(sqlcmd, Nothing)
    CureFeeNo = dt.Rows(0).Item("cnt") + 1
    '准备更新数据记录
    sqlcmd = "SELECT * FROM CureFee WHERE Patient_ID='" & PatNo & "'"
    sqlcmd = sqlcmd & " AND FeeItem_ID='" & ItmNo & "'"
    da = Nothing
    dt = sqlqry(sqlcmd, Nothing)
    da.InsertCommand = New SqlCommandBuilder(da).GetInsertCommand()
    Dim dr As DataRow = dt.NewRow()
    dr("fee_id") = CureFeeNo
    dr("patient_id") = PatNo
    dr("feeitem_id") = ItmNo
    dr("fee_type") = "检查治疗费用"
    dr("fee") = Val(txtfee.Text)
    dr("cured_time") = Now
    dt.Rows.Add(dr)
    da.Update(dt)
    MsgBox("添加费用完成", vbOKOnly, "提示")
End Sub

Private Sub cmdexit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdexit.Click
    Me.Close()
    Me.Dispose()
End Sub

End Class

img


无法确认费用

da = Nothing
dt = sqlqry(sqlcmd, Nothing)
da.InsertCommand = New SqlCommandBuilder(da).GetInsertCommand()

你的da=Nothing
先用da.SelectCommand() = New SqlCommand(queryString, connection)进行初始化