以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]老师您好,询问一个比较基础的问题。  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=95516)

--  作者:rxfmrqq
--  发布时间:2017/1/22 13:57:00
--  [求助]老师您好,询问一个比较基础的问题。

Dim f As New Filler
If e.Form.Controls("ComboBox1").text = "赊欠"
    f.SourceTable = DataTables("销售明细")
    f.SourceCols ="时间,单据编号,客户"
    f.DataTable = DataTables("客户赊销明细")
    f.DataCols = "时间,单据编号,客户"
    f.ExcludeExistValue= True
    f.Fill()
End If


f.SourceTable = DataTables("销售明细") \'指定数据来源
f.SourceCols = "产品名称_通用名,价格,客户,包装规格,剂型,产品名称_商品名" \'指定数据来源列
f.DataTable = DataTables("客户价目表") \'指定数据接收表
f.DataCols = "产品名称_通用名,价格,客户,包装规格,剂型,产品名称_商品名"
f.Filter="客户 Is Not Null"
f.ExcludeExistValue= True
f.Fill()


f.SourceTable = DataTables("销售明细") \'指定数据来源
f.SourceCols = "时间,单据编号,产品名称_通用名,价格,数量,客户,包装规格,剂型,产品名称_商品名,批发,成本,类型,合计,利润,供货商" \'指定数据来源列
f.DataTable = DataTables("销售明细统计") \'指定数据接收表
f.DataCols = "时间,单据编号,产品名称_通用名,价格,数量,客户,包装规格,剂型,产品名称_商品名,批发,成本,类型,合计,利润,供货商" \'指定数据接收列
f.Filter="产品名称_商品名 Is Not Null"
f.ExcludeExistValue= True
f.Fill()


f.SourceTable = DataTables("销售明细")
f.SourceCols = "时间,单据编号,客户"
f.DataTable = DataTables("统计")
f.DataCols = "时间,单据编号,客户"
f.ExcludeExistValue = True
f.Fill()

 

Dim find As DataRow
find = DataTables("统计").Find("单据编号 = \'"& Forms("销售").Controls("Label单据编号").text &"\'")
find("实收")= e.Form.Controls("TextBox1").text

 

添加了这段代码后,运行时总提示 “未将对象引用设置到对象的实例。”请问一下老师,我是哪里出的问题?

这个是窗口的 按钮 click 事件


--  作者:rxfmrqq
--  发布时间:2017/1/22 14:09:00
--  

补充一下。  

 在 fill 完 ‘统计’ 表后,统计增加了一行, 但是我想将增加行中的 ‘实收’ 这列的数据,由我当前 form 的 textbox1 中写入。  所以有了最下面红字的那行 代码, 但是程序运行到这行代码的时候老是报错。

所以我想问问,到底是哪里出错了。


--  作者:18523982317
--  发布时间:2017/1/22 14:32:00
--  
find 返回的值不是行。。。。如果找到该行,那么返回1,否则好想是返回0,sqlfind才是返回找到的第一个行。。。。
--  作者:18523982317
--  发布时间:2017/1/22 14:33:00
--  
...
[此贴子已经被作者于2017/1/23 8:46:34编辑过]

--  作者:rxfmrqq
--  发布时间:2017/1/22 14:49:00
--  

那么老师,不用find 用什么呢、。


--  作者:rjh4078
--  发布时间:2017/1/22 15:55:00
--  

你要加个判断 确认符合你条件的行存在

 

Dim find As DataRow
find = DataTables("统计").Find("单据编号 = \'"& Forms("销售").Controls("Label单据编号").text &"\'")

if find isnot nothing then
find("实收")= e.Form.Controls("TextBox1").text

end if

 


--  作者:rxfmrqq
--  发布时间:2017/1/22 16:22:00
--  

嗯,加了判断语句,虽然不会报错了, 但是实际上还是找不到这行的存在。

刚才我又在这个事件里面加了好几个 find 语句, 但是全部找不到内容。

是不是我用法有问题?   用Select又直接报错。


--  作者:rjh4078
--  发布时间:2017/1/22 16:53:00
--  
你看下你的这段语句 find("实收")= e.Form.Controls("TextBox1").text 这句的意思是把 textbox的text赋值给实收列  你是这个意思吗?还是把实收列赋值给textbox?
--  作者:rxfmrqq
--  发布时间:2017/1/22 17:03:00
--  

是把 textbox 的值赋予 实收列

 

“实收”是接收列。


--  作者:有点色
--  发布时间:2017/1/22 17:41:00
--  

参考

 

For Each dr As DataRow In DataTables("统计").Select("")
    If dr.RowState = DataRowState.Added Then
        dr("实收")=  e.Form.Controls("TextBox1").text
    End If
Next