2010-04-22 24 views
1

我有这个文件。它存储名称,项目,他们存储数据的一周以及项目花费的时间。这里是一个例子如何分割这个文件中的数据vb6

"James","Project5","15/05/2010","3" 
"Matt","Project1","01/05/2010","5" 
"Ellie","Project5","24/04/2010","1" 
"Ellie","Project2","10/05/2010","3" 
"Matt","Project3","03/05/2010","4" 

我需要在窗体上打印不带引号。在那里它应该只显示一次名称,然后只显示名称下的项目。我看了tihs和分裂功能似乎很有趣

任何帮助将是好事。

+0

这功课?或者你是这个人的同一个人:http://stackoverflow.com/questions/2690505/how-to-split-the-data-in-this-file-vb6 – PaulG 2010-04-22 14:40:42

+0

我和那个人一样: )和不,它不是作业 – Andeeh 2010-04-22 14:57:13

回答

1

Microsoft拥有CSV ADO提供程序。我认为它与ADO的其余部分一起安装。这正是它设计要阅读的格式。对于VB样本,请参阅http://www.vb-helper.com/howto_ado_load_csv.html

+0

这是不必要的复杂。 VB6的内置文件I/O功能是您所需要的。 – raven 2010-04-22 15:46:30

1

我是否正确理解你的意思:你想跟踪输入的姓名,从而以这种方式重新排序数据?为什么不把数据读入一个具有名称,项目和其他信息的新类型的列表中,然后在打印之前进行分类?


虽然字典的解决方案是简单的,这可能是一个更好的解决方案,如果你是建立一个类并实现的IComparer OK,这样你可以对列表进行排序得到这个漂亮容易。

+0

这将是一个更好的方式来做到这一点,但我不认为我有编程技巧来完成它。 – Andeeh 2010-04-22 14:40:25

2

创建一个Dictionary对象,然后将您找到的给定名称的所有内容放入一个字典条目中。

然后在第二次迭代中打印出所有内容。

0

你可以阅读每一行,去掉引号,拆分的逗号,然后处理数据的数组,你将留下:

Dim filenum As Integer 
Dim inputLine As String 
Dim data() As String 

filenum = FreeFile 
Open "U:\test.txt" For Input As #filenum 
Do While Not EOF(filenum) 
    Line Input #filenum, inputLine 
    inputLine = Replace(inputLine, Chr(34), vbNullString) 
    data = Split(inputLine, ",") 
    Debug.Print data(0), data(1), data(2), data(3) 
Loop 
Close #filenum 

或者你可以有输入命令带引号,并将数据读入变量:

Dim filenum As Integer 
Dim name As String, project As String, dat As String, hours As String 

filenum = FreeFile 
Open "U:\test.txt" For Input As #filenum 
Do While Not EOF(filenum) 
    Input #filenum, name, project, dat, hours 
    Debug.Print name, project, dat, hours 
Loop 
Close #filenum