[c#] Control ReportViewer de VS 2012 e Impresora de Matrix de Punto

938 views
Skip to first unread message

HolguinSoft S.A

unread,
Jul 18, 2013, 2:48:15 PM7/18/13
to Dario Quintana
Hola Colegas
 
Estoy desarrollando una aplicación en la cual para los reportes estoy usando el control ReportViewer de Vs 2012, el dilema se me presenta porque tengo que imprimir en una Impresora de Matrix de Punto y para rematar en una hoja con formato A6. El tema es que tengo que marcar desde el reporte un cambio de pagina a la impresora y no encuentro como hacerlo.
 
Si algun colega tiene alguna idea o, trabajo con Impresaras de Matrix desde VS 2012 les agradeceria que me dieran una mano.
 
Mucha Gracias      

Ing. Gabriel Fogante

unread,
Jul 18, 2013, 4:13:11 PM7/18/13
to Dario Quintana
Porque usas ReportViewer para imprimir a una matricial? ReportViewer va a
imprimir a traves de un driver de Windows por lo que va a mandar a la
impresora es todo basado en grafico lo que implica una tortura a la hora de
imprimir contra una matricial. No se que tipo de reporte necesitas imprimir.
Si solo tenes que "rellenar" campos de un formulario preimpreso, te conviene
mandar directamente los comandos a la impresora.

HolguinSoft S.A

unread,
Jul 18, 2013, 4:29:30 PM7/18/13
to Dario Quintana
Hola Gabriel
 
Con respecto a la selección del ReportViewer, bueno pensé que el proyecto era algo simple pero luego se complico, además el cliente es medio especial y si por ejemplo decidía usar Crystal tenia que estar instalando las librerías de Crystal, que al final también tuve que instalar la librería de ReportViewer, en final ya que estoy en el baile a bailar.
 
El Sistema no imprime en un formulario PreImpreso por suerte, es decir el reporte lo arma todo el Sistema. Ahora el cliente quiere que le salgan dos copias y ReportViewer tiene un drama, no tiene una función que envíe el Reporte directamente a la impresora (por lo menos eso es lo que dicen los foros), es decir que le sale un preview y tiene que dar dos click para imprimir dos copias.
 
La idea que se me ocurrió fue mandar un salto de página desde algún lugar del reporte. Si tienes una idea de cómo hacerlo te lo agradecería mucho, también si tienes algún ejemplo de cómo mandar comandos directamente a la impresora desde VS
 
Muchas Gracias         

César Mendoza

unread,
Jul 18, 2013, 4:36:18 PM7/18/13
to Dario Quintana
cuando va a imprimir y te pregunta por la impresora configurale que querés imprimir 2 copias. El PrintDialog.


2013/7/18 HolguinSoft S.A <holgu...@yahoo.com.ar>



--
Saludos.
César Javier Mendoza.

Ing. Gabriel Fogante

unread,
Jul 18, 2013, 5:35:15 PM7/18/13
to Dario Quintana
1. Se puede imprimir un RDLC directo sin preview es decir sin usar el
ReportViewer. Aca hay un ej de MS
http://msdn.microsoft.com/en-us/library/ms252091(v=vs.80).aspx

2. Lo de mandar comandos a la impresora directo tambien se puede PERO debes
hacerlo enviando los comandos que la impresora entienda. Seguro que soporta
ESC/POS pero bueno fijate si no te gusta como funciona lo anterior, proba
esta opcion.

martin.comparetto

unread,
Jul 23, 2013, 10:26:52 AM7/23/13
to Dario Quintana
Buenos d�as!
Tengo un inconveniente, estoy haciendo una aplicaci�n con EF, utilizando code first, es la primera vez que lo arranco asi, siempre part� desde una DB y usando un edmx. pero bueno, ahora estoy renegando! jajaa
Les paso mis clases:
 
Entidades:
 
[Table("Pacientes")]
public class Paciente : EntidadBase
{
[Required(ErrorMessage = "Debe ingresar el Nombre del Paciente")]
[MaxLength(200)]
public string Nombre { get; set; }
[Required(ErrorMessage = "Debe ingresar el Apellido del Paciente")]
[MaxLength(200)]
public string Apellido { get; set; }
[Required(ErrorMessage = "Debe ingresar la Fecha de Nacimiento del Paciente")]
public DateTime FechaNacimiento { get; set; }
[MaxLength(200)]
public string Domicilio { get; set; }
[MaxLength(200)]
public string Telefono { get; set; }
[MaxLength(200)]
public string Profesion { get; set; }
[MaxLength(200)]
public string Email { get; set; }
public string Observaciones { get; set; }
public virtual ICollection< MedidaAntropometrica> MedidasAntropometricas { get; set; }
}
 
[Table("MedidasAntropometricas")]
public class MedidaAntropometrica : EntidadBase
{
[Required(ErrorMessage = "Debe ingresar una Denominaci�n para la Medida Antropom�trica")]
[MaxLength(200)]
public string Denominacion { get; set; }
public bool Editable { get; set; }
public bool Inactivo { get; set; }
public ICollection<Paciente> Pacientes { get; set; }
}
  
Context:
 
public class SoftContext : DbContext
{
public SoftContext() : base("name=SoftConnectionString") { }
 
public DbSet<Paciente> Pacientes { get; set; }
public DbSet<MedidaAntropometrica> MedidasAntropometricas { get; set; }
 
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Paciente>().
HasMany(e => e.MedidasAntropometricas).
WithMany(e => e.Pacientes).
Map(e => e.MapLeftKey("PacienteId")
.MapRightKey(" MedidaAntropometricaId")
.ToTable(" PacientesMedidasAntropometricas"));
}
}
 
