Estoy haciendo un programa de administracion de currículum vitae, mi problema surge al querer imprimir los currículum,
Esta es la rutina de impresion de encabezado y datos personales:
Código:
En esta seccion no tengo problemas, el problema surge al querer imprimir el resto de los datos, como ser Experiencia laboral, formacion academica, etc.Try Reconectar() Dim titulopag As New Font("Microsoft Sans Serif", 28, FontStyle.Bold) Dim Categorias As New Font("Microsoft Sans Serif", 16, FontStyle.Bold) Dim Items As New Font("Microsoft Sans Serif", 8, FontStyle.Bold) Dim Texto As New Font("Microsoft Sans Serif", 8, FontStyle.Regular) Dim TextoIta As New Font("Microsoft Sans Serif", 8, FontStyle.Italic) Dim lector As System.Data.IDataReader Dim sql As New MySql.Data.MySqlClient.MySqlCommand Dim posy As Integer = 20 Dim posx As Integer = 10 conexionEmp.ChangeDatabase(database) conexionPrinc.ChangeDatabase(database) sql.Connection = conexionEmp '***********************************DATOS PERSONALES********************************************* sql.CommandText = "select per.idpersonal, concat(per.apellidos,',',per.nombre) as nomapell, concat(dt.nombre,' ',per.doc_num) as dni, datediff(now(), per.fecha_nac) as edad, per.fecha_nac, ge.nombre as genero, " _ & "na.nombre as nacionalidad, per.num_telefono as telefono, per.num_celular as celular, per.email as mail, per.domicilio as direccion, " _ & "lo.nombre as localidad, pr.nombre as provincia, " _ & "ec.nombre as estado_civil, car.nombre as carnet, per.foto,alta_curr, per.observaciones, per.referencias_pers, per.gr_sang, per.direccion_alt, " _ & "per.disponibilidad " _ & "from sdo_personal as per, cm_genero as ge, cm_nacionalidad as na, cm_localidad as lo, cm_provincias as pr, cm_doc_tipo as dt, " _ & "cm_tipo_carnet as car, cm_estado_civil as ec " _ & "where per.carnet=car.id and per.provincia=pr.idprovincias and per.nacionalidad=na.idnacionalidad and per.localidad=lo.idlocalidad and " _ & "per.genero=ge.idgenero and per.estado_civil=ec.idestado_civil and per.doc_tipo=dt.iddoc_tipo and per.idpersonal=" & Idpersonal sql.CommandType = CommandType.Text lector = sql.ExecuteReader lector.Read() e.Graphics.DrawString("CURRICULUM VITAE", titulopag, Brushes.Black, posx, posy) posy += titulopag.GetHeight(e.Graphics) + 10 e.Graphics.DrawString("Datos personales", Categorias, Brushes.Black, posx, posy) posy += Categorias.GetHeight(e.Graphics) + 2 e.Graphics.DrawLine(Pens.Black, posx, posy, 190, posy) posy += 2 e.Graphics.DrawImage(pctfoto.Image, posx, posy, 40, 40) posx += 42 e.Graphics.DrawString("Nombre: " & lector("nomapell").ToString, Items, Brushes.Black, posx, posy) posy += Items.GetHeight(e.Graphics) + 2 e.Graphics.DrawString("Edad: " & lector("edad").ToString & " años - Nacionalidad: " & lector("nacionalidad").ToString.ToUpper & " - Estado civil: " _ & lector("estado_civil").ToString & " - " & lector("dni").ToString, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 e.Graphics.DrawString("Fecha de nacimiento: " & lector("fecha_nac").ToString, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 e.Graphics.DrawString("Dirección: " & lector("direccion").ToString, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 e.Graphics.DrawString("Ciudad: " & lector("localidad").ToString & " - Provincia: " & lector("provincia").ToString, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 e.Graphics.DrawString("Tel. " & lector("telefono").ToString & " Cel. " & lector("celular").ToString, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 e.Graphics.DrawString("Mail: " & lector("mail").ToString, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 10 posx = 10 lector.Close()
Esta es la rutina que utilizo para cargar la experiencia laboral:
Código:
e.Graphics.DrawString("Experiencia laboral", Categorias, Brushes.Black, posx, posy) posy += Categorias.GetHeight(e.Graphics) + 2 e.Graphics.DrawLine(Pens.Black, posx, posy, 190, posy) posy += 2 sql.CommandText = "select categoria, descripcion, referencias from curr_experiencia_laboral where id_aspirante=" & Idpersonal sql.CommandType = CommandType.Text lector = sql.ExecuteReader Dim palabras() As String Dim lineaDes As String Dim i As Integer While lector.Read() lineaDes = "" palabras = Nothing e.Graphics.DrawString(lector("categoria").ToString, Items, Brushes.Black, posx, posy) posy += Items.GetHeight(e.Graphics) + 2 palabras = lector("descripcion").ToString.Split(separador, StringSplitOptions.None) For i = 0 To palabras.Length - 1 If CType(lineaDes & " " & palabras(i), String).Length <= 100 Then lineaDes &= palabras(i) & " " Else e.Graphics.DrawString(lineaDes & vbNewLine, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 lineaDes = palabras(i) & " " End If Next i e.Graphics.DrawString(lineaDes & vbNewLine, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 palabras = lector("referencias").ToString.Split(vbNewLine) For i = 0 To palabras.Length - 1 If Not palabras(i).Trim = "" Then e.Graphics.DrawString(palabras(i), TextoIta, Brushes.Black, posx, posy) posy += TextoIta.GetHeight(e.Graphics) + 2 End If Next i End While lector.Close()
La rutina para cargar la formacion academica es muy similar:
Código:
el problema es que muchas veces los curriculum son largos y necesito que cree una nueva hoja en cualquiera de las rutinas, tanto cuando carga la experiencia laboral o la formacion academica; eso no es fijo, no se cuantas lineas va a tener el curriculum ni en que parte va a necesitar agregar la hoja. hasta ahora lo que logre es que me repita indefinidamente la hoja numero uno, no se como controlarloe.Graphics.DrawString("Formación académica", Categorias, Brushes.Black, posx, posy) posy += Categorias.GetHeight(e.Graphics) + 2 e.Graphics.DrawLine(Pens.Black, posx, posy, 190, posy) posy += 2 sql.CommandText = "select titulo, area, universidad, nivel from curr_formacion_academica where id_aspirante=" & Idpersonal sql.CommandType = CommandType.Text lector = sql.ExecuteReader While lector.Read() e.Graphics.DrawString(lector("titulo").ToString, Items, Brushes.Black, posx, posy) posy += Items.GetHeight(e.Graphics) + 2 e.Graphics.DrawString(lector("universidad").ToString, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 e.Graphics.DrawString(lector("area").ToString, Texto, Brushes.Black, posx, posy) posy += Texto.GetHeight(e.Graphics) + 2 e.Graphics.DrawString(lector("nivel").ToString, TextoIta, Brushes.Black, posx, posy) posy += TextoIta.GetHeight(e.Graphics) + 2 posy += 5 End While
Si alguien me puede ayudar se los voy a agradecer.
Gracias de antemano