Mi experiencia a prueba

Visitor
05 de Febrero del 2008
Bueno, llevo mucho tiempo (creo) trabajando con el VB asi que si quieres preguntar algo pues apura que el tiempo es oro!!

dorian
05 de Febrero del 2008
estoy haciendo la practica y me pidieron hacer un programita en vb li hice pero en el momento de imprimir los datos que despiliego en la grilla me imprime solo una pagina y deberia imprimir como minimo 4 paginas este es un nuevo codigo que implemente de un foro pero tiene error y no me sale algien ayudeme please


Private Sub BTN_IMPRIMIR_Click()

Dim Header0 As String, Header1 As String, Header2 As String
Dim ColInicio(0 To 10) As Integer
Dim inicioY As Integer
Dim inicioFor As Integer

If grid_mostrar.Rows = 1 Then Exit Sub

Printer.Print

'defino la escala
Printer.ScaleMode = vbMillimeters

'leo el tipo de papel y defino los limites
hoja = Printer.PaperSize
Select Case hoja
Case vbPRPSLetter
' Printer.Scale (0, 0)-(216, 279)
Case vbPRPSLegal
' Printer.Scale (0, 0)-(216, 356)
Case vbPRPSA4
' Printer.Scale (0, 0)-(210, 297)
Case vbPRPSUser
' Printer.Scale (0, 0)-(Printer.Height, Printer.Width)
End Select

'defino las coordenadas de inicio
inicioX = (Printer.ScaleWidth - Printer.ScaleLeft - 200) 2
inicioY = 24
finY = Printer.ScaleHeight - 30

'inicializo el tamaño e inicio de cada columna
ColInicio(0) = 0

For i = 1 To grid_mostrar.Cols - 1
ColInicio(i) = 0
For j = 1 To i
ColInicio(i) = ColInicio(i) + grid_mostrar.ColData(j - 1)
Next
Next



If grid_mostrar.Rows - 1 < 43 Then
total_pag = 1
Else
Filas = grid_mostrar.Rows - 42
AreaImpresion = finY - 18
FilasXhoja = AreaImpresion 6
total_pag = (Filas FilasXhoja) + 2
End If

pagina = 1

GoSub cabecera

GoSub semicab

grid_mostrar.Row = 0

Printer.Print
With Printer
.Font.Name = "tahoma"
.Font.Size = 8
.Font.Bold = False
.Font.Italic = False
End With
i = 0
Do While grid_mostrar.Row < grid_mostrar.Rows - 1
grid_mostrar.Row = grid_mostrar.Row + 1
If inicioY + 17 + i > finY + 1 Then
GoSub Separadores
Printer.NewPage
inicioY = 24

GoSub cabecera
GoSub semicab
i = 0
pagina = pagina + 1

'preparo la letra para seguir
Printer.Print
With Printer
.Font.Name = "tahoma"
.Font.Size = 8
.Font.Bold = False
.Font.Italic = False
End With
End If

For j = 1 To grid_mostrar.Cols
With grid_mostrar.Col = j - 1
Printer.Font.Bold = grid_mostrar.CellFontBold
Printer.Font.Italic = grid_mostrar.CellFontItalic
If grid_mostrar.FixedAlignment(j - 1) <> 4 Then
Printer.CurrentX = inicioX + ColInicio(j - 1) + 1
Printer.CurrentY = inicioY + 10 + i
If Printer.TextWidth(grid_mostrar.Text) > grid_mostrar.ColData(j - 1) Then

Printer.Print
'cortartexto(.Text, grid_mostrar.ColData(J - 1))
Else
Printer.Print grid_mostrar.Text
End If
Else
Printer.CurrentX = inicioX + ColInicio(j - 1) + (grid_mostrar.ColData(j - 1) - 2 - Printer.TextWidth(grid_mostrar.Text)) 2
Printer.CurrentY = inicioY + 10 + i
Printer.Print grid_mostrar.Text
End If
End With
Next
i = i + 6
Loop

finY = inicioY + 8 + i
GoSub Separadores

'Final de la impresión
Exit Sub




cabecera:
Header0 = " Prisa Depot S.A."
Header1 = " Las Rosas 5757 - Cerrillos - Santiago"
Printer.Print , Header0; Spc(21); "Reporte de Empleados"; Spc(21); "Fecha: " & Date
Printer.Print , Header1; Spc(45); "Hora :" & Time
Return