Mi Acceso a Datos:
public override bool Guardar(Paciente entidad)
{
bool exito = true;
try
{
using (var context = new SoftContext())
{
context.Entry(entidad).State = entidad.Id == 0 ? EntityState.Added : EntityState.Modified;
context.SaveChanges();
}
}
catch (InvalidOperationException error)
{
exito = false;
throw error;
}
catch (Exception error)
{
exito = false;
throw error;
}
return exito;
}
Y mi c�digo de prueba:

Paciente pacientes = new Paciente();
nuevoPaciente.Nombre = "Martin";
nuevoPaciente.Apellido = "Comparetto";
nuevoPaciente.FechaNacimiento = new DateTime(1981, 11, 23);
nuevoPaciente.SexoId = 1;
MedidasAntropometricasCD medidas = new MedidasAntropometricasCD();
MedidaAntropometrica medida = medidas.Abrir(1);
nuevoPaciente.MedidasAntropometricas.Add( medida);
PacientesCD pacientes = new PacientesCD();
bool exito = pacientes.Guardar(nuevoPaciente);
 
Bien, al crear las tablas, me crea perfectamente:
- Tabla Pacientes
- Tabla MedidasAntropometricas
- Tabla PacientesMedidasAntropometricas
 
El problema que tengo, es que al agregar un nuevo paciente, me crea correctamente los registros en las tablas Pacientes y PacientesMedidasAntropometricas, pero tambi�n me crea un nuevo registro en la tabla MedidasAntropometricas... y esto no deber�a crearlo.
Cuando lo depuro veo que esta todo bien, con los valores correctos. Pero al ejecutar el m�todo SaveChange, me crea este nuevo registro y los Id, me los asocia a este nuevo. Yo necesitar�a que quede asociado al que estoy recuperando, el que ya esta en la tabla MedidasAntropometricas.
Qu� estoy haciendo mal?
 
Un saludos, y muchas gracias!
 
Mart�n R. Comparetto

martin.comparetto

unread,
Jul 23, 2013, 10:28:39 AM7/23/13
to Dario Quintana
Perdon! Me olvide de cambiar el Asunto!!!
Va otra vez!!
 
Reply all
Reply to author
Forward
0 new messages