public virtual CrystalDecisions.CrystalReports.Engine.ReportDocument CreateReport()
        {
            RepAntecedentes rpt = new RepAntecedentes();

            rpt.Site = this.Site;
            return(rpt);
        }
        private void btnImprimir_Click(object sender, EventArgs e)
        {
            string cTitulo  = "";
            string cUsuario = frmLogin.cUsuarioActual;;

            if (txtCedula.Text == "" || txtID.Text == "")
            {
                MessageBox.Show("El Campo Cedulo o ID no Debe Estar en Blanco, Favor Verificar", "Sistema Medico", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            else
            {
                try
                {
                    StringBuilder    sbQuery        = new StringBuilder();
                    MySqlConnection  oMiclsConexion = new MySqlConnection(cclsConexion);
                    MySqlCommand     oComando       = new MySqlCommand();
                    MySqlDataAdapter oAdaptador     = new MySqlDataAdapter();
                    DataTable        dtPaciente     = new DataTable();

                    oMiclsConexion.Open();
                    oComando            = oMiclsConexion.CreateCommand();
                    oComando.Connection = oMiclsConexion;

                    sbQuery.Clear();
                    sbQuery.Append("SELECT paciente.id_paciente,paciente.cedula,paciente.nombre,");
                    sbQuery.Append("paciente.apellido,paciente.edad,paciente.sexo,paciente.dato_nacimiento,");
                    sbQuery.Append("paciente.dato_alimentacion, paciente.dato_condicionespsicologicas, ");
                    sbQuery.Append("paciente.dato_sexualidad, paciente.dato_operaciones, ");
                    sbQuery.Append("paciente.dato_intoleranciamedicinal, paciente.dato_saludpadres, ");
                    sbQuery.Append("paciente.dato_saludhermanos, paciente.dato_saludesposahijos,");
                    sbQuery.Append("paciente.dato_saludfamiliargeneral, paciente.fecharegistro, paciente.fechaupdate,");
                    sbQuery.Append("rangos.rango_descripcion");
                    sbQuery.Append(" from paciente");
                    sbQuery.Append(" inner join rangos on rangos.rango_id = paciente.rango");
                    sbQuery.Append(" where paciente.id_paciente = " + txtID.Text + "");
                    //sbQuery.Append("");
                    //sbQuery.Append("");
                    //sbQuery.Append("");


                    oComando.CommandText = sbQuery.ToString();
                    oAdaptador           = new MySqlDataAdapter(oComando);
                    oAdaptador.Fill(dtPaciente);
                    //oComando.Dispose();
                    //oMiclsConexion.Close();

                    int nRegistros = dtPaciente.Rows.Count;
                    if (nRegistros == 0)
                    {
                        MessageBox.Show("No Hay Datos Para Mostrar, Favor Verificar", "Sistema Medico", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                    else
                    {
                        //1ero.HACEMOS LA COLECCION DE PARAMETROS

                        //los campos de parametros contiene un objeto para cada campo de parametro en el informe
                        ParameterFields oParametrosCR = new ParameterFields();
                        //Proporciona propiedades para la recuperacion y configuracion del tipo de los parametros
                        ParameterValues oParametrosValuesCR = new ParameterValues();

                        //2do.CREAMOS LOS PARAMETROS
                        ParameterField oUsuario = new ParameterField();
                        //parametervaluetype especifica el TIPO de valor de parametro
                        //ParameterValueKind especifica el tipo de valor de parametro en la PARAMETERVALUETYPE de la Clase PARAMETERFIELD
                        oUsuario.ParameterValueType = ParameterValueKind.StringParameter;

                        //3ero.VALORES PARA LOS PARAMETROS
                        //ParameterDiscreteValue proporciona propiedades para la recuperacion y configuracion de
                        //parametros de valores discretos
                        ParameterDiscreteValue oUsuarioDValue = new ParameterDiscreteValue();
                        oUsuarioDValue.Value = cUsuario;

                        //4to. AGREGAMOS LOS VALORES A LOS PARAMETROS
                        oUsuario.CurrentValues.Add(oUsuarioDValue);


                        //5to. AGREGAMOS LOS PARAMETROS A LA COLECCION
                        oParametrosCR.Add(oUsuario);

                        //nombre del parametro en CR (Crystal Reports)
                        oParametrosCR[0].Name = "cUsuario";

                        //nombre del TITULO DEL INFORME
                        cTitulo = "ANTECEDENTES PERSONALES";

                        //6to Instanciamos nuestro REPORTE

                        Reportes.RepAntecedentes oRepAntecedente = new Reportes.RepAntecedentes();
                        //pasamos el nombre del TITULO del Listado
                        //SumaryInfo es un objeto que se utiliza para leer,crear y actualizar las propiedades del reporte
                        oRepAntecedente.SummaryInfo.ReportTitle = cTitulo;

                        frmPrinter oFrmPrinter = new frmPrinter(dtPaciente, oRepAntecedente, cTitulo);
                        oFrmPrinter.CrystalReportViewer1.ParameterFieldInfo = oParametrosCR;
                        oFrmPrinter.ShowDialog();
                    }
                }
                catch (Exception myEx)
                {
                    //MessageBox.Show(myEx.Message);
                    //throw;
                }
            }
        }