以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请帮看看datacolchanged里的代码有何问题?【ok了】  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=2994)

--  作者:mr725
--  发布时间:2009/6/2 18:47:00
--  请帮看看datacolchanged里的代码有何问题?【ok了】
说明: 只是为了简化 结果弄简为繁了。。。 见笑了~ 
全部都是字符型。  问题:
1  不能从第二列开始录入,否则会退出系统;
2  必须从第三列到第八列按顺序录入字符后,再录入第二列,这时,第十列会按要求自动赋值;
3  按2录入完后,就不能修改第二列 到 第九列的内容了,否则会退出系统。

不知道我的代码有何毛病,这里特别说明: 代码放在命令窗口时可以顺利执行!!!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


附件错了,重新上传
[此贴子已经被作者于2009-6-2 22:50:24编辑过]

--  作者:mr725
--  发布时间:2009/6/2 18:58:00
--  

````

[此贴子已经被作者于2009-6-2 19:01:29编辑过]

--  作者:yangming
--  发布时间:2009/6/2 19:00:00
--  
是这段代码?
If e.DataCol.Name = "导到每片" Then \'如果是已结帐列的内容变动
    If e.NewValue = True Then \'而且变动后的值是True(已勾选)
        for i as integer = 0 to tables("炉次.片号").count-1
            if i < 9
                tables("炉次.片号")(i,"炉次片号") = tables("炉次.片号")(i,"炉次编号") & "0" & i+1
            else
                tables("炉次.片号")(i,"炉次片号") = tables("炉次.片号")(i,"炉次编号") & i+1
            end if
        next
            e.DataRow.Locked = True \'那么锁定此行
    End If
End If

--  作者:mr725
--  发布时间:2009/6/2 19:02:00
--  
重新上传附加了~

奇怪,有时又可以修改?       知道了,可以修改,但不能删除那几列对应的单元格内容
[此贴子已经被作者于2009-6-2 20:16:47编辑过]

--  作者:八婺
--  发布时间:2009/6/2 20:54:00
--  
老兄想复杂了。

Dim s As String
dim drw as DataRow = e.DataRow
Dim ColNames As String = "第二列,第三列,第四列,第五列,第六列,第七列,第八列,第九列"
Dim cs() As string = ColNames.split(",")
for i as integer = 0 to cs.length-1
    s = drw("第二列") & "§" & drw("第三列") & "§" & drw("第四列") & "§" & drw("第五列") & "§" & drw("第六列") & "§" & drw("第七列") & "§" & drw("第八列") & "§" & drw("第九列")
    If s.Contains("§§") Then
        drw("第十列") = Nothing
    Else
        drw("第十列")= drw("第二列") & drw("第三列") & drw("第四列") & drw("第五列") & drw("第六列") & drw("第七列") & drw("第八列") & drw("第九列")
    end if
next


另外用ables("表A").current是极其错误的,因为一旦重置,都是以焦点所在行为基准而更改所有数据的。
--  作者:mr725
--  发布时间:2009/6/2 22:09:00
--  
谢谢啊~  就是想简化:【Tables("表A").current 是为了在命令窗口中测试用的】
Dim s As String
dim drw as DataRow = e.DataRow
Dim ColNames As String = "第二列,第三列,第四列,第五列,第六列,第七列,第八列,第九列"
Dim cs() As string = ColNames.split(",")
for i as integer = 0 to cs.length-1
    s = s & "§"  & drw("" & cs(i) & "") & "§"       \'这是简化后的
next
    If s.Contains("§§§") Then
        drw("第十列") = Nothing
    Else
        drw("第十列")= drw("第二列") & drw("第三列") & drw("第四列") & drw("第五列") & drw("第六列") & drw("第七列") & drw("第八列") & drw("第九列")   \'这段还没简化~
    end if

--  作者:八婺
--  发布时间:2009/6/2 22:30:00
--  
哦,我还没注意到你要简化,只是解决了出错问题。

Dim s,s1 As String
dim drw as DataRow = e.DataRow
Dim ColNames As String = "第二列,第三列,第四列,第五列,第六列,第七列,第八列,第九列"
Dim cs() As string = ColNames.split(",")
for i as integer = 0 to cs.length-1
    s = s & "§"  & drw(cs(i)) & "§"       \'这是简化后的
    s1 = s1 & drw(cs(i))
next
If s.Contains("§§§") Then
    drw("第十列") = Nothing
Else
    drw("第十列")= s1
end if

--  作者:八婺
--  发布时间:2009/6/2 22:38:00
--  
drw("" & cs(i) & "")
这段无需这样的,直接

drw(cs(i)) 就可以。
--  作者:mr725
--  发布时间:2009/6/2 22:50:00
--  

太感谢了~   确实是老师级的!!!