semicab:
'defino el tipo de letra para la cabecera de la tabla
Printer.Print
With Printer
.Font.Name = "arial"
.Font.Size = 10
.Font.Bold = True
.Font.Italic = False
End With
fila = grid_mostrar.Row
grid_mostrar.Row = 0
For i = 1 To grid_mostrar.Cols
With grid_mostrar.Col = i - 1
If grid_mostrar.FixedAlignment(grid_mostrar.Col) <> 4 Then
Printer.CurrentX = inicioX + ColInicio(i - 1) + 1
Else
Printer.CurrentX = inicioX + ColInicio(i - 1) + (grid_mostrar.ColData(i - 1) - 2 - Printer.TextWidth(grid_mostrar.Text)) 2
End If
Printer.CurrentY = inicioY
Printer.Print grid_mostrar.Text
End With
Next
grid_mostrar.Row = fila
Return

Separadores:
'imprimo separadores

Printer.DrawWidth = 4
'horizontales
Printer.Line (inicioX, inicioY - 3)-(inicioX + 200, inicioY - 3), vbBlack
Printer.Line (inicioX, inicioY + 7)-(inicioX + 200, inicioY + 7), vbBlack

Printer.DrawWidth = 1

Printer.Print

With Printer
.Font.Name = "ARIAL"
.Font.Size = 10
.Font.Bold = True
.Font.Italic = False
End With

'imprime numero de pagina
linea = "Página " + CStr(pagina)
Printer.CurrentX = inicioX + (200 - Printer.TextWidth(linea)) 2
Printer.CurrentY = Printer.ScaleHeight - 20

Printer.Print linea

Return

visitor
05 de Febrero del 2008
Me gustaria analizar tu codigo original que imprime 1 pagina en vez de 4, pero mas te recomendaria (para salir del apuro!!) usar el cristal report, es muy practico y su entorno de desarrollo es bastante intuitivo.

krizall
05 de Febrero del 2008
hola, espero no molestarte con esto, sucede que hace un buen he estado buscando informacion sobre el manejo de scripts (vbs) para manejarlos con vb, he encontrado algunos, pero no resuelven mis dudas.

si tienes algun manual o ejemplo te agradeceria si me lo puedes enviar a cualquiera de estos correos:
[email protected]
[email protected]
[email protected]

de antemano gracias.

Visitor
05 de Febrero del 2008
pues la verdad debo tener los mismos manuales que los tuyos, pero si me dices cual es tu duda entonces talvez pueda ayudarte, sino que continue la busqueda...

conge
05 de Febrero del 2008
hola!!! quisiera que me ayudaras a hacer un programa en visual basic que sea con altas ,bajas y consultas de lo que sea o que me enviaras el código de cualquier forma me sentiria agradecida .


gracias

migumu
05 de Febrero del 2008
Hola amigo:

Tengo una aplicación mdi con conectividad en base de datos access 2003 etc....
Tengo que generar un informe maestro detalle pero tengo que hacerlo en datareport de vb6 (a no ser que alguien me explique como hacerlo en cristalreport 8, claro)

La estructura de la base de datos que tiene que ser la fuente del informe consta de tres tablas

Tabla1, swap y tabla2
La tabla uno tiene un id_tabla1 como PK y la tabla2 un Id_tabla2 como PK y la swap tiene id_tabla1, id_tabla2 como PK.
El caso es que de tabla1 se debe generar el maestro del informe y de tabla2 el detalle, a una página por maestro, (suele haber 2 detalles por maestro mas o menos)

Y para rizar el rizo todo esto debe permitir que desde la llamada del form de vb6 yo pueda enviar el filtro en SQL.


¿Me puedes ayudar?
Si tienes alguna duda que te pueda resolver en VB6 u Oracle comentamelo ¿ok?

Visitor
05 de Febrero del 2008
Hola, la verdad el reporteador de basic nunca lo he podido dominar como quisiera pues no encontre una manera de que entrege reportes con cabecera y detalle por hoja, la verdad que le insisti mucho al reporteador y nada de nada, por lo que me toco usar el Cristal Report y ya veras que esa tambien seria una de tus opciones. Ahora el Cristal no es nada del otro mundo casi ni necesitas manual ni nada, pero te dire lo basico:
Este es el caso para Cristal 8.0

si no haz creado un controlador para tu base de datos, puedes hacerlo en el ODBC de windows, si aun no lo haz hecho no importa lo puedes hacer tambien desde el mismo Cristal (esto ultimo es mejor)

