arr1是csv表的第一行,其中存储了地址。 它由streamdreader.readline读入,然后splittet并保存在数组arr1中。
Form1显示了一个datagridview,其中包含两列第一列以及Array的字段。第二列在sql数据库中有可能列的组合框,其中应保存scv。 用户使用组合框映射两列后。 来自代码段:
'循环应检查每一行,通过比较字符串选择哪个组合元素。
Dim feld(arr1.Length)
Dim i As Integer
For i = 0 To arr1.Length - 1 Step +1
feld(i) = DataGridView1.Rows(i).Cells(1).Value.ToString
If feld(i) = "Postleitzahl" Then
Postleitzahlvar = arr1(i)
ElseIf feld(i) = "Nachname" Then
Nachnamevar = arr1(i)
ElseIf feld(i) = "Vorname" Then
Vornamevar = arr1(i)
End If
Next
之后还有另一个循环:
1.读取cvs文件行
2.将线条插入arr1中
3.使用第一个循环中的变量(postleitzahlvar,nachnamevar,vornamevavr)并将它们作为参数放在sql数据库的insert命令中。
直到最后一行
问题在于变量 postleitzahlvar nachnamevar vornamevar
不要改变它们的价值。而数组字段的值会发生变化。
这意味着我在循环中得到的每个插入数据都包含来自csv第一行的属性
我希望你能帮帮忙。我知道这很重要。但是我今天花了很多时间来解决我的问题。我不知道为什么它与I(索引)变量不起作用。
答案 0 :(得分:0)
我认为您可能希望获取列索引,而不是保存第一行中的值。它们将帮助您将正确的列(从CSV)放入数据库列。
试试这个:
Dim feld(arr1.Length)
Dim Ppostleitzahlindex as integer, Nachnameindex as integer, Vornameindex as integer
Dim i As Integer
For i = 0 To arr1.Length - 1 Step +1
feld(i) = DataGridView1.Rows(i).Cells(1).Value.ToString
If feld(i) = "Postleitzahl" Then
Postleitzahlvar = arr1(i) 'probably not what you want
Postleitzahlindex = i 'array index is more useful
ElseIf feld(i) = "Nachname" Then
Nachnamevar = arr1(i)
Nachnameindex = i
ElseIf feld(i) = "Vorname" Then
Vornamevar = arr1(i)
Vornameindex = i
End If
Next
...然后当您读取每一行时,拆分列并按索引从列加载插入参数。这是伪代码:
'for each line in the csv file
'Read line
'split line into arr1
'parameter Postleitzahl = arr1(Postleitzahlindex)
'parameter Nachname = arr1(Nachnameindex)
'parameter Vorname = arr1(Vornameindex)
'insert
'until end of file