以文本方式查看主题

-  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=57785)

--  作者:youngk
--  发布时间:2014/10/2 15:37:00
--  请问:关于窗口的问题
我使用内部数据源设计了一个窗口,然后,以同样的代码、同样的方式在外部数据源中设计了一个同样的窗口,结果总是显示:未将对象引用设置到对象的实例。,是怎么回事呢?
--  作者:sloyy
--  发布时间:2014/10/2 15:42:00
--  
可能你上传你做的例子,解决的比较快,否则总是猜测.
--  作者:youngk
--  发布时间:2014/10/2 16:13:00
--  
Dim dtb As New DataTableBuilder("分账库存统计")
dtb.AddDef("货物大类", Gettype(String))
dtb.AddDef("客户名称", Gettype(String))
dtb.AddDef("货物种类", Gettype(String))
dtb.AddDef("日期", Gettype(Date))
dtb.AddDef("库存", Gettype(Decimal))
dtb.Build()
For Each nm() As String In DataTables("进出库信息记录").GetValues("客户名称|货物种类")
    Dim dr As DataRow = DataTables("分账库存统计").AddNew()
    dr("客户名称") = nm(0)
    dr("货物种类") = nm(1)
    Dim mr As DataRow
    mr = DataTables("进出库信息记录").find("[客户名称] = \'" & nm(0) & "\' And[货物种类] = \'" & nm(1) & "\'","[_SortKey] Desc")
    dr("日期") = mr("日期")
    dr("库存") = mr("库存")
    dr("货物大类") = mr("货物大类")
Next
MainTable= Tables("分账库存统计")
Dim Filter As String
With e.Form.Controls("ComboBox1")
    If .Value IsNot Nothing Then
        Filter = " 货物大类 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("DateTimePicker1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("DateTimePicker2")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("分账库存统计").Filter = Filter
End If
Dim g As New Subtotalgroup
g = New Subtotalgroup
g.GroupOn = "客户名称"
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "货物大类"
g.TotalOn = "库存"
g.Caption = "{0} 小计"
With Tables("分账库存统计")
    .SubtotalGroups.Add(g)
End With
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = "库存"
g.Caption = "总计"
With Tables("分账库存统计")
    .SubtotalGroups.Add(g)
    .Subtotal()
End With
With Tables("分账库存统计")
    .MergeMode = MergeModeEnum.free
    .MergeCols.Add("货物大类")
    .MergeCols.Add("客户名称")
    .AllowMerge = True
End With

--  作者:youngk
--  发布时间:2014/10/2 16:15:00
--  
在内部数据源的情况下,点击窗口按钮就可以,但是把这个代码换到外部数据源中就会显示:未将对象引用设置到对象的实例。请大师指点下,问题出在哪里呢?
--  作者:czy
--  发布时间:2014/10/2 16:53:00
--  

For Each nm() As String In DataTables("进出库信息记录").GetValues("客户名称|货物种类","[客户名称] Is Not Null and [货物种类] Is Not Null")


--  作者:czy
--  发布时间:2014/10/2 17:01:00
--  
以下是引用youngk在2014-10-2 16:15:00的发言:
在内部数据源的情况下,点击窗口按钮就可以,但是把这个代码换到外部数据源中就会显示:未将对象引用设置到对象的实例。请大师指点下,问题出在哪里呢?

 

只要数据加载进来了,在狐表中操作就没有内部外部之分,你的问题应该是进出库信息记录表中有空行

试试楼上的代码


--  作者:youngk
--  发布时间:2014/10/2 17:10:00
--  
果然是大神,问题就是出在这里。太感谢你了图片点击可在新窗口打开查看