Ver Mensaje Individual
  #20 (permalink)  
Antiguo 30/10/2007, 16:46
rosagomezj
 
Fecha de Ingreso: octubre-2007
Mensajes: 3
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: imagenes en Crystal reports 2005

Hola a todos!!, yo tengo un problema al querer llenar un dataset con un campo de imagen, en la cual el dataset tipeado lo tengo como tipo System.Byte en visual Studio 2005.

En el proceso utilizo un stored procedure, una tabla fisica de sql server 2000 que me sirve para el datatable y un dataset que debe llenar con los datos de los resultados del stored procedure para relacionar con crystal report, pero en el momento de pasar los datos al datatable no hay problema, pero si quiero pasar al dataset me sale este error : No se puede convertir un objeto de tipo 'System.Byte[]' al tipo
'System.IConvertible'.No se puede almacenar <System.Byte[]> en la columna
imageFoto. El tipo esperado es Byte. y es por la linea :

rs2.TmpDatosEmpleadosOrg.ImportRow(dr); por la imagen, xq si solo paso otros tipos de datos de los otros campos, ahi si funciona.

De todos modos les pongo a continuacion los 2 procesos que los tengo en un proyecto de clases que luego lo llamo desde un webservice.

Ayudenme por favor, muchas gracias.


public DSEmpleadosOrg ConsultarEmpleadosOrg(string idOrg, string CodEmpleado)
{
DataTable dt = new DataTable("TMPDatosPersonal");
DataRow dr;
DSEmpleadosOrg rs2 = new DSEmpleadosOrg();
DataSet ds = new DataSet();
dt.Columns.Add("idOrg", System.Type.GetType("System.String"));
dt.Columns.Add("descOrg", System.Type.GetType("System.String"));
dt.Columns.Add("nivelOrg", System.Type.GetType("System.String"));
dt.Columns.Add("numMinEmp", System.Type.GetType("System.Int32"));
dt.Columns.Add("numMaxEmpl", System.Type.GetType("System.Int32"));
dt.Columns.Add("nodoOrg", System.Type.GetType("System.String"));
dt.Columns.Add("nivelPrint", System.Type.GetType("System.String"));
dt.Columns.Add("nivelOrgReporta", System.Type.GetType("System.String"));
dt.Columns.Add("statusOrg", System.Type.GetType("System.String"));
dt.Columns.Add("longNivel", System.Type.GetType("System.Int32"));
dt.Columns.Add("codSociedad", System.Type.GetType("System.String"));
dt.Columns.Add("codEmpleado", System.Type.GetType("System.String"));
dt.Columns.Add("nomEmpleado", System.Type.GetType("System.String"));
dt.Columns.Add("apeEmpleado", System.Type.GetType("System.String"));
dt.Columns.Add("fechaNacimiento", System.Type.GetType("System.DateTime"));
dt.Columns.Add("estDiscapacidad", System.Type.GetType("System.String"));
dt.Columns.Add("sexEmpleado", System.Type.GetType("System.String"));
dt.Columns.Add("estCivil", System.Type.GetType("System.String"));
dt.Columns.Add("telEmpleado", System.Type.GetType("System.String"));
dt.Columns.Add("dirEmpleado", System.Type.GetType("System.String"));
dt.Columns.Add("emailEmpleado", System.Type.GetType("System.String"));
dt.Columns.Add("nivelProfesion", System.Type.GetType("System.String"));
dt.Columns.Add("nivelInstruccion", System.Type.GetType("System.String"));
dt.Columns.Add("fIngreso", System.Type.GetType("System.DateTime"));
dt.Columns.Add("fSalida", System.Type.GetType("System.DateTime"));
dt.Columns.Add("fUltVacacion", System.Type.GetType("System.DateTime"));
dt.Columns.Add("imageUrl", System.Type.GetType("System.String"));
dt.Columns.Add("numIdent", System.Type.GetType("System.String"));
dt.Columns.Add("tipoIdent", System.Type.GetType("System.String"));
dt.Columns.Add("statusEmpleado", System.Type.GetType("System.String"));
dt.Columns.Add("imageFoto", System.Type.GetType("System.Byte[]"));

//try
//{
SqlConnection conn = new SqlConnection(this.conSt);
SP_QRDatosPersonalEmpleados listEmpleados = new SP_QRDatosPersonalEmpleados(conn);
SqlDataReader drREmployee = listEmpleados.ExecuteReader(idOrg, CodEmpleado);
while (drREmployee.Read())
{
dr = dt.NewRow();
dr["idOrg"] = drREmployee.GetString(0);
dr["descOrg"] = drREmployee.GetString(1);
dr["nivelOrg"] = drREmployee.GetString(2);
dr["numMinEmp"] = drREmployee.GetInt32(3);
dr["numMaxEmpl"] = drREmployee.GetInt32(4);
dr["nodoOrg"] = (drREmployee.IsDBNull(5)) ? "" : drREmployee.GetString(5);
dr["nivelPrint"] = (drREmployee.IsDBNull(6)) ? "" : drREmployee.GetString(6);
dr["nivelOrgReporta"] = (drREmployee.IsDBNull(7)) ? "" : drREmployee.GetString(7);
dr["statusOrg"] = (drREmployee.IsDBNull(8)) ? "" : drREmployee.GetString(8);
dr["longNivel"] = drREmployee.GetInt32(9);
dr["codSociedad"] = drREmployee.GetString(10);
dr["codEmpleado"] = drREmployee.GetString(11);
dr["nomEmpleado"] = drREmployee.GetString(12);
dr["apeEmpleado"] = drREmployee.GetString(13);
dr["fechaNacimiento"] = drREmployee.GetDateTime(14);
dr["estDiscapacidad"] = (drREmployee.IsDBNull(15)) ? "" : drREmployee.GetString(15);
dr["sexEmpleado"] = drREmployee.GetString(16);
dr["estCivil"] = drREmployee.GetString(17);
dr["telEmpleado"] = drREmployee.GetString(18);
dr["dirEmpleado"] = drREmployee.GetString(19);
dr["emailEmpleado"] = drREmployee.GetString(20);
dr["nivelProfesion"] = (drREmployee.IsDBNull(21)) ? "" : drREmployee.GetString(21);
dr["nivelInstruccion"] = drREmployee.GetString(22);
dr["fIngreso"] = drREmployee.GetDateTime(23);
dr["fSalida"] = drREmployee.GetDateTime(24);
dr["fUltVacacion"] = drREmployee.GetDateTime(25);
dr["imageUrl"] = drREmployee.GetString(26);
dr["numIdent"] = (drREmployee.IsDBNull(27)) ? "" : drREmployee.GetString(27);
dr["tipoIdent"] = (drREmployee.IsDBNull(28)) ? "" : drREmployee.GetString(28);
dr["statusEmpleado"] = drREmployee.GetString(29);
dr["imageFoto"] = tomaBytes(drREmployee.GetString(26));
dt.Rows.Add(dr);
rs2.TmpDatosEmpleadosOrg.ImportRow(dr); ----> aqui me sale error
//rs2.Tables.Add(dt);
//rs2.Tables[0].TableName = "TmpDatosEmpleadosOrg";
//rs.Merge(rs2, false, System.Data.MissingSchemaAction.Ignore);

}


drREmployee.Close();
//}
//catch (SystemException ex)
//{
//}
//finally
//{
//}

return rs2;

}

public static byte[] tomaBytes(string archivin)
{

FileStream obtenArchivo = new FileStream(archivin, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(obtenArchivo);
byte[] imagenBytes = new byte[(int)obtenArchivo.Length];
// int valor = imagenBytes .Length;
br.Read(imagenBytes, 0, (int)obtenArchivo.Length);
br.Close();
obtenArchivo.Close();

return imagenBytes;
}