单位提供给客户的XML文件,因为文件名里的序列号发生过和文件里面的序列号不匹配的情况,想在出货前,自行确认序列号是否一致。
想了很多方法XML无法直接导入到ACCESS中,所以想通过批处理先转换TXT,或者CSV文件后批量导入到ACCESS中进行系统确认。
确认:导入时获取文件名中的序列号(通过位数获取),然后再与导入内容里面的序列号进行匹配确认
因为是大量的XML文件,强烈要求不要导一个确认一个。
求大神支持。。。
XML文件如下:
xml
xml内容解说:
1、文件名中的“003052515011”为序列号
2、文件内容中的“”RawLotId="003052515011"为序列号
想实现:
1、文件名获取的序列号和文件内容的序列号匹配确认
2、要批量导入后实现结果显示
折腾好多天了,一直没搞定,求大神赐教!
还没实践 不过可以参考下这个思路
以文本的形式读取这个xml文件 然后赋值给字符串 然后将字符串根据回车符号通过split赋值给数组 然后遍历数组的元素 找到"like '*RawLotId=*'"的元素 然后再想办法对比序列号应该就可以了
Private Sub Command0_Click()
Dim F
Dim TextLine
With Application.FileDialog(3)
.AllowMultiSelect = True
.Filters.Clear
.Filters.Add "xml文件", "*.xml"
If .Show Then
For Each F In .SelectedItems
Open F For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量。
'Debug.Print TextLine ' 在立即窗口中显示数据。
If Trim(TextLine) Like "RawLotId=*" Then'判断是否符合序列号标记的内容,你还可以增加其他的判断规则。
MsgBox Replace(Replace(TextLine, "RawLotId=", ""), """", "") '这里你可以改为insert into ...语句进行数据保存。
End If
Loop
Close #1 ' 关闭文件。
Next
End If
End With
End Sub
测试一下,MsgBox Replace(...)的文本就是你要的序列号。
你也可以把序列号插入表格:
currentdb.execute "insert into 表名称(序列号) values ('" & Replace(Replace(TextLine, "RawLotId=", ""), """", "") & "')"
然后再用表的序列号进行匹配确认。
至于判断某行是否为序列号的文本行,还可以判断字符串的长度,比如
len(trim(textline))=23
或对提取的数据判断是否为12个字符,或用IsNumeric函数判断提取的字符串是否为数字。
总之,判断的依据要正确、全面,才能准确。
总记录:3篇 页次:1/1 9 1 :