Facendo così auando arriva al secondo campo mi da l'errore di indice non presente nell'intervallo, però i campi li restituisce corretti

codice:
Do While Not oGrigliaRecordset.EOF Or i = 2
    MSHFlexGrid1.TextMatrix(i, 0) = oGrigliaRecordset!idprodotto
    MSHFlexGrid1.TextMatrix(i, 1) = oGrigliaRecordset!idingrediente
    MSHFlexGrid1.TextMatrix(i, 2) = oGrigliaRecordset!nome
    MSHFlexGrid1.TextMatrix(i, 3) = oGrigliaRecordset!descrizione
    i = i + 1
    oGrigliaRecordset.MoveNext
Loop