Foxtable(狐表)用户栏目专家坐堂 → 会计凭证的设计和录入


  共有14110人关注过本帖树形打印复制链接

主题:会计凭证的设计和录入

帅哥,在线噢!
有点蓝
  141楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106561 积分:541970 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/15 12:06:00 [只看该作者]

cmd.CommandText = "Select MIN(凭证号) FROM {财务数据源} Where 凭证号 NOT IN (SELECT 凭证号 FROM {财务数据源} Where 日期 >= #" & fd & "# And 日期 <=#" & ld & "#) as a where   字号 = '" & s & "'"

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  142楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/15 12:15:00 [只看该作者]

在财务数据源表中因为有借、贷方凭证号,肯定会出现重复凭证号的,这DISTINCT不能省略吧?

 回到顶部
帅哥,在线噢!
有点蓝
  143楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106561 积分:541970 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/15 13:32:00 [只看该作者]

同一个字号会有重复的凭证号?如果只取一个应该使用top 1,也不是DISTINCT

cmd.CommandText = "Select top 1 MIN(凭证号) FROM {财务数据源} Where 凭证号

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  144楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/15 21:51:00 [只看该作者]


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

当修改dh控件的凭证号,dh1自动生成以凭证号结尾的安日期生成单号的辅助号,我这样写红色标注代码报错。
Dim ydh1 As String = Forms("收款凭证").Controls("dh1").text
Dim d As Date  = e.Form.Controls("rq").Value
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim Days As Integer = Date.DaysInMonth(y,m)
Dim fd As Date = New Date(y,m,1) '获得该月的第一天
Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
Dim s As String = e.Form.Controls("TextBox2").text
If s.length > 2 Then
    s = s.SubString(0,2)
    If e.Sender.Value = e.NewValue Then
        Dim cmd As New SQLCommand
        cmd.CommandText = "Select count(*) Fro m {财务数据源} Where [字号] = '" & s & "' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "# And [凭证号] = '" & e.NewValue & "'"
        If cmd.ExecuteScalar > 0 Then
            e.Cancel = True
        Else
            Dim bh As String = s & "-" & Format(d,"yyyyMM") & "-" '生成编号的前缀
            Dim idx1 As Integer = CInt(e.NewValue)
            ydh1 = bh & Format(idx1,"00000")
            MessageBox.Show(ydh1)
        End If
    End If
End If


 回到顶部
帅哥,在线噢!
有点蓝
  145楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106561 积分:541970 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/15 23:02:00 [只看该作者]


 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  146楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/16 13:59:00 [只看该作者]

如144楼截图,rq控件的Validating事件,原来的代码是这样的:
Dim ydh As String = Forms("收款凭证").Controls("dh").text
Dim ydh1 As String = Forms("收款凭证").Controls("dh1").text
If ydh > "" And ydh1 > "" Then
        Dim y As Integer = cint(ydh1.substring(3,4))
        Dim m As Integer = cint(ydh1.substring(7,2))
        Dim Days As Integer = Date.DaysInMonth(y,m)
        Dim fd As Date = New Date(y,m,1) '获得该月的第一天
        Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
        If e.sender.value < fd OrElse e.sender.value > ld Then
            e.cancel = True '如果是,取消操作
            MessageBox.Show("修改的日期不能超出已保存单号所属月份","提示")
        End If
End If
只要ydh和ydh1不为空就执行判断,我的要求是有时选错了日期,在还没保存前,允许ydh和ydh1变,只有财务数据源表中已经保存了ydh和ydh1的数据,这两个控件的数才不允许变化,我把代码改为下面这样,结果不管财务数据源表有没有数据这两个控件的数据都没变!头痛!
Dim ydh As String = Forms("收款凭证").Controls("dh").text
Dim ydh1 As String = Forms("收款凭证").Controls("dh1").text
If ydh > "" And ydh1 > "" Then
    Dim s As String = e.Form.Controls("TextBox2").text
    If s.length > 2 Then
        s = s.SubString(0,2)
        Dim y As Integer = cint(ydh1.substring(3,4))
        Dim m As Integer = cint(ydh1.substring(7,2))
        Dim Days As Integer = Date.DaysInMonth(y,m)
        Dim fd As Date = New Date(y,m,1) '获得该月的第一天
        Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
        Dim cmd As New SQLCommand
        cmd.CommandText = "Select count(*) Fr om {财务数据源} Where [字号] = '" & s & "' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "# And [安日期生成单号辅助列] = '" & ydh1 & "'"
        If cmd.ExecuteScalar > 0 And e.sender.value < fd OrElse e.sender.value > ld Then
            e.cancel = True '如果是,取消操作
            MessageBox.Show("修改的日期不能超出已保存单号所属月份","提示")
        End If
    End If
End If

 回到顶部
帅哥,在线噢!
有点蓝
  147楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106561 积分:541970 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/16 14:12:00 [只看该作者]

If cmd.ExecuteScalar > 0 And (e.sender.value < fd OrElse e.sender.value > ld) Then

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  148楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/16 14:48:00 [只看该作者]

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

1、dh控件执行代码后我要取消效果,但不需要不让离开控件效果。
2、rq控件先选当前月份日数,再改选2020年12月份日数,又重选回今年1月日数,这样切换几次,dh和dh1控件上的数据没随之改变,我的要求是在未保存前,它们可随意切换,保存后这两个值都不能改变。

 回到顶部
帅哥,在线噢!
有点蓝
  149楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106561 积分:541970 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/16 15:17:00 [只看该作者]

1、不要到Validating事件处理,到enter事件判断,不能改的直接设置为只读(这个自己处理)
2、添加一个标签记录窗口状态,判断控件值如果是新增的就继续处理
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:收款凭证0616.zip



 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  150楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/16 17:03:00 [只看该作者]


你的方法
1、不要到Validating事件处理,到enter事件判断,不能改的直接设置为只读(这个自己处理),在Validating事件不能取消输入,它依然把修改的数字写进去了,如果自动变为只读,那我想把它改为另一个号就不能操作了,这办法行不通,我要求取消操作,允许离开控件。
2、添加一个标签记录窗口状态,rq控件先选当前月份日数,再改选2020年12月份日数,又重选回今年1月日数,这样切换几次,dh和dh1控件上的数据没随之改变,我的要求是在未保存前,它们可随意切换,保存后这两个值都不能改,没解决。

 回到顶部