以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  读取文本数据第一行生成临时表,并写入文本数据行到临时表,文本数据行写入项目 但是行的值不写入 有没有办法修正呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175178)

--  作者:cnsjroom
--  发布时间:2022/2/23 0:08:00
--  读取文本数据第一行生成临时表,并写入文本数据行到临时表,文本数据行写入项目 但是行的值不写入 有没有办法修正呢?

读取文本数据第一行生成临时表,并写入文本数据行到临时表,红色部分代码注释掉的话  文本数据行和行的值会正常写入项目,不注释掉的话 文本数据行写入项目 但是行的值不写入  有没有办法修正呢?

 

红色部分代码拟实现的是  如果文本的列值含有 时间  就新增一个  日期列 属性为date  如果含有日期  就将该列属性直接定义位date

 

当前代码如下:

Dim  dlg As  new  OpenFileDialog
dlg.Filter =  "文本文件|*.txt"
\'Tables("统计").StopRedraw
If  dlg.ShowDialog =  DialogResult.OK Then
    Dim Multi As String
    Dim  strs As  String =  FileSys.ReadAllText(dlg.FileName, Encoding.Default)
    Dim Values11() As String =  strs.Replace(vbcr,"").split(vblf)
    For  i1 As  Integer =  0 To  0
        Dim  rs As  String =  Values11(0)
        For  i As  Integer =  0 To  0
            Dim  cs() As  String =  rs.Split(vbtab)
            output.Show(cs(0))
            Multi = cs(0)
        Next
    Next
   
    Dim Values() As String
    Values = Multi.split("|")
    Dim dtb As New DataTableBuilder("统计")
    For Index As Integer = 0 To Values.Length - 1
        Output.Show(Values(Index))
        If Values(Index).Contains("时间") Then
            dtb.AddDef("日期", Gettype(Date))
        End If
       
        If Values(Index).Contains("日期")   Then
            dtb.AddDef(Values(Index), Gettype(Date))
        Else
            dtb.AddDef(Values(Index), Gettype(String), 255)
        End If
    Next
    dtb.Build()
   
    \'Dim s As String = FileSys.ReadAllText("d:\\qqq.txt", Encoding.Default)
    \'Dim Values1() As String = s.Replace(vbcr,"").split(vblf)
    For i As Integer = 1 To Values11.length - 1
        Dim cs() As String = Values11(i).split("|")
        Dim r As Row = Tables("统计").Addnew()
        \'For Each c As DataCol In DataTables("统计").DataCols
        output.show(cs.Length-1)
        For i1 As Integer = 0 To math.min(cs.Length-1, Tables("统计").cols.count - 1)
            If cs.Length = Tables("统计").cols.count Then
                
                Dim bb As String=r(i1)
                If bb<>"" Then
                    Dim d As Date = cdate(bb)
                    If bb.Contains("时间") Then
                        r("日期")= Format(d, "yyyy-MM-dd")
                    Else
                        r(i1) = cs(i1)
                    End If
                End If

            End If
        Next
        \'Next
    Next
   
End If
\'Tables("统计").ResumeRedraw
 

 

[此贴子已经被作者于2022/2/23 1:29:25编辑过]

--  作者:有点蓝
--  发布时间:2022/2/23 8:40:00
--  

        For i1 As Integer = 0 To math.min(cs.Length-1, Tables("统计").cols.count - 1)
            If cs.Length = Tables("统计").cols.count Then
                
                Dim bb As String=r(i1).trim()
                If bb > "" Then
                    If bb.Contains("时间") Then

                    Dim d As Date = cdate(bb)
                        r("日期")= Format(d, "yyyy-MM-dd")

                        r(i1) = cs(i1)
                    End If
                End If

            End If
        Next


--  作者:cnsjroom
--  发布时间:2022/2/23 10:21:00
--  回复:(有点蓝)        For i1...