sale una ventana que se titula "Explorador de datos"
escojes la carpeta "ODBC" y luego "Crear nuevo origen de datos", con esto se activara el boton AGREGAR, escojes el Driver para Access luego indicas donde quieres que se guarde el archivo que utilizara el controlador, dale el nombre que gustes..... continuas y oprimes "Select.." para buscar tu base de datos. Le das Ok, Ok luego lu base de datos estara en la lista inicial, la seleccionas y le das nuevamente en el boton "AGREGAR" y luego "CERRAR" y listo con esto ya el reporte esta conectado a la base de datos y podras insertar en el los que creas conveniente desde la ventana "Explorador de campos" o en el menu "Insertar/Campo de base de datos".

esto es solo por el lado del reporte, aun falta los ajustes desde VB, si estas interesado me mandas un correo a [email protected] en realidad al final necesitaras utilizar algo mas profesional que el reporteador que viene con el Basic..
Saludos

Private Sub CmdReporte_Click()
Dim SQL$
SQL = "select personal.idper,personal.apeper,pagos.pago,pagos.fechapago from " & _
"pagos inner join personal on pagos.idper=personal.idper where"
\'MsgBox sqL
If OpModelador.Value = True Then
emp = "El Modelador S.A."
SQL = SQL + " trim(personal.rucemp)=\'20100174911\' and "
ElseIf OpSanta.Value = True Then
emp = "Santa Maria S.A."
SQL = SQL + " trim(personal.rucemp)=\'20471850099\' and "
ElseIf opAmbas.Value = True Then
emp = "AMBAS"
End If
\'MsgBox sqL
If VarId = 1 Then
tipo = "Obrero"
SQL = SQL + " val(personal.tipper)=" & VarId & " and "
ElseIf VarId = 2 Then
tipo = "Empleado"
SQL = SQL + " val(personal.tipper)=" & VarId & " and "
ElseIf VarId = 4 Then
tipo = "F. Laboral"
SQL = SQL + " val(personal.tipper)=" & VarId & " and "
ElseIf VarId = 0 Then
tipo = "TODOS"
End If
\'MsgBox sqL
CR.Formulas(0) = "EMP=""" & emp & """"
CR.Formulas(1) = "CAT=""" & tipo & """"
CR.Formulas(2) = "fini=""" & fIni.Value & """"
CR.Formulas(3) = "ffin=""" & fFin.Value & """"

SQL = SQL + " pagos.fechapago>= #" & Format(fIni.Value, "mm/dd/yy") & _
"# and pagos.fechapago<= #" & Format(fFin.Value, "mm/dd/yy") & "# " & _
" order by personal.apeper,pagos.fechapago"


Dim logon As Integer
\'Defino ruta y asigno nombre al reporte
Me.CR.ReportFileName = App.Path & "\REPORTE\rpt_1_consumopersonal_pagos.rpt"
\'Inicio conexcion de datos via DSN
logon = Me.CR.LogOnServer("pdsodbc.dll", "conexion_tarjeta", "", "", "")
Me.CR.SQLQuery = SQL
CR.WindowTitle = "Reporte de pagos del día: " & DtFechaAl.Value
CR.WindowState = crptMaximized
CR.Action = 1

fran
05 de Febrero del 2008
hola. soy nuevo en esto y estoy un poco perdido. tengo almacenados en un vector una serie de valores y tengo que representarlos en forma gráfica. por favor si pudieses decirme como y si tuvieses algún ejemplo sería genial porque te repito que llevo muy poco programando. GRACIAS POR TU TIEMPO

Paola
05 de Febrero del 2008
HOLA necesito imprimir una imagen de un form pero no kiero utilizar el crystal report como puedo hacerlo???

edwin
05 de Febrero del 2008
heyyy amigo necesito el codigo de como hacer una calculadora estandar el vb 6. para el jueves 11 d agosto es tarde
ayudame
mi correo [email protected]
gracias

cmayorine
05 de Febrero del 2008
Hola visitor :

Soy novato en VB y deseo saber como puedo resolver este problema:

tengo un archivo de texto (.txt) y es algo asi :

1=23.5
2=44.5
3=1.5
4=6
1=44.9
2=23.5
3=6
4=8
Etc....

Deseo leer el archivo y crear otro que sea asi:

1 2 3 4

23.5 44.5 1.5 6
44.9 23.5 6 8

Etc.......


De antemano agradezco tu ayuda