Foxtable(狐表)用户栏目专家坐堂 → 怎样在租车系统中交叉统计车主和不是车主的驾驶员的各项费用?


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

主题:怎样在租车系统中交叉统计车主和不是车主的驾驶员的各项费用?

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


加好友 发短信
等级:超级版主 帖子:106046 积分:539323 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/5/23 11:50:00 [只看该作者]

1、列属性设置的列表项目和字典是无法自动刷新的,去掉列表项目和字典,参考这里用法设置下拉列表使用:http://www.foxtable.com/webhelp/scr/1457.htm

2、"驾驶员资料"和"车辆资料"改为独立或者模式窗口

 回到顶部
帅哥哟,离线,有人找我吗?
闻过则喜
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:312 威望:0 精华:0 注册:2019/4/20 13:12:00
  发帖心情 Post By:2019/5/23 17:05:00 [只看该作者]

老师,我想把车辆牌号中带汉字和字母的删除,只保留数值来做为车辆牌号的代码,便于快捷输入。
我写一段代码在命令窗口测试:
   1.当字母在个位上的时候,能顺利取出;(见图10)
   2.当字母在其他位置上或者有多个字母,就出错。(见图11、12)
   请帮我看一下问题出在哪里?
代码如下:
Dim cp As String = "川H9G22G"
cp = cp.Remove(0,2) '去除前两条'
Dim i As Integer
Dim l As Integer = cp.Length
For i = 1 To l
    If cp.Substring(i - 1,1) Like "[A-Z]" Then '按顺序一个一个取出来比较是不是字母
        Output.show("移出前:" & cp) 
        cp = cp.Remove(i - 1,1) ‘如果是字母,移出字母
        Output.show("移出后:" & cp)
        l = cp.length - 1 ’移出一个字母后,字符串长度减1
    End If
    Continue For ‘如果不是字母,循环
Next
Output.show(cp)


 回到顶部
帅哥哟,离线,有人找我吗?
闻过则喜
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:312 威望:0 精华:0 注册:2019/4/20 13:12:00
  发帖心情 Post By:2019/5/23 17:05:00 [只看该作者]


此主题相关图片如下:12.png
按此在新窗口浏览图片

此主题相关图片如下:11.png
按此在新窗口浏览图片
老师,我想把车辆牌号中带汉字和字母的删除,只保留数值来做为车辆牌号的代码,便于快捷输入。
我写一段代码在命令窗口测试:
   1.当字母在个位上的时候,能顺利取出;(见图10)
   2.当字母在其他位置上或者有多个字母,就出错。(见图11、12)
   请帮我看一下问题出在哪里?
代码如下:
Dim cp As String = "川H9G22G"
cp = cp.Remove(0,2) '去除前两条'
Dim i As Integer
Dim l As Integer = cp.Length
For i = 1 To l
    If cp.Substring(i - 1,1) Like "[A-Z]" Then '按顺序一个一个取出来比较是不是字母
        Output.show("移出前:" & cp) 
        cp = cp.Remove(i - 1,1) ‘如果是字母,移出字母
        Output.show("移出后:" & cp)
        l = cp.length - 1 ’移出一个字母后,字符串长度减1
    End If
    Continue For ‘如果不是字母,循环
Next
Output.show(cp)
此主题相关图片如下:10.png
按此在新窗口浏览图片

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/23 18:23:00 [只看该作者]

参考代码

 

Dim str = "川H9G22G"
str = System.Text.RegularExpressions.Regex.Replace(str, "[^0-9]", "")
msgbox(str)


 回到顶部
帅哥哟,离线,有人找我吗?
闻过则喜
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:312 威望:0 精华:0 注册:2019/4/20 13:12:00
  发帖心情 Post By:2019/5/30 12:05:00 [只看该作者]

老师你好,问题解决了,谢谢!

还有两个问题请指教一下:
    1.在表中我有一个“核对否”列,当单击“核对否”后,自动将表中的计算值传到另一个表中,但在实际操作中会误点了“核对否”,我就在DataColChanged的事件中加了一个'对话框'来提示,If MessageBox.Show("确认要核对吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
    If e.DataCol.Name = "核对否" AndAlso e.DataRow("核对否") = True Then
......
单击“是”,“核对否”点上‘对勾’,同时将表的部分内容传到了另一个表中,但单击“否”时,“核对否”仍然点上了‘对勾’(这里不要‘对勾’),请问是代码错了吗?
    2.虽然已确认核对,但有时还时需要修改,能否像财务软件一样红冲上次已点‘对勾’的传到另一个表中的数据,或者自动找出已传入另一个表中的数据且自动删除?修改前还是加一个‘对话框’进行提示,代码怎么写,请指教?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/30 12:10:00 [只看该作者]

datacolchanging事件


If e.DataCol.Name = "核对否" AndAlso e.newvalue = True Then
    If MessageBox.Show("确认要核对吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
        '执行代码
    Else
        e.cancel = True
    End If
End If
If e.DataCol.Name = "核对否" AndAlso e.newvalue = False Then
    If MessageBox.Show("确认要取消吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
        '执行代码
        DataTables("某表").deletefor("某列='" & e.DataRow("某列") & "'")
    Else
        e.cancel = True
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
闻过则喜
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:312 威望:0 精华:0 注册:2019/4/20 13:12:00
  发帖心情 Post By:2019/5/30 14:17:00 [只看该作者]

    If e.DataCol.Name = "核对否" AndAlso e.newvalue = False Then
    If MessageBox.Show("确认要取消吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
        '执行代码
        DataTables("某表").deletefor("某列='" & e.DataRow("某列") & "'")
    Else
        e.cancel = True
    End If
End If

老师,能解释一下这个代码吗?如果再执行代码,数据就传了两次到新的表中。
另外,请老师注释一下下面这个代码
   DataTables("某表").deletefor("某列='" & e.DataRow("某列") & "'")

 回到顶部
帅哥哟,离线,有人找我吗?
闻过则喜
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:312 威望:0 精华:0 注册:2019/4/20 13:12:00
  发帖心情 Post By:2019/5/30 14:48:00 [只看该作者]

If e.DataCol.Name = "核对否" AndAlso e.newvalue = False Then
    If MessageBox.Show("确认要取消吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
        If e.DataRow("驾驶员姓名") = e.DataRow("车主") Then
            Dim nma() As String = {"收车时间","所属公司","车主","车辆_牌号","天数","租车费_折扣","代驾费_折扣","代垫费_折扣","驾驶员_包干合计"} 'A表数据来源列
            Dim nmb() As String = {"日期","公司","姓名","车牌号","天数","租车费_本人","代驾费_本车","代垫费","包干合计"} 'B表数据接收列
            Dim dr As DataRow = DataTables("车主结算").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr(nmb(i)) = e.DataRow(nma(i))
            Next
            DataTables("车主结算").deletefor("日期='" & e.DataRow("日期") & "'")

出现以下错误:
.NET Framework 版本:2.0.50727.8941
Foxtable 版本:2019.4.12.1
错误所在事件:表,出车明细,DataColChanging
详细错误信息:
调用的目标发生了异常。
列“日期”不属于表 出车明细。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/30 15:45:00 [只看该作者]

 

DataTables("车主结算").deletefor("日期=#" & e.DataRow("收车时间") & "# and 车牌号 = '" & e.datarow("车辆_牌号") & "'")

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
闻过则喜
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:312 威望:0 精华:0 注册:2019/4/20 13:12:00
  发帖心情 Post By:2019/5/30 17:46:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:7.png
图片点击可在新窗口打开查看
老师,在DataColChanging中输入了下面的代码,在“核对否”中单击取消后,不仅把数据接收表的数据删除了,同时还把数据来源表的数据删除了,是怎么回事?
图片点击可在新窗口打开查看此主题相关图片如下:6.png
图片点击可在新窗口打开查看

If e.DataCol.Name = "核对否" AndAlso e.newvalue = True Then
    If MessageBox.Show("确认要核对吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
        If e.DataRow("驾驶员姓名") = e.DataRow("车主") Then
            Dim nma() As String = {"收车时间","所属公司","车主","车辆_牌号","天数","租车费_折扣","代驾费_折扣","代垫费_折扣","驾驶员_包干合计"} 'A表数据来源列
            Dim nmb() As String = {"日期","公司","姓名","车牌号","天数","租车费_本人","代驾费_本车","代垫费","包干合计"} 'B表数据接收列
            Dim dr As DataRow = DataTables("车主结算").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr(nmb(i)) = e.DataRow(nma(i))
            Next
        Else
            If e.DataRow("驾驶员姓名") = "单位自驾" Then
                Dim nma() As String = {"收车时间","所属公司","车主","车辆_牌号","天数","租车费_折扣","车主_包干合计"} 'A表数据来源列
                Dim nmb() As String = {"日期","公司","姓名","车牌号","天数","租车费_非本人","包干合计"} 'B表数据接收列
                Dim dr As DataRow = DataTables("车主结算").AddNew
                For i As Integer = 0 To nma.Length - 1
                    dr(nmb(i)) = e.DataRow(nma(i))
                Next
            Else
                Dim nma1() As String = {"收车时间","所属公司","驾驶员姓名","车辆_牌号","天数","代驾费_折扣","代垫费_折扣"} 'A表数据来源列
                Dim nmb1() As String = {"日期","公司","姓名","车牌号","天数","代驾费_非本车","代垫费"} 'B表数据接收列
                Dim dr1 As DataRow = DataTables("车主结算").AddNew
                For i As Integer = 0 To nma1.Length - 1
                    dr1(nmb1(i)) = e.DataRow(nma1(i))
                Next
                Dim nma2() As String = {"收车时间","所属公司","车主","车辆_牌号","天数","租车费_折扣","车主_包干合计"} 'A表数据来源列
                Dim nmb2() As String = {"日期","公司","姓名","车牌号","天数","租车费_非本人","包干合计"} 'B表数据接收列
                Dim dr2 As DataRow = DataTables("车主结算").AddNew
                For i As Integer = 0 To nma2.Length - 1
                    dr2(nmb2(i)) = e.DataRow(nma2(i))
                Next
            End If
        End If
        Dim nma3() As String = {"收车时间","承租单位","天数","租车费_小计","代驾费_小计","代垫费_小计","总计"} 'A表数据来源列
        Dim nmb3() As String = {"日期","单位名称","天数","租车费","代驾费","代垫费","合计"} 'B表数据接收列
        Dim dr3 As DataRow = DataTables("单位结算").AddNew
        For i As Integer = 0 To nma3.Length - 1
            dr3(nmb3(i)) = e.DataRow(nma3(i))
        Next
    Else
        e.cancel = True
    End If
End If
If e.DataCol.Name = "核对否" AndAlso e.newvalue = False Then
    If MessageBox.Show("确认要取消吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
        If e.DataRow("驾驶员姓名") = e.DataRow("车主") Then
            Dim nma() As String = {"收车时间","所属公司","车主","车辆_牌号","天数","租车费_折扣","代驾费_折扣","代垫费_折扣","驾驶员_包干合计"} 'A表数据来源列
            Dim nmb() As String = {"日期","公司","姓名","车牌号","天数","租车费_本人","代驾费_本车","代垫费","包干合计"} 'B表数据接收列
            Dim dr As DataRow = DataTables("车主结算").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr(nmb(i)) = e.DataRow(nma(i))
            Next
            DataTables("车主结算").deletefor("日期=#" & e.DataRow("收车时间") & "# and 车牌号 = '" & e.DataRow("车辆_牌号") & "'")
        Else
            If e.DataRow("驾驶员姓名") = "单位自驾" Then
                Dim nma() As String = {"收车时间","所属公司","车主","车辆_牌号","天数","租车费_折扣","车主_包干合计"} 'A表数据来源列
                Dim nmb() As String = {"日期","公司","姓名","车牌号","天数","租车费_非本人","包干合计"} 'B表数据接收列
                Dim dr As DataRow = DataTables("车主结算").AddNew
                For i As Integer = 0 To nma.Length - 1
                    dr(nmb(i)) = e.DataRow(nma(i))
                Next
                DataTables("车主结算").deletefor("日期=#" & e.DataRow("收车时间") & "# and 车牌号 = '" & e.DataRow("车辆_牌号") & "'")
            Else
                Dim nma1() As String = {"收车时间","所属公司","驾驶员姓名","车辆_牌号","天数","代驾费_折扣","代垫费_折扣"} 'A表数据来源列
                Dim nmb1() As String = {"日期","公司","姓名","车牌号","天数","代驾费_非本车","代垫费"} 'B表数据接收列
                Dim dr1 As DataRow = DataTables("车主结算").AddNew
                For i As Integer = 0 To nma1.Length - 1
                    dr1(nmb1(i)) = e.DataRow(nma1(i))
                Next
                DataTables("车主结算").deletefor("日期=#" & e.DataRow("收车时间") & "# and 车牌号 = '" & e.DataRow("车辆_牌号") & "'")
                Dim nma2() As String = {"收车时间","所属公司","车主","车辆_牌号","天数","租车费_折扣","车主_包干合计"} 'A表数据来源列
                Dim nmb2() As String = {"日期","公司","姓名","车牌号","天数","租车费_非本人","包干合计"} 'B表数据接收列
                Dim dr2 As DataRow = DataTables("车主结算").AddNew
                For i As Integer = 0 To nma2.Length - 1
                    dr2(nmb2(i)) = e.DataRow(nma2(i))
                Next
                DataTables("车主结算").deletefor("日期=#" & e.DataRow("收车时间") & "# and 车牌号 = '" & e.DataRow("车辆_牌号") & "'")
            End If
        End If
        Dim nma3() As String = {"收车时间","承租单位","天数","租车费_小计","代驾费_小计","代垫费_小计","总计"} 'A表数据来源列
        Dim nmb3() As String = {"日期","单位名称","天数","租车费","代驾费","代垫费","合计"} 'B表数据接收列
        Dim dr3 As DataRow = DataTables("单位结算").AddNew
        For i As Integer = 0 To nma3.Length - 1
            dr3(nmb3(i)) = e.DataRow(nma3(i))
        Next
        DataTables("单位结算").deletefor("日期=#" & e.DataRow("收车时间") & "# and 单位名称 = '" & e.DataRow("承租单位") & "'")
    Else
        e.cancel = True
    End If
End If

 回到顶部
总数 53 上一页 1 2 3 4 5 6 下一页