Напишите значение в определенной строке и столбце csv в vb6

64
10

У меня есть код для поиска значения из csv.

Я хочу найти значение, а затем, когда я нахожу точное значение, я обновлю поле, чтобы указать, что я уже нашел это как ссылку, см. Ниже:

 For R = 0 To num_rows
If Len(lines(R)) > 0 Then
one_line = Split(lines(R), ",")
For C = 0 To num_cols
the_array(R, C) = one_line(C)

'Check Serial from List
If the_array(R, 3) = strCode Then

readCsv = the_array(R, 3) 'return serial from list
strTestcnt = the_array(R, 1) 'retry count
strProcess = the_array(R, 2) 'process/station

'--->>> in this part I'd like to add a new value on the_array(R, 4) with the value "1"
'--->>> and save it on the csv file, how can i do this?
'--->>> I open the csv file using "fnum = FreeFile"
"Open file_name For Input As fnum"

Exit Function
End If
Next C
End If
Next R

может быть, вы можете мне помочь, спасибо

спросил(а) 2021-01-25T12:07:41+03:00 4 месяца, 2 недели назад
1
Решение
63

Это может быть гораздо проще работать с использованием Variant, содержащего массив массивов.

Private Sub CsvUpdate(ByVal Code As String)
Dim F As Integer
Dim RowData As String
Dim RowCols() As String
Dim NewCol As Long
Dim CsvRows As Variant
Dim R As Long

F = FreeFile(0)
Open "old.csv" For Input As #F
ReDim CsvRows(0)
Do Until EOF(F)
Line Input #F, RowData
RowCols = Split(RowData, ",")
If NewCol = 0 Then NewCol = UBound(RowCols) + 1
ReDim Preserve RowCols(NewCol) 'Add new column.
ReDim Preserve CsvRows(R) 'Add new row.
CsvRows(R) = RowCols 'Assign columns to row.
R = R + 1
Loop
Close #F

For R = 0 To UBound(CsvRows)
If Trim$(CsvRows(R)(3)) = Code Then
'Do something....
CsvRows(R)(NewCol) = "1" 'Mark it "processed"
Else
CsvRows(R)(NewCol) = "0" 'Mark it "not processed"
'or just leave null.
End If
Next

On Error Resume Next
Kill "new.csv"
On Error GoTo 0
F = FreeFile(0)
Open "new.csv" For Output As #F
For R = 0 To UBound(CsvRows)
Print #F, Join$(CsvRows(R), ",")
Next
Close #F
End Sub

ответил(а) 2021-01-25T12:07:41+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема