以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  字符转换问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187105)

--  作者:lin98
--  发布时间:2023/6/21 12:47:00
--  字符转换问题
Select Case e.DataCol.name
    Case "编号", "数量", "日期"
        Dim bh As String
        Dim sl As Double
        Dim rx As Date
        
        If e.DataCol.Name = "编号" Then
            bh = e.NewValue
            sl = e.DataRow("数量")
            rx = e.DataRow("日期")
            
        Else
            sl = e.NewValue
            rx = e.DataRow("日期")
            bh = e.DataRow("编号")
            
            
            
        End If
        If bh > "" AndAlso sl > "" AndAlso rx > ""Then
            Dim dr As DataRow = e.DataRow
            If e.DataTable.Find("编号 = \'" & bh & "\' And 数量 = \'" & sl & "\'And 日期 = \'" & rx & "\'") IsNot Nothing Then
                
                MessageBox.Show("已经存在相同型号和规格的行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
                e.Cancel = True
            End If
        End If
End Select


上面代码报错,提示字符转换问题,在哪里转换,如何转换?谢谢

--  作者:有点蓝
--  发布时间:2023/6/21 13:32:00
--  
http://www.foxtable.com/webhelp/topics/2481.htm,参考最后一段用法
--  作者:lin98
--  发布时间:2023/6/21 14:35:00
--  
改了,没报错,但无法实现,禁止重复值录入,如何解决?

\'DataColChanging



导入
Dim dr3 As DataRow = Tables("表A").Current.DataRow
For Each r As Row In Tables("导入窗口_表A").GetCheckedRows \'
    Dim nma() As String = {"编号", "型号", "规格", "数量", "日期"} \'
    Dim nmb() As String = {"编号", "型号", "规格", "数量", "日期"} \'
    
  
        
        Dim dr As Row = Tables("表B").AddNew \'
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = r(nma(i))
        Next
        
    End If 
Next

[此贴子已经被作者于2023/6/21 16:32:46编辑过]

--  作者:有点蓝
--  发布时间:2023/6/21 14:44:00
--  
没有认真看帮助,代码放到DataColChanged,不是DataColChanging

导入代码也不正确,基本都没有理解帮助的代码逻辑

    Dim nma() As String = {"编号", "型号", "规格", "数量", "日期"} \'
    Dim nmb() As String = {"编号", "型号", "规格", "数量", "日期"} \'
For Each r As Row In Tables("导入窗口_表A").GetCheckedRows \'
-----------------------
这个帮助建议先看个10遍:http://www.foxtable.com/webhelp/topics/1284.htm

表达式中的日期用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

例如:

Tables("订单").Filter = "[产品] = \'PD01\'"  \'字符用单引号括起来
Tables("订单").Filter = "[日期] = #3/17/1999#"  \'日期用#括起来
Tables("订单").Filter = "[折扣] = 0.1"  \'数值直接使用

-----------------------

    If DataTables("表B").Find("编号 = \'" & r("编号") & "\' And 数量 = " & r("数量") & " And 日期 = #" & r("日期") & "#") Is Nothing Then
        
        Dim dr As Row = Tables("表B").AddNew \'
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = r(nma(i))
        Next
        
    End If 
Next

--  作者:lin98
--  发布时间:2023/6/21 15:36:00
--  
导入重复没导入,也没提示,如何实现导入时发现重复,重复i 导入,并提示有已有存在相同产品?

   If DataTables("表B").Find("编号 = \'" & r("编号") & "\' And 数量 = " & r("数量") & " And 日期 = #" & r("日期") & "#") Is Nothing Then
        
        Dim dr As Row = Tables("表B").AddNew \'
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = r(nma(i))
        Next
        
    End If 
MessageBox.Show("已经存在相同型号和规格的行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)  加在这里不对,一直提示
Next

--  作者:有点蓝
--  发布时间:2023/6/21 15:44:00
--  
参考:http://www.foxtable.com/webhelp/topics/0223.htm,理解一下什么叫双分支形式