2014-03-05 28 views
0

數組arr1是csv表的第一行,其中存儲地址。 它由streamdreader.readline讀入,然後分割並保存在數組arr1中。每個循環變量的數組內容更改保持不變

Form1顯示一個datagridview,其中包含兩列第一列以及數組的字段。第二列在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 slpitted線
3.使用變量從第一回路(postleitzahlvar,nachnamevar, vornamevavr)並將它們作爲參數插入到sql數據庫的insert命令中。

,直到最後一行

的問題是變量 postleitzahlvar nachnamevar vornamevar

不改變自己的價值。而數組字段的值會改變。

這意味着每次都遇到插入我做的環含有從csv's第一行

我希望你能幫忙球員屬性的數據行。我知道這是閱讀很多。但我今天掙扎了好幾個小時才解決了我的問題。我不知道爲什麼它不適用於我(索引)變量。

回答

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 
+0

THX的答案,我會盡快進入我公司 – user3360700

+0

檢查了這一點太感謝你了,現在TIMG它的工作原理:)) – user3360700