以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于录入窗口设计的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=116845)

--  作者:冰点1976
--  发布时间:2018/4/1 13:47:00
--  关于录入窗口设计的问题
Dim cmb2 As WinForm.ComboBox = e.Form.Controls("ComboBox7")
Dim str2 As String = e.Form.Controls("ComboBox3").text
cmb2.ComboList = DataTables("数据总表").compute(("max(总码)") , "物品类别 = \'" & str2 & "\'") 
If cmb2.Items.Count = 1 Then
    cmb2.Text = cmb2.ComboList 
End If

[此贴子已经被作者于2018/4/1 13:48:08编辑过]

--  作者:冰点1976
--  发布时间:2018/4/1 13:52:00
--  
编制了一个新增物资录入窗口,已实现总码组合框(ComboBox3),根据物品类别组合框(ComboBox7)内容自动生成当前符合条件的最大值。
 我需要让它生成最大值加1,如何修改代码?
如果我需要增加一个条件,即:总码组合框(ComboBox3),不仅仅只是根据物品类别组合框(ComboBox7)内容自动生成,还要根据库字组合框(ComboBox1)的内容进行调整后,最终显示,如何增加代码?请老师赐教。


--  作者:冰点1976
--  发布时间:2018/4/1 14:06:00
--  
补充说明:原代码是cmb2.ComboList = DataTables("数据总表").GetComboListString("总码" , "物品类别 = \'" & str2 & "\'") 没有amp
--  作者:有点甜
--  发布时间:2018/4/1 16:25:00
--  

1、参考代码

 

cmb2.ComboList = DataTables("数据总表").GetComboListString("总码" , "物品类别 = \'" & str2 & "\' and 某列 = \'" & str3 & "\'")

 

http://www.foxtable.com/webhelp/scr/1647.htm

 

2、编号,参考

 

http://www.foxtable.com/webhelp/scr/2403.htm

 


--  作者:冰点1976
--  发布时间:2018/4/1 20:45:00
--  
Dim cmb2 As WinForm.ComboBox = e.Form.Controls("ComboBox7")
Dim str2 As String = e.Form.Controls("ComboBox3").text
Dim str3 As String = e.Form.Controls("ComboBox1").text
Dim lb As String = DataTables("数据总表").GetComboListString("物资分类_总码编制代码")
Dim max As String
Dim idx As Integer
max = DataTables("数据总表").compute(("max(总码)"), "物品类别 = \'" & str2 &  "\' And  库字 = \'" & str3  & "\'")
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
If cmb2.Items.Count = 1 Then
    cmb2.Text = lb & Format(idx,"000")
End If
[此贴子已经被作者于2018/4/1 20:44:51编辑过]

--  作者:冰点1976
--  发布时间:2018/4/1 20:47:00
--  
甜老师,最大值+1的代码,我参考你给的提示思考着编的,还有问题,请赐教!
--  作者:冰点1976
--  发布时间:2018/4/1 21:10:00
--  
没有 &


--  作者:有点甜
--  发布时间:2018/4/1 22:07:00
--  

Dim cmb2 As WinForm.ComboBox = e.Form.Controls("ComboBox7")
Dim str2 As String = e.Form.Controls("ComboBox3").text
Dim str3 As String = e.Form.Controls("ComboBox1").text
Dim max As String
Dim idx As Integer
max = DataTables("数据总表").compute(("max(总码)"), "物品类别 = \'" & str2 & "\' And  库字 = \'" & str3  & "\'")
msgbox(max)
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(0,3)) + 1 \'获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If

cmb2.Text = Format(idx,"000")

 

如果还不行,请上传具体foxtable项目测试


--  作者:冰点1976
--  发布时间:2018/4/1 23:00:00
--  
编码改成这样:idx = CInt(max.Substring(max.Length - 3)) + 1 \'获得最大编号的后三位顺序号,并加1
确实显示了最大值加1,但是只显示了总码的后三位数值,前面如:BHL-等编码缺失。
Dim cmb2 As WinForm.ComboBox = e.Form.Controls("ComboBox7")
Dim str2 As String = e.Form.Controls("ComboBox3").text
Dim str3 As String = e.Form.Controls("ComboBox1").text
Dim lb As String = DataTables("数据总表").GetComboListString("物资分类_总码编制代码")
Dim max As String
Dim idx As Integer
max = DataTables("数据总表").compute(("max(总码)"), "物品类别 = \'" & str2 & "\' And  库字 = \'" & str3  & "\'")
msgbox(max)
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(max.Length - 3)) + 1 \'获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
cmb2.Text = lb & Format(idx,"000")
我又改成这样,还是不对啊?

--  作者:冰点1976
--  发布时间:2018/4/1 23:11:00
--  
Dim lb As String = DataTables("数据总表").GetComboListString("物资分类_总码编制代码")
应该错在这个语句上,我再看下帮助,用正确的语句代替。