| ID | Asunto | Fecha | Nick | |
| 51881 | Pasar valor de variable VB6 a un Campo Formula CR11.5 | 19/02/10 22:08 | abinfra | |  |
Os agradecería me informasen sobre lo siguiente: Estoy utilizando VB6, Crystal Reports 11.5 y SQL2000. Quiero pasar a un informe el valor de la variable TBcNumPed definida como pública en módulo.bas a un Campo de Fórmula llamado Prueba (con valor “”, cadena), definido en el Diseñador CrystalReport1.dsr, de la siguiente manera en el formulario que llama al report: CrystalReport1.FormulaFields(0) = "Prueba = '" &
TBcNumPed & "'"El problema es que me da el siguiente error: El subíndice está fuera del intervalo. Saludos cordiales. |
|
| ID | Asunto | Fecha | Nick | |
| 51891 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51881) | 21/02/10 02:42 | in training | | |
CrystalReport1.FormulaFields(0) = "Prueba = '" & TBcNumPed & "'"
El error es el "(0)" prueba con "(1)" y si te vuelve a dar error, es porque la matriz no tiene elementos,
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 51894 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51891) | 21/02/10 07:59 | abinfra | | |
Hola in training, agradezco mucho que respondas a mi mensaje. He probado con "(1)" y me devuelve el error: Error '438' en tiempo de ejecución: El Objeto no admite este propiedad o método Perdona mi ignorancia, ya que me estoy iniciando en estos temas, ¿que significa "es porque la matriz no tiene elementos"? Tambien he probado con esta otra línea de código (que por cierto no se si es adecuada para el fin que pretendo, y que como dije es pasar el valor de una variable pública declarada en el módulo .bas, desde la form que llama al report, a un campo fórmula del informe .dsr): CrystalReport1.RecordSelectionFormula = "{@cNumPed} =
'" & TBcNumPed & "'"Con este mandato no me da error, pero en el campo formula del .dsr no aparece el valor de la variable. Te pongo el código de la form que llama al report .dsr: Option Explicit
Private Report As New CrystalReport1
-----------------------------------------
Private Sub Form_Load()
WindowState = 0
Screen.MousePointer = vbHourglass
Set Report = New CrystalReport1
Set rsPed = New ADODB.Recordset
strSQL = "SELECT * FROM PedidSEA WHERE Numero = '" & TBcNumPed & "'"
rsPed.Open strSQL, g_db, adOpenDynamic, adLockOptimistic
'CrystalReport1.FormulaFields(0) = "cNumPed = '" & TBcNumPed
& "'" 'Error '9' en tiempo de ejecución: El subíndice está fuera del intervalo
CrystalReport1.FormulaFields(1) = "cNumPed = '" &
TBcNumPed & "'" 'Error
'438' en tiempo de ejecución: El Objeto no admite este propiedad o método
'CrystalReport1.RecordSelectionFormula = "{@cNumPed} = '" &
TBcNumPed & "'" 'No produce error, pero no presenta el valor de TBcNumPed
With Report
.Database.SetDataSource rsPed
.PaperOrientation = 1
.PaperSize = 0
.DiscardSavedData
End With
With CRViewer1
.EnableDrillDown = False
.DisplayGroupTree = False
.DisplayTabs = False
.EnableRefreshButton = True
.ReportSource = Report
.ViewReport
.Zoom (2)
End With
WindowState = 2
Screen.MousePointer = vbDefault
End Sub
-------------------------------------
Private Sub Form_Resize()
CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth
End Sub
-------------------------------------
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Set Report = Nothing
'Obliga a cerrar los RecordSet caso de estar abiertos
If rsPed.State Then rsPed.Close
'Libera toda la memoria y recursos del sistema asociados a los RecordSet
Set rsPed = Nothing
End SubTe agradecería nuevamente tu ayuda. Saludos cordiales. [Editado: abinfra, 21/02/2010 08:24:41]
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 51903 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51894) | 21/02/10 18:31 | in training | | |
Si una matriz, no tiene elementos, no puedes intentar modificar un valor, puesto que no existe ningun indice. en fin, lo antes de hacer esto : CrystalReport1.FormulaFields(0) = "cNumPed = '" &
TBcNumPed & "'"Tienes que agregar un elemento a la matriz. con algo parecido a CrystalReport1.FormulaFields.Add CrystalReport1.FormulaFields.Items.Add No te digo que este codigo funcionara, si no que la forma de agregar un elemento es con una funcion "add".
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 51916 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51903) | 22/02/10 15:27 | abinfra | | |
Gracias nuevamente in_training.
No obstante agradecería si alguien puede ampliar la ayuda de in_training para resolver el problema que tengo, ya que no me aclaro.
Saludoa cordiales. [Editado: abinfra, 22/02/2010 15:27:29]
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 51971 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51881) | 27/02/10 06:27 | ing_najib | | |
Mira lo que trata de explicarte mi cuais es que necesitas crear un "CAMPO PARAMETRO" dentro de crystal para que reciba el contenido de lo que le quieres mandar.
La forma mas facil es la siguientes. Abres tu reporte de crystal Del lado derecho donde creas las formulas o donde tomas tus campos para ponerlos en el informe hay un Apartado debajo de formulas especial que se llama Campos parametro Le das boton derecho le dices crear uno nuevo le pones el nombre seleccionas que tipo de datos va a recibir etc. ahora si desde visual ya le puedes mandar la informacion a ese parametro pq ya creastes el contenedor que lo va a recibir...
Tambien lo puedes hacer por codigo pero te sugiero que empieces creandolo desde el propio reporte.
Si tienes mas dudas o no sabes como me dejas un msn.
Estamos en contac...
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 51997 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51971) | 03/03/10 17:58 | abinfra | | |
Hola ing_najib, gracias por responder. He creado un Campo de parámetro llamado prueba en el informe .rpt. En la form que llama al informe, entre otro código he puesto: Private Sub Form_Load()
Dim crParamDefs As
CRA<img src='imagenes/smiles/carcajada.png' border='0'
alt='carcajada' />RT.ParameterFieldDefinitions
Dim crParamDef As
CRA<img src='imagenes/smiles/carcajada.png' border='0'
alt='carcajada' />RT.ParameterFieldDefinition
On Error GoTo ErrHandler
Screen.MousePointer = vbHourglass
mflgContinuar = True
Set rsPed = New ADODB.Recordset
strSQL = "SELECT * FROM PedidSEA WHERE Numero = '" & TBcNumPed & "'"
rsPed.Open strSQL, g_db, adOpenDynamic, adLockOptimistic
Set crReport = objApp.OpenReport(App.Path & "\A4LiPeSEA.rpt", 1)
Set crParamDefs = crReport.ParameterFields
For Each crParamDef In crParamDefs
Select Case crParamDef.ParameterFieldName
Case "Prueba"
crParamDef.AddCurrentValue (TBcNumPed)
End Select
Next
With crReport
.Database.SetDataSource rsPed
.PaperOrientation = 1
.PaperSize = 0
.DiscardSavedData
End With
With crViewer1
.ReportSource = crReport
.ViewReport
.Zoom (95)
End With
Screen.MousePointer = vbDefault
Set crParamDefs = Nothing
Set crParamDef = Nothing
Exit Sub
ErrHandler:
If Err.Number = -2147206461 Then
MsgBox "El archivo de reporte no se encuentra, restáurelo
de los discos de instalación", _
vbCritical + vbOKOnly
Else
MsgBox Err.Description, vbCritical + vbOKOnly
End If
mflgContinuar = False
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set crReport = Nothing
Set objApp = Nothing
End SubLo que ocurre es que antes de que aparezca el informe me sale una ventana para introducir un valor para el parámetro "Prueba", y desearía que no apareciera esta ventana y que se abriera el informe directamente y que en el Campo de parámetro "Prueba" del informe apareciera el valor que le asigno en: crParamDef.AddCurrentValue (TBcNumPed) Saludos cordiales. P.D.- Las variables Dim que he puesto al darle a guardar y enviar a este post no las deja como las he puesto y no se que hacer para que esas dos líneas de código se vean correctamente. [Editado: abinfra, 03/03/2010 17:59:45]
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 52005 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51997) | 04/03/10 00:26 | ing_najib | |  |
No, pues ya revice tu codigo y asi lo cargo mas o menos... Lo que no se es si insertas el reporte a vb o lo lees del archivo.. Yo los inserto en el vb a lo mejor crece un poco el ejecutable pero te evitas algunos problemas... De hecho si ya tienes el reporte para insertarlo en vb agregas la referencia, luego como si agregaras un modulo pero seleccionas Crystal Report 10 y le dices archivo existente, despues te pregunta que si deseas utilizar el crViewer le dices que si, luego te pregunta que si lo dejas como principal le dices que no y listo,te paso 2 codigos uno con el que llamo al reporte que es parecido al tuyo y otro lo que tiene el crViewer. Y si aun asi no funciona, mandame tu codigo con tu reporte comprimidos a mi correo y lo checo. para ver si detecto pq te aparece eso codigo 1 Private Sub carrepdiract(nomrep As String) On Error GoTo ErrHandler Dim crParamDefs As CRA  RT.ParameterFieldDefinitions Dim crParamDef As CRA  RT.ParameterFieldDefinition Load frmReporte frmReporte.Enabled = True frmReporte.Visible = True 'Abrir el reporte Screen.MousePointer = vbHourglass mflgContinuar = True Set crReport = crApp.OpenReport("C:\Directorio\Reportes\" & nomrep & ".rpt", 0) ' Parametros del reporte Set crParamDefs = crReport.ParameterFields For Each crParamDef In crParamDefs Select Case crParamDef.ParameterFieldName Case "Parametro1" crParamDef.AddCurrentValue (cbodirrepreg.Text) Case "Parametro2" crParamDef.AddCurrentValue (cbodirrepniv) End Select Next frmReporte.crViewer.ReportSource = crReport frmReporte.crViewer.DisplayGroupTree = True frmReporte.crViewer.ViewReport frmReporte.crViewer.Refresh Screen.MousePointer = vbDefault Set crParamDefs = Nothing Set crParamDef = Nothing Exit Sub ErrHandler: If Err.number = -2147206461 Then MsgBox "El archivo de reporte no se encuentra, restáurelo de los discos de instalación", _ vbCritical + vbOKOnly Else MsgBox Err.Description, vbCritical + vbOKOnly End If mflgContinuar = False Screen.MousePointer = vbDefault End Sub codigo 2 Private Sub Form_Resize() crViewer.Top = 0 crViewer.Left = 0 crViewer.Height = ScaleHeight crViewer.Width = ScaleWidth End Sub Private Sub Form_Unload(Cancel As Integer) Unload frmReporte Set crReport = Nothing End Sub Estamos en contac... 
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 52006 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 52005) | 04/03/10 12:31 | abinfra | | |
Hola ing_najib, perdona mi ignorancia, ¿a que te refieres en?: "en vb agregas la referencia"
Pendiente, recibe un cordial saludo.
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 52013 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 52006) | 04/03/10 18:04 | ing_najib | | |
Pues entras en el menu Proyecto, luego a referencia.. Agregas las referencias de Crystal Report y listo... Estamos en contac... 
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 52022 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 52013) | 04/03/10 21:07 | abinfra | | |
Muchas gracias ing_najib por tu ayuda. Tema solucionado, ya no aparece la ventana de Crystal Reports para introducir los parámetros.
Un abrazo. Saludos cordiales.
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 52626 | Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51881) | 02/05/10 05:55 | verot | | |
Hola..necesito ayuda espero que alguien pueda ayudarme..
Tengo un programa en vb6 y un reporte de crystal .dsr dentro del mismo proyecto...es ña primera vez que hago esos reporte desde dentro del proyecto visual, y no afuera en un .rpt normal de crystal.
El detalle es el siguiente: el diseño designer esta pegado a un stored procedure (sp) en una base de datos que recibia un parametro...yo actualice el sp..y le coloco dos campos mas...cuando voy aa actualizar el report para que vea la acrtulizacion despues de varios intentos..logro hacerlo y automaticamente se atualizan los parametros..pero cuando intento guardar el .dsr con los cambios hecho no me deja y me dice algo asi..no recuerdo bien unsupported error..que sera? ojala puedan ayudarme
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |