Foxtable(狐表)用户栏目专家坐堂 → 帮我看一下这个个代码错在哪里


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

主题:帮我看一下这个个代码错在哪里

帅哥哟,离线,有人找我吗?
荟美绘姿
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:238 积分:1838 威望:0 精华:0 注册:2014/7/1 8:56:00
帮我看一下这个个代码错在哪里  发帖心情 Post By:2016/3/16 11:40:00 [只看该作者]

If e.Form.Controls("TextBox6").Text = "" Then
    MessageBox.Show("车牌号码不能为空")
    Return
End If
If e.Form.Controls("ComboBox1").Text = "" Then
    MessageBox.Show("车牌颜色不能为空")
    Return
End If
Tables("wztz").AddNew()
Tables("wztz").current("dwjbqh_dwmc")=e.Form.Controls("TextBox2").text
Tables("wztz").current("dwjbqh_dwdz")=e.Form.Controls("TextBox3").text
Tables("wztz").current("dwjbqh_lxdh")=e.Form.Controls("TextBox4").text
Tables("wztz").current("dwjbqh_yzbm")=e.Form.Controls("TextBox5").text
Tables("wztz").current("cljbqh_cphm")=e.Form.Controls("TextBox6").text
Tables("wztz").current("cljbqh_cpys")=e.Form.Controls("ComboBox1").text
Tables("wztz").current("wzjbqh_wzxw")=e.Form.Controls("ComboBox2").text
Tables("wztz").current("wzjbqh_wzdd")=e.Form.Controls("ComboBox3").text
Tables("wztz").current("wzjbqh_wzsj")=e.Form.Controls("DateTimePicker1").text
Tables("wztz").current("clhj")=e.Form.Controls("TEXTBox8").text
Tables("wztz").current("yjbm")=e.Form.Controls("ComboBox5").text
Tables("wztz").current("ajly")=e.Form.Controls("ComboBox6").text
Tables("wztz").current("cfqh_ajzt")=e.Form.Controls("TextBox1").text
Tables("wztz").current("tjqh")=e.Form.Controls("TextBox9").text
Tables("wztz").current("clfs")=e.Form.Controls("TextBox12").text
'以下代码为照片指定存储文件夹及照片文件名改名
Dim img = e.form.controls("picturebox1").image
If img IsNot Nothing Then
    Dim ip As String = FileSys.ReadAllText(ProjectPath & "ip.txt")
    Dim path As String = "\\" & ip & "/wzzpimage/" & e.Form.Controls("TextBox6").text & format(e.Form.Controls("DateTimePicker1").value, "yyyyMMddHHmmss") & Tables("wztz").current("tzdbh") & ".jpg"
    img.Save(path)
    Tables("wztz").current("wzzp")=path
End If
'以上代码为照片指定存储文件夹及照片文件名改名
Dim i As Integer
For i  = DataTables("bmd").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("bmd").DataRows(i)
    Dim dr2 As DataRow = DataTables("wztz").Find("cljbqh_cphm='" & dr("cphm") & "' and cljbqh_cpys='" & dr("cpys") & "' and _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
Tables("wztz").Current.Save()
Tables("wztz").Current.Locked = True
Tables("dwqh").AddNew()
Tables("clxx").AddNew()
Tables("dwqh").current("dwmc")=e.Form.Controls("TextBox2").text
Tables("clxx").current("cldw")=e.Form.Controls("TextBox2").text
Tables("dwqh").current("dydz")=e.Form.Controls("TextBox3").text
Tables("dwqh").current("lxdh")=e.Form.Controls("TextBox4").text
Tables("dwqh").current("yzbm")=e.Form.Controls("TextBox5").text
Tables("clxx").current("clhm")=e.Form.Controls("TextBox6").text
Tables("clxx").current("cpys")=e.Form.Controls("ComboBox1").text
Tables("clxx").current("xlqh_qd")=e.Form.Controls("TextBox7").text
Tables("clxx").current("xlqh_zd")=e.Form.Controls("TextBox10").text
Tables("clxx").current("xltjd")=e.Form.Controls("TextBox11").text
For i  As Integer = DataTables("clxx").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("clxx").DataRows(i)
    Dim dr2 As DataRow = DataTables("clxx").Find("clhm='" & dr("clhm") & "' and cpys='" & dr("cpys") & "' and _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
For i  As Integer = DataTables("dwqh").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("dwqh").DataRows(i)
    Dim dr2 As DataRow = DataTables("dwqh").Find("dwmc='" & dr("dwmc") & "' and dydz='" & dr("dydz") & "' And _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
Tables("clxx").Current.Save()
Tables("clxx").Current.Locked = True
Tables("dwqh").Current.Save()
Tables("dwqh").Current.Locked = True
For Each s As String In "TextBox1|TextBox2|TextBox3|TextBox4|TextBox5|TextBox6|TextBox7|TextBox8|TextBox10|TextBox11|ComboBox1|ComboBox2|ComboBox3|ComboBox5|ComboBox6".Split("|") '注意TextBox的名称
    e.Form.Controls(s).Text = ""
Next
DataTables.Save()

 

我的要求是在

'以上代码为照片指定存储文件夹及照片文件名改名
Dim i As Integer
For i  = DataTables("bmd").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("bmd").DataRows(i)
    Dim dr2 As DataRow = DataTables("wztz").Find("cljbqh_cphm='" & dr("cphm") & "' and cljbqh_cpys='" & dr("cpys") & "' and _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next

 

当在“wztz”表内新增时"cljbqh_cphm"、“cljbqh_cpys"与"bmd"中有"cphm"、“cpys”进行比对,如果“bmd”表中有就不新增,反之没有就新增

请大侠帮忙解决一下下


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/16 12:51:00 [只看该作者]

Dim i As Integer
For i  = DataTables("wztz").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("wztz").DataRows(i)
    Dim dr2 As DataRow = DataTables("bmd").Find("cljbqh_cphm='" & dr("cphm") & "' and cpys='" & dr("cljbqh_cpys") & "'")
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
荟美绘姿
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:238 积分:1838 威望:0 精华:0 注册:2014/7/1 8:56:00
  发帖心情 Post By:2016/3/17 12:36:00 [只看该作者]

If e.Form.Controls("TextBox6").Text = "" Then
    MessageBox.Show("车牌号码不能为空")
    Return
End If
If e.Form.Controls("ComboBox1").Text = "" Then
    MessageBox.Show("车牌颜色不能为空")
    Return
End If
Tables("wztz").AddNew()
Tables("wztz").current("dwjbqh_dwmc")=e.Form.Controls("TextBox2").text
Tables("wztz").current("dwjbqh_dwdz")=e.Form.Controls("TextBox3").text
Tables("wztz").current("dwjbqh_lxdh")=e.Form.Controls("TextBox4").text
Tables("wztz").current("dwjbqh_yzbm")=e.Form.Controls("TextBox5").text
Tables("wztz").current("cljbqh_cphm")=e.Form.Controls("TextBox6").text
Tables("wztz").current("cljbqh_cpys")=e.Form.Controls("ComboBox1").text
Tables("wztz").current("wzjbqh_wzxw")=e.Form.Controls("ComboBox2").text
Tables("wztz").current("wzjbqh_wzdd")=e.Form.Controls("ComboBox3").text
Tables("wztz").current("wzjbqh_wzsj")=e.Form.Controls("DateTimePicker1").text
Tables("wztz").current("clhj")=e.Form.Controls("TEXTBox8").text
Tables("wztz").current("yjbm")=e.Form.Controls("ComboBox5").text
Tables("wztz").current("ajly")=e.Form.Controls("ComboBox6").text
Tables("wztz").current("cfqh_ajzt")=e.Form.Controls("TextBox1").text
Tables("wztz").current("tjqh")=e.Form.Controls("TextBox9").text
Tables("wztz").current("clfs")=e.Form.Controls("TextBox12").text
'以下代码为照片指定存储文件夹及照片文件名改名
Dim img = e.form.controls("picturebox1").image
If img IsNot Nothing Then
    Dim ip As String = FileSys.ReadAllText(ProjectPath & "ip.txt")
    Dim path As String = "\\" & ip & "/wzzpimage/" & e.Form.Controls("TextBox6").text & format(e.Form.Controls("DateTimePicker1").value, "yyyyMMddHHmmss") & Tables("wztz").current("tzdbh") & ".jpg"
    img.Save(path)
    Tables("wztz").current("wzzp")=path
End If
'以上代码为照片指定存储文件夹及照片文件名改名
Dim r As Integer
For r  = DataTables("bmd").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("bmd").DataRows(r)
    Dim dr2 As DataRow = DataTables("wztz").Find("cljbqh_cphm='" & dr("cphm") & "' and cljbqh_cpys='" & dr("cpys") & "'")
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
DataTables("wztz").ReplaceFor("_Locked",True,"")
Tables("wztz").Current.Save()
Tables("wztz").Current.Locked = True
Tables("dwqh").AddNew()
Tables("clxx").AddNew()
Tables("dwqh").current("dwmc")=e.Form.Controls("TextBox2").text
Tables("clxx").current("cldw")=e.Form.Controls("TextBox2").text
Tables("dwqh").current("dydz")=e.Form.Controls("TextBox3").text
Tables("dwqh").current("lxdh")=e.Form.Controls("TextBox4").text
Tables("dwqh").current("yzbm")=e.Form.Controls("TextBox5").text
Tables("clxx").current("clhm")=e.Form.Controls("TextBox6").text
Tables("clxx").current("cpys")=e.Form.Controls("ComboBox1").text
Tables("clxx").current("xlqh_qd")=e.Form.Controls("TextBox7").text
Tables("clxx").current("xlqh_zd")=e.Form.Controls("TextBox10").text
Tables("clxx").current("xltjd")=e.Form.Controls("TextBox11").text
For i  As Integer = DataTables("clxx").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("clxx").DataRows(i)
    Dim dr2 As DataRow = DataTables("clxx").Find("clhm='" & dr("clhm") & "' and cpys='" & dr("cpys") & "' and _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
For i  As Integer = DataTables("dwqh").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("dwqh").DataRows(i)
    Dim dr2 As DataRow = DataTables("dwqh").Find("dwmc='" & dr("dwmc") & "' and dydz='" & dr("dydz") & "' And _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
Tables("clxx").Current.Save()
Tables("clxx").Current.Locked = True
Tables("dwqh").Current.Save()
Tables("dwqh").Current.Locked = True
For Each s As String In "TextBox1|TextBox2|TextBox3|TextBox4|TextBox5|TextBox6|TextBox7|TextBox8|TextBox10|TextBox11|ComboBox1|ComboBox2|ComboBox3|ComboBox5|ComboBox6".Split("|") '注意TextBox的名称
    e.Form.Controls(s).Text = ""
Next
DataTables.Save()

 

 

上面中间的这段代码为何无法实现

Dim r As Integer
For r  = DataTables("bmd").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("bmd").DataRows(r)
    Dim dr2 As DataRow = DataTables("wztz").Find("cljbqh_cphm='" & dr("cphm") & "' and cljbqh_cpys='" & dr("cpys") & "'")
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
DataTables("wztz").ReplaceFor("_Locked",True,"")

如果r改成i就会报错

[此贴子已经被作者于2016/3/17 12:37:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/17 14:34:00 [只看该作者]

For i As Integer  = DataTables("bmd").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("bmd").DataRows(i)
    Dim dr2 As DataRow = DataTables("wztz").Find("cljbqh_cphm='" & dr("cphm") & "' and cljbqh_cpys='" & dr("cpys") & "'")
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
DataTables("wztz").ReplaceFor("_Locked",True,"")

 回到顶部
帅哥哟,离线,有人找我吗?
荟美绘姿
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:238 积分:1838 威望:0 精华:0 注册:2014/7/1 8:56:00
  发帖心情 Post By:2016/3/17 22:08:00 [只看该作者]

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

还是不能执行这段代码,请大侠帮忙解决一下下

要求:在WZTZ表内新增时先与BMD表内的CPHM与CPYS进行比对,如果BMD中有的话就不在WZTZ表内新增,或者就删除当前新增的行


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/17 22:52:00 [只看该作者]

For i As Integer  = DataTables("wztz").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("wztz").DataRows(i)
    Dim dr2 As DataRow = DataTables("bmd").Find("cphm='" & dr("cljbqh_cphm") & "' and cpys='" & dr("cljbqh_cpys") & "'")
    If dr2 IsNot Nothing Then
        dr.Delete
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
荟美绘姿
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:238 积分:1838 威望:0 精华:0 注册:2014/7/1 8:56:00
  发帖心情 Post By:2016/3/18 0:02:00 [只看该作者]

你这个代码只会将BMD中的数据删了

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/3/18 8:34:00 [只看该作者]

这种业务逻辑的问题,应该自己分析。

 

先看你的逻辑:

 

当在“wztz”表内新增时"cljbqh_cphm"、“cljbqh_cpys"与"bmd"中有"cphm"、“cpys”进行比对,如果“bmd”表中有就不新增,反之没有就新增。

 

再看你的代码:

 

Dim i As Integer
For i  = DataTables("bmd").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("bmd").DataRows(i)
    Dim dr2 As DataRow = DataTables("wztz").Find("cljbqh_cphm='" & dr("cphm") & "' and cljbqh_cpys='" & dr("cpys") & "' and _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next

 

逻辑很简单,但是这代码和逻辑能对上吗?哪里有逻辑中提到的新增呢?我看到的是“有就删除”,而不是“没有就增加”。

 

按照你的问题,不应该是这样的吗:

 

Dim i As Integer
For i  = DataTables("bmd").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("bmd").DataRows(i)
    Dim dr2 As DataRow = DataTables("wztz").Find("cljbqh_cphm='" & dr("cphm") & "' and cljbqh_cpys='" & dr("cpys") & "' and _Identify <> " & dr("_Identify"))
    If dr2 is Nothing Then '如果没有
        dr2 = DataTables("wztz").AddNew()  ‘就增加

        dr2("cljbqh_cphm") = dr("cphm")

        dr2("cljbqh_cpys") = dr("cpys")
    End If
Next

 

还有,两个不同的表,比较Identify是没有意义的,Identify是自动生成的,不需要比较,所以按照你的问题逻辑,应该:

 

Dim i As Integer
For i  = DataTables("bmd").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("bmd").DataRows(i)
    Dim dr2 As DataRow = DataTables("wztz").Find("cljbqh_cphm='" & dr("cphm") & "' and cljbqh_cpys='" & dr("cpys") & "'")
    If dr2 is Nothing Then '如果没有
        dr2 = DataTables("wztz").AddNew()  ‘就增加

        dr2("cljbqh_cphm") = dr("cphm")

        dr2("cljbqh_cpys") = dr("cpys")
    End If
Next

 

 

个人觉得,你原来代码中,其他比较不同表的Identify的代码,都应该去掉。

[此贴子已经被作者于2016/3/18 8:38:02编辑过]

 回到顶部