Foros del Web » Programación para mayores de 30 ;) » .NET »

Agregar mas paginas a medida que se necesite

Estas en el tema de Agregar mas paginas a medida que se necesite en el foro de .NET en Foros del Web. Estimados amigos, Tengo el siguente problema: Estoy haciendo un programa de administracion de currículum vitae, mi problema surge al querer imprimir los currículum, Esta es ...
  #1 (permalink)  
Antiguo 18/04/2013, 16:48
Avatar de titux_co  
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Agregar mas paginas a medida que se necesite

Estimados amigos, Tengo el siguente problema:
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:
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()
En esta seccion no tengo problemas, el problema surge al querer imprimir el resto de los datos, como ser Experiencia laboral, formacion academica, etc.

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:
e.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
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 controlarlo

Si alguien me puede ayudar se los voy a agradecer.

Gracias de antemano

Etiquetas: conexion, sql, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:03.