title: mailmerge with visto how to get each record of MailMerge.DataSource.DataFields
body: <p>I' have a Project that needs to do a mailmerge, I'm performing this with VSTO. I need to check if all records on the <code>MailMerge.DataSource.DataFields</code> are ok. i'm doing that with this code.</p>
  
  <pre><code>    public void verificarPersonas(Word.Document Doc)
      {
          ThisAddIn ThisAddIn = Globals.ThisAddIn;
          List&lt;Personas&gt; miListaPersonas = new List&lt;Personas&gt;();
          decimal nRecords = Doc.MailMerge.DataSource.RecordCount;
          if (nRecords == 0)
          {
              cambiarEstado("Empty db  or documento does'n prepared for mail merge", false);
          }
          else
          {
              string fieldIdentificacion = persParm("Identificacion");
              string fieldNombre = persParm("Nombres");
              string fieldApellido = persParm("Apellidos");
              string fieldEmail = persParm("Email");
              string fieldDireccion = persParm("Direccion");
              string fieldTelefono = persParm("Telefono");
  
              if (String.IsNullOrEmpty(fieldIdentificacion) || String.IsNullOrEmpty(fieldNombre))
              {
                  cambiarEstado("", false);
                  return;
              }
              else
              {
                  for (int i = 1; i &lt;= nRecords; i++)
                  {
                      Doc.MailMerge.DataSource.FirstRecord = i;
                      Doc.MailMerge.DataSource.LastRecord = i;
  
                      //   Here Allways get the first record
                      dynamic fields = Doc.MailMerge.DataSource.DataFields;
                      //    ________________________________
                      Personas personaActual = new Personas();
                      personaActual.IdPersona = 0;
                      try
                      {
                          personaActual.Identificacion = fields(fieldIdentificacion).value;
                          personaActual.Nombres = fields(fieldNombre).value;
                          personaActual.Apellidos = (String.IsNullOrEmpty(fieldApellido) ? "" : fields(fieldApellido).value);
                          personaActual.Email = (String.IsNullOrEmpty(fieldEmail) ? "" : fields(fieldEmail).value);
                          personaActual.Direccion = (String.IsNullOrEmpty(fieldDireccion) ? "" : fields(fieldDireccion).value);
                          personaActual.Telefono = (String.IsNullOrEmpty(fieldTelefono) ? "" : fields(fieldTelefono).value);
  
                          miListaPersonas.Add(personaActual);
                      }
                      catch (Exception e)
                      {
                          cambiarEstado(""+e.Message, false);
                          return;
                      }
                  }
  
                  string listaPersonasJson = JsonConvert.SerializeObject(miListaPersonas);
                  string respuesta = wt.getWebData("Personas", "verificarPersonasVSTO", new { personas = listaPersonasJson });
  
              }
          }
      }
  </code></pre>
  
  <p>My problem is that <code>dynamic fields = Doc.MailMerge.DataSource.DataFields;</code> allways get the first record. </p>
  
  <p>How can I do to get <code>datafields</code> for the active record ? </p>