Dim  dlg As  new  OpenFileDialog
dlg.Filter =  "文本文件|*.txt"
\'Tables("统计").StopRedraw
If  dlg.ShowDialog =  DialogResult.OK Then
    Dim Multi As String
    Dim  strs As  String =  FileSys.ReadAllText(dlg.FileName, Encoding.Default)
    Dim Values11() As String =  strs.Replace(vbcr,"").split(vblf)
    For  i1 As  Integer =  0 To  0
        Dim  rs As  String =  Values11(0)
        For  i As  Integer =  0 To  0
            Dim  cs() As  String =  rs.Split(vbtab)
            output.Show(cs(0))
            Multi = cs(0)
        Next
    Next
   
    Dim Values() As String
    Values = Multi.split("|")
    Dim dtb As New DataTableBuilder("统计")
    For Index As Integer = 0 To Values.Length - 1
        Output.Show(Values(Index))
        If Values(Index).Contains("时间") OrElse Values(Index).Contains("日期")  Then
            dtb.AddDef("日期", Gettype(Date))
        Else
            dtb.AddDef(Values(Index), Gettype(String), 255)
        End If

    Next
    dtb.Build()
   
    \'Dim s As String = FileSys.ReadAllText("d:\\qqq.txt", Encoding.Default)
    \'Dim Values1() As String = s.Replace(vbcr,"").split(vblf)
    For i As Integer = 1 To Values11.length - 1
        Dim cs() As String = Values11(i).split("|")
        Dim r As Row = Tables("统计").Addnew()
        \'For Each c As DataCol In DataTables("统计").DataCols
        output.show(cs.Length-1)
        For i1 As Integer = 0 To math.min(cs.Length-1, Tables("统计").cols.count - 1)
            If cs.Length = Tables("统计").cols.count Then
               
                Dim bb As String=r(i1).trim()
                If bb > "" Then
                    If bb.Contains("时间") Then
                        Dim d As Date = cdate(bb)
                        r("日期")= Format(d, "yyyy-MM-dd")
                        r(i1) = cs(i1)
                    End If
                End If
               
            End If
           
        Next
        \'Next
    Next
   
End If
\'Tables("统计").ResumeRedraw

 

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:自定义函数,选择文本文件导入项目表
详细错误信息:
调用的目标发生了异常。
未找到类型“Date”的公共成员“trim”。

 

 

 


--  作者:有点蓝
--  发布时间:2022/2/23 10:38:00
--  
            If cs.Length = Tables("统计").cols.count Then
               
Dim bb As String=cs(i1).trim()
                If bb > "" Then
                    If bb.Contains("时间") Then
                        Dim d As Date = cdate(bb)
                        r("日期")= Format(d, "yyyy-MM-dd")
else
                        r(i1) = cs(i1)
                    End If
                End If
               
            End If

--  作者:cnsjroom
--  发布时间:2022/2/23 11:20:00
--  回复:(有点蓝)         ...

还得麻烦老师一下   现在是不报错了   但是数据行是空值

 

Dim  dlg As  new  OpenFileDialog
dlg.Filter =  "文本文件|*.txt"
\'Tables("统计").StopRedraw
If  dlg.ShowDialog =  DialogResult.OK Then
    If DataTables.Contains("统计")  Then \'如果表C已经加载
        DataTables.Unload("统计") \'卸载表C
    End If
   
    Dim Multi As String
    Dim  strs As  String =  FileSys.ReadAllText(dlg.FileName, Encoding.Default)
    Dim Values11() As String =  strs.Replace(vbcr,"").split(vblf)
    For  i1 As  Integer =  0 To  0
        Dim  rs As  String =  Values11(0)
        For  i As  Integer =  0 To  0
            Dim  cs() As  String =  rs.Split(vbtab)
            output.Show(cs(0))
            Multi = cs(0)
        Next
    Next
   
    Dim Values() As String
    Values = Multi.split("|")
    Dim dtb As New DataTableBuilder("统计")
    For Index As Integer = 0 To Values.Length - 1
        Output.Show(Values(Index))
        If Values(Index).Contains("时间") OrElse Values(Index).Contains("日期")  Then
            dtb.AddDef("日期", Gettype(Date))
        End If
        dtb.AddDef(Values(Index), Gettype(String), 255)  
    Next
    dtb.Build()
   
    For i As Integer = 1 To Values11.length - 1
        Dim cs() As String = Values11(i).split("|")
        Dim r As Row = Tables("统计").Addnew()
        output.show(cs.Length-1)
        For i1 As Integer = 0 To math.min(cs.Length-1, Tables("统计").cols.count - 1)
            If cs.Length = Tables("统计").cols.count Then
               
                Dim bb As String=cs(i1).trim()
                If bb > "" Then
                    If bb.Contains("时间") OrElse bb.Contains("日期") Then
                        Dim d As Date = cdate(bb)
                        r("日期")= Format(d, "yyyy-MM-dd")
                    Else
                        r(i1) = cs(i1)
                    End If
                End If 
            End If  
        Next
    Next
