以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]再帮看一个错误提示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50065)

--  作者:花开的声音
--  发布时间:2014/4/28 20:48:00
--  [求助]再帮看一个错误提示
在用窗口中的控件给表赋值时,提示如下图错误,麻烦帮看下。同样的代码和相似的界面,另一处这样写都没有错误。


图片点击可在新窗口打开查看此主题相关图片如下:bbbb.jpg
图片点击可在新窗口打开查看

代码如下:
Dim t As Table = e.Form.Controls("基层法律服务人员信息表").Table
For Each c As Col In t.Cols
    For Each ctl As WinForm.Control In e.Form.Controls
        If ctl.Name.Contains(c.Name) Then
            Select ctl.Gettype.Name
                Case "textbox","combobox","DateTimePicker"
                 t.Current(c.Name) = e.Form.Controls(ctl.Name).Value
            End Select
        End If
    Next
Next
e.Form.Controls("基层法律服务人员信息表").Table.DataTable.Save

--  作者:有点甜
--  发布时间:2014/4/28 20:56:00
--  

 信息量不够。

 

 你有一列 A4,是逻辑类型的?对应的你在窗口里用什么控件来赋值?值又是什么?


--  作者:有点甜
--  发布时间:2014/4/28 21:02:00
--  

 猜一下,你看红色代码,改成你对应的提示值。

 

Dim t As Table = e.Form.Controls("基层法律服务人员信息表").Table
For Each c As Col In t.Cols
    If c.Name = "A4" Then
        t.Current(c.Name) = (e.Form.Controls(ctl.Name).Value = "是")
    Else
        For Each ctl As WinForm.Control In e.Form.Controls
            If ctl.Name.Contains(c.Name) Then
                Select ctl.Gettype.Name
                    Case "textbox","combobox","DateTimePicker"
                        t.Current(c.Name) = e.Form.Controls(ctl.Name).Value
                End Select
            End If
        Next
    End If
Next
e.Form.Controls("基层法律服务人员信息表").Table.DataTable.Save


--  作者:花开的声音
--  发布时间:2014/4/28 21:15:00
--  
找到问题了,原来在窗口里面还有一个5个页面,其中里面有一个设置纸张大小的,默认的就是A4纸,呵呵。这个怎么排除掉呢?
--  作者:有点甜
--  发布时间:2014/4/28 21:20:00
--  

 你说的是这个控件的值是不需要的?

 

 那么你看看这个控件的name是什么,看能否改一下,改成不同的,使这句代码不通过就行了 If ctl.Name.Contains(c.Name) Then

 

 也就是说控件的名字 不能包含列的名字,这样才能排除。

[此贴子已经被作者于2014-4-28 21:20:58编辑过]

--  作者:花开的声音
--  发布时间:2014/4/28 22:00:00
--  
这个控件是组合框,控件名称是“选择纸张”,在这个窗口中,除了这个控件之外再也没有同名的,表中也没有这个名字的列。
--  作者:有点甜
--  发布时间:2014/4/28 22:09:00
--  
以下是引用花开的声音在2014-4-28 22:00:00的发言:
这个控件是组合框,控件名称是“选择纸张”,在这个窗口中,除了这个控件之外再也没有同名的,表中也没有这个名字的列。

 

呃,你用msgbox弹出一下两个值,看是哪两个名字出的错

 

 

               Select ctl.Gettype.Name
                    Case "textbox","combobox","DateTimePicker"

                        msgbox(c.Name & " " & ctl.Name)
                        t.Current(c.Name) = e.Form.Controls(ctl.Name).Value
                End Select


--  作者:花开的声音
--  发布时间:2014/4/28 22:15:00
--  
我改成下面的代码就没有提示错误了。
Dim t As Table = e.Form.Controls("基层法律服务人员信息表").Table
For Each c As Col In t.Cols
    For Each ctl As WinForm.Control In e.Form.Controls
        If ctl.Name <> "选择纸张" Then
            If ctl.Name.Contains(c.Name) Then
                Select ctl.Gettype.Name
                    Case "textbox","combobox","DateTimePicker"
                        \'t.Current(c.Name) = e.Form.Controls(ctl.Name).Checked
                        \'Case Else
                        t.Current(c.Name) = e.Form.Controls(ctl.Name).Value
                End Select
            End If
        End If
    Next
Next
e.Form.Controls("基层法律服务人员信息表").Table.DataTable.Save

--  作者:花开的声音
--  发布时间:2014/4/28 22:16:00
--  
Dim t As Table = e.Form.Controls("基层法律服务人员信息表").Table
For Each c As Col In t.Cols
    For Each ctl As WinForm.Control In e.Form.Controls
        If ctl.Name <> "选择纸张" Then
            If ctl.Name.Contains(c.Name) Then
                Select ctl.Gettype.Name
                    Case "textbox","combobox","DateTimePicker"
                        t.Current(c.Name) = e.Form.Controls(ctl.Name).Value
                End Select
            End If
        End If
    Next
Next
e.Form.Controls("基层法律服务人员信息表").Table.DataTable.Save

--  作者:有点甜
--  发布时间:2014/4/28 22:19:00
--  

 最好是改一下你的这个控件的名字 【选择纸张】

 

 你的列里面,肯定有一个叫做 纸张、选择、择纸... 类似列名