以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教一下如何写窗口表中自动编号的按钮代码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137839)

--  作者:旭日生
--  发布时间:2019/7/17 1:16:00
--  请教一下如何写窗口表中自动编号的按钮代码?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test1.foxdb


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

[此贴子已经被作者于2019/7/17 6:46:58编辑过]

--  作者:旭日生
--  发布时间:2019/7/17 8:15:00
--  

补充一下才更准确,更实用,没有漏洞:升序后某列,相同数据填入相同编号,不同数据自然增1。

 


图片点击可在新窗口打开查看此主题相关图片如下:image 683.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/7/17 8:18:15编辑过]

--  作者:有点蓝
--  发布时间:2019/7/17 9:31:00
--  
Dim txt1 As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim t As Table = e.Form.controls("table1").Table
Dim r As Row = t.Rows(0)
Dim k As Integer = val(txt1.Text)
r("第二列") = Format(k,"0000")
For i As Integer = 1 To t.Rows.Count - 1
    Dim r2 As Row = t.Rows(i)
    If r("第一列") = r2("第一列") Then
        r2("第二列") = r("第二列")
    Else
        k += 1
        r2("第二列") = Format(k,"0000")
    End If
    r = r2
Next

--  作者:旭日生
--  发布时间:2019/7/17 17:34:00
--  
谢谢蓝版。在这段代码启发之下,弄了半天还是没写出没有瑕疵的代码。我想要的是在原列(第一列)直接改写数据,而不是写到第二列中。
这段代码有点接近想要的,但还是有瑕疵。2个相同列数据时能得到正确结果,3个以上得不到。
Dim txt1 As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim k As Integer = val(txt1.Text)
Dim t As Table = e.Form.controls("table1").Table

For i As Integer = t.TopPosition To t.BottomPosition
    Dim r As Row = t.Rows(i)
    Dim r2 As Row = t.Rows(i+1)
    
    If r("第一列") = r2("第一列") Then
        msgbox(r("第一列"))
        msgbox(r2("第一列"))
        r("第一列") = format(val(txt1.text)+(i-t.TopPosition), "0000")
        r2("第一列") =  r("第一列")
    Else
        r2("第一列") = format(val(txt1.text)+(i-t.TopPosition), "0000")
    End If
    r("第二列") = format(val(txt1.text)+(i-t.TopPosition), "0000")
    
    
Next
[此贴子已经被作者于2019/7/17 17:44:27编辑过]

--  作者:有点蓝
--  发布时间:2019/7/17 17:56:00
--  
Dim txt1 As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim t As Table = e.Form.controls("table1").Table
Dim r As Row = t.Rows(0)
Dim m As String = r("第一列")
Dim k As Integer = val(txt1.Text)
r("第一列") = Format(k,"0000")
For i As Integer = 1 To t.Rows.Count - 1
    Dim r2 As Row = t.Rows(i)
    If m = r2("第一列") Then
        r2("第一列") = r("第一列")
    Else
        k += 1
        m = r2("第一列")
        r2("第一列") = Format(k,"0000")
    End If
    r = r2
Next

--  作者:旭日生
--  发布时间:2019/7/17 18:19:00
--  
好的。谢谢。还是简单好,想复杂了。