如何检查MS数据库表是否为空 [英] how to check MS database table is empty or not
问题描述
嗨..
我正在开发发票管理系统,我想检查发票表是否为空,如果发票表中的emp_id为空,则textbox1值= 1或emp_id值已填充然后textbox1值为emp_id + 1,我尝试多种方式但结果为null,所以请帮助我,我的代码和结果如下..
conq = 新 OleDbConnection( Provider = Microsoft.jet.oledb.4.0; data source = D:\Programs\sathish\invoicedb.mdb)
conq.Open()
cmdq = 新 OleDbCommand( 从发票中选择max(invoiceid) ,conq)
adpq = 新 OleDbDataAdapter(cmdq)
dsq.Clear()
adpq.Fill( dsq, invoi ceid)
DataGridView2.DataSource = dsq.Tables( 0 )
Dim i As 整数
i = DataGridView2.CurrentRow.Index
如果 DataGridView2.Item( 0 ,i).Value = 0 然后
TextBox12.Text = 1
ElseIf DataGridView2.Item( 0 ,i).Value> = 0 然后
TextBox11 .Text = DataGridView2.Item( 0 ,i).Value.ToString
TextBox12.Text = Val(TextBox11.Text + 1 )
结束 如果
此代码正确运行在id已经填充的情况下,但表是空的然后它显示错误,错误是
运算符'='未定义类型'DBNull'并键入'整数'。
请发送您的想法..
您有两种可选方式:
1)检查网格的单元格是否包含: DBNull.Value [ ^ ]
2)更改查询以返回不可为空的值;)
如果 不 DataGrid View2.Item( 0 ,i).Value DbNull.Value 然后 ' 继续
选择 MAX( COALESCE (invoiceid, 0 ))来自 invoice
dataset.tables(nameofthetable) .rows.count
我解决了这个问题,我的代码在下面..
公开 Sub 显示()
Dim con As OleDbConnection = 新 OleDbConnection( Provider = Microsoft.jet.oledb.4.0; data source = D:\Programs\sathish \\ invoicedb.mdb)
con.Open()
cmd = 新 OleDbCommand( 从发票中选择invoiceid,con)
adp = 新 OleDbDataAdapter (cmd)
Dim ds12 As DataSet
ds12 = 新 DataSet
adp.Fill(ds12, invoice)
如果 ds12.Tables( 发票)。Rows.Count = 0 然后
TextBox11.Text = 1
否则
cmd = 新 OleDbCommand( 从发票,con)中选择MAX(invoiceid)
adp = 新 OleDbDataAdapter(cmd)
ds12 = 新 DataSet
adp.Fill(ds12, invoice)
TextBox11.Text =(ds12.Tables ( 0 )。行( 0 )。项目( 0 ))+ 1
con.Close()
结束 如果
结束 Sub < /跨度>
hi..
I am developing invoice management system,i want to check the invoice table is empty or not, if the emp_id is empty in invoice table then textbox1 value=1 or the emp_id values are already fill then the textbox1 value is emp_id+1,i try to many way but result is null, so pls help me, my code and the result is below..
conq = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=D:\Programs\sathish\invoicedb.mdb") conq.Open() cmdq = New OleDbCommand("select max(invoiceid) from invoice", conq) adpq = New OleDbDataAdapter(cmdq) dsq.Clear() adpq.Fill(dsq, "invoiceid") DataGridView2.DataSource = dsq.Tables(0)
Dim i As Integer i = DataGridView2.CurrentRow.Index If DataGridView2.Item(0, i).Value = 0 Then TextBox12.Text = 1 ElseIf DataGridView2.Item(0, i).Value >= 0 Then TextBox11.Text = DataGridView2.Item(0, i).Value.ToString TextBox12.Text = Val(TextBox11.Text + 1) End If
this code is properly run in the id is already fill case but the table is empty then it's show the error,the error is
"Operator '=' is not defined for type 'DBNull' and type 'Integer'."
pls send your ideas..解决方案You have 2 optional ways:
1) check if grid's cell contains: DBNull.Value[^]
2) change query to return not nullable value ;)
If Not DataGridView2.Item(0, i).Value Is DbNull.Value Then 'proceed
select MAX(COALESCE(invoiceid,0)) from invoice
dataset.tables("nameofthetable").rows.count
i solve this problem my code is below..
Public Sub Display() Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=D:\Programs\sathish\invoicedb.mdb") con.Open() cmd = New OleDbCommand("select invoiceid from invoice ", con) adp = New OleDbDataAdapter(cmd) Dim ds12 As DataSet ds12 = New DataSet adp.Fill(ds12, "invoice") If ds12.Tables("invoice").Rows.Count = 0 Then TextBox11.Text = "1" Else cmd = New OleDbCommand("select MAX(invoiceid) from invoice ", con) adp = New OleDbDataAdapter(cmd) ds12 = New DataSet adp.Fill(ds12, "invoice") TextBox11.Text = (ds12.Tables(0).Rows(0).Item(0)) + 1 con.Close() End If End Sub
这篇关于如何检查MS数据库表是否为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文