Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

MKN Reservas (Maro - Kayak Nerja)


Kayak Maro - Rutas y alquiler de kayak y tabla
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu inter�s (algunos de los avisos publicados)

01/feb./2019

Como te avisé, desde el 1 de febrero de 2019

No se podrán escribir nuevos mensajes ni editar los existentes

En breve solo se mostrarán los mensajes con respuestas.
Posiblemente para el 1 de marzo, solamente se mostrarán los que tengan respuestas y estén marcados como respuesta válida.

  Foro: VB6.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 51881 - Pasar valor de variable VB6 a un Campo Formula CR11.5
IDAsuntoFechaNick 
51881 Pasar valor de variable VB6 a un Campo Formula CR11.519/02/10 22:08abinfra   
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.
IDAsuntoFechaNick 
51891 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51881)21/02/10 02:42in 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.
IDAsuntoFechaNick 
51894 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51891)21/02/10 07:59abinfra   
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 Sub



Te 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.
IDAsuntoFechaNick 
51903 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51894)21/02/10 18:31in 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.
IDAsuntoFechaNick 
51916 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51903)22/02/10 15:27abinfra   
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.
IDAsuntoFechaNick 
51971 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51881)27/02/10 06:27ing_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.
IDAsuntoFechaNick 
51997 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51971)03/03/10 17:58abinfra   
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 Sub

Lo 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.
IDAsuntoFechaNick 
52005 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51997)04/03/10 00:26ing_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 CRAcarcajadaRT.ParameterFieldDefinitions
Dim crParamDef As CRAcarcajadaRT.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.
IDAsuntoFechaNick 
52006 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 52005)04/03/10 12:31abinfra   
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.
IDAsuntoFechaNick 
52013 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 52006)04/03/10 18:04ing_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.
IDAsuntoFechaNick 
52022 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 52013)04/03/10 21:07abinfra   
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.
IDAsuntoFechaNick 
52626 Re: Pasar valor de variable VB6 a un Campo Formula CR11.5 (Resp: 51881)02/05/10 05:55verot   
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.

 
(c) Guillermo 'guille' Som, 2005-2026  - foros.elGuille v1.0.6.3 (01/Jun/2021 12:45 GMT +2)  - (ASP.NET v4.0.30319.42000)
 
La hora GMT del servidor es: 10/06/2026 11:56:31 GMT