That error may be due to the fact that you are trying to have an unbound column in bound datagrid.
Either populate your unbound grid looping through recordset, or make an additional field in recordset to be bound to the additional column.
The code below works fine. I have an additional field to be bound to column F. BTW, I am populating it manually, you can use your code there. ;)
Sub populateGrid(fColumn As Boolean)
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Fields.Append "A", adVarChar, 100
rs.Fields.Append "B", adVarChar, 100
rs.Fields.Append "C", adVarChar, 100
rs.Fields.Append "D", adVarChar, 100
rs.Fields.Append "E", adVarChar, 100
rs.Fields.Append "F", adVarChar, 100
rs.Open , Nothing
For i = 1 To 5
rs.AddNew
rs.Fields("A").Value = i
rs.Fields("B").Value = i
rs.Fields("C").Value = i
rs.Fields("D").Value = i
rs.Fields("E").Value = i
Next
If fColumn Then
Dim dc
Set dc = DataGrid1.Columns.Add(2)
dc.Caption = "F"
dc.DataField = "F"
End If
Set DataGrid1.DataSource = rs
End Sub
I hope this helps, as I'm seeing you struggling with this grid question since last few days. It's VB6 that is making you wait longer for answer I think.