End If
\'Tables("统计").ResumeRedraw


--  作者:有点蓝
--  发布时间:2022/2/23 11:22:00
--  
请把数据文件发上来测试
--  作者:cnsjroom
--  发布时间:2022/2/23 12:22:00
--  回复:(有点蓝)请把数据文件发上来测试

麻烦老师

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

因为违法时间是字符  不便于实现按日期筛选  

所以在临时表中新增了一个日期列  且属性为date  想自动把违法时间转换成日期  然后实现按日期进行筛选


--  作者:有点蓝
--  发布时间:2022/2/23 13:51:00
--  
Dim  dlg As  new  OpenFileDialog
dlg.Filter =  "文本文件|*.txt"
\'Tables("统计").StopRedraw
If  dlg.ShowDialog =  DialogResult.OK Then
    If DataTables.Contains("统计")  Then \'如果表C已经加载
        DataTables.Unload("统计") \'卸载表C
    End If
   
    Dim Multi As String
    Dim  strs As  String =  FileSys.ReadAllText(dlg.FileName, Encoding.Default)
    Dim Values11() As String =  strs.Replace(vbcr,"").split(vblf)
    For  i1 As  Integer =  0 To  0
        Dim  rs As  String =  Values11(0)
        For  i As  Integer =  0 To  0
            Dim  cs() As  String =  rs.Split(vbtab)
            output.Show(cs(0))
            Multi = cs(0)
        Next
    Next
   
    Dim Values() As String
    Values = Multi.split("|")
    Dim dtb As New DataTableBuilder("统计")
    For Index As Integer = 0 To Values.Length - 1
        Output.Show(Values(Index))
        If Values(Index).Contains("时间") OrElse Values(Index).Contains("日期")  Then
            dtb.AddDef("日期", Gettype(Date))
        End If
        dtb.AddDef(Values(Index), Gettype(String), 255)  
    Next
    dtb.Build()
   
    For i As Integer = 1 To Values11.length - 1
        Dim cs() As String = Values11(i).split("|")
        Dim r As Row = Tables("统计").Addnew()
        output.show(cs.Length-1)
        For i1 As Integer = 0 To math.min(cs.Length-1, Tables("统计").cols.count - 1)
                Dim bb As String=cs(i1).trim()
                If bb > "" Then
                    If Values(i1).Contains("时间") OrElse Values(i1).Contains("日期") Then
                        Dim d As Date = cdate(bb)
                        r("日期")= Format(d, "yyyy-MM-dd")
                    Else
                        r(i1) = cs(i1)
                    End If
                End If 
        Next
    Next
End If
\'Tables("统计").ResumeRedraw

--  作者:cnsjroom
--  发布时间:2022/2/23 14:15:00
--  回复:(有点蓝)Dim  dlg As  new  O...

老师  现在日期列会根据时间列来获取值 

但是数据行错位了呢  还得麻烦老师辛苦下  谢谢!

 


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

--  作者:有点蓝
--  发布时间:2022/2/23 14:21:00
--  
多增加了一个列