FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
Vistas
Hola a todos y de antemano mil gracias por sus repuestas....
Estoy utilizando delphi 7 con Interbase y componentes Bde. Tengo un query conectado a una vista, yo le mando 2 parametros de datos que si existen en dicha vista, pero me da un error de que no encuentra el registro siendo que yo lo revise y si esta ahi. Hay algun problema por ser una vista? como lo puedo solucionar, ya que ocupo poner el criterio en la consulta para poder imprimir el reporte correspondiente a un cliente con un auto en particular(que son los parametros que yo le mando). De nuevo mil gracias que esten muy bien Edu Rod
__________________
Gracias a Todos Por su ayuda.. "Hoy por mi mañana por ti" |
#2
|
||||
|
||||
Hola.
No, no hay ningún problema para usar consultas con parámetros sobre vistas en Interbase. ¿ Porqué no pones aquí la consulta que te da problemas ?, también podrias poner el código con el que asignas valor a los parámetros y abres la vista. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
|||
|
|||
Ok aqui el codigo
Primero se graba la factura y en el after post va lo siguiente.
procedure TfrmContado.qryContadoAfterPost(DataSet: TDataSet); begin inherited; DM.DB.ApplyUpdates([qryContado]); z := qryContadoIDCLIENTE.AsInteger; y := qryContadoIDAUTO.AsInteger; end; Despues al momento de imprimir hago lo siguiente procedure TfrmContado.btnImprimirClick(Sender: TObject); begin inherited; if (Application.MessageBox('Desea Imprimir el Contrato?', 'Confirmar', MB_YESNO) = IDYES) then begin frmreportes := Tfrmreportes.Create(self); qryContado.Close; // este query se conecta a la tabla ventas// qryContado.Open; ***este es otro query (aunque llamado igualque esta en la forma de reportes) el cual se conecta a la vista****** frmReportes.qryContado.ParamByName('idcliente').AsInteger := z; frmReportes.qryContado.ParamByName('idauto').AsInteger := y; frmReportes.qryContado.Open; frmreportes.repContado1.Print; frmreportes.repContado2.Print; frmreportes.repContado3.Print; end; end; el query de la vista en la sentencia sql tiene: select * from VW_Contado where idcliente =:z and idauto =:y el query de la tabla en la sentencia sql tiene: select * from ventas Gracias por la ayuda
__________________
Gracias a Todos Por su ayuda.. "Hoy por mi mañana por ti" |
#4
|
||||
|
||||
Hola.
Prieba a poner un frmReportes.qryContado.Close, antes de la asignación de los parámetros, no sea que ya estuviese abierto. Aunque no debería haber problemas, no me gusta demasiado utilizar variables globales, a menos que sean estrictamente necesarias. En lugar de usarl las variables z e y ¿ no puedes asignar directamente qryContadoIDCLIENTE.AsInteger al parámetro ?, o es que ¿ qryContado va a apuntar a un registro distinto ?. En cualquier caso, asegúrate de poner un punto de interrupción en el momento de asignar los parámetros, y comprueba que z e y contienen los valores que esperas. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#5
|
|||
|
|||
Modificaciones
Hola y gracias por tu ayuda guillotmarc, de hecho a mi tampoco me gustan las variables y ya tenia el proyecto asignando los valores del query pero en la busqueda de una solucion improvise lo de las variables ahora son locales y con las modificaciones q me diste lo deje de la siguiente manera:
frmreportes := Tfrmreportes.Create(self); qryContado.Close; qryContado.Open; frmReportes.qryContado.Close; z:=qryContadoIDCLIENTE.AsInteger; y:=qryContadoIDAUTO.AsInteger; frmReportes.qryContado.ParamByName('idcliente').AsInteger := z; frmReportes.qryContado.ParamByName('idauto').AsInteger := y; frmReportes.qryContado.Open; frmreportes.repContado1.Print; Si viene con los valores que espero, y dichos valores estan registrados el error que me da es el siguiente 'qrycontado arameter 'idcliente' not found
__________________
Gracias a Todos Por su ayuda.. "Hoy por mi mañana por ti" |
#6
|
||||
|
||||
Que curioso que antes no te diera este error.
Entra en la colección Parameters en las propiedades del qryContado en frmReportes, y verifica que tengas idcliente y idauto, y que ambas sean de tipo integer. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#7
|
||||
|
||||
Cita:
de tal manera que debieras hacer: frmReportes.qryContado.ParamByName('z').AsInteger := z; frmReportes.qryContado.ParamByName('y').AsInteger := y; Además, te recomiendo que aprendas a utilizar la etiqueta code para indentar trozos de código, que son mucho mas legibles de esta forma. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#8
|
|||
|
|||
Gracias
Código:
alert("select * from vw_credito where idcliente =:z and idauto =:y"); alert("Espero asi se utilice esta etiqueta");
__________________
Gracias a Todos Por su ayuda.. "Hoy por mi mañana por ti" |
#9
|
||||
|
||||
Hola.
Cita:
Cita:
En cambio el error Parameter 'idcliente' not found lo que está indicando, es que no encuentra el parámetro idcliente en la colección de Parámetros de ese Query. Prueba poniendo ptInput en la propiedad ParamType. O también un 0 en la propiedad Value. (Cuando asignas una propiedad del parámetro lo fuerzas a ser persistente, con lo que después se encuentra correctamente en tiempo de ejecución). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#10
|
|||
|
|||
Vistas
Mil disculpas no supe entender el error con lo que yo pensaba que podia ser, trate de hacer lo que me dijiste, force los valores y si me trae datos, pero quitando los valores solo le puse el tipo de datos input pero sigue dando el mismo error que te comente.
Gracias por tu ayuda y apoyo
__________________
Gracias a Todos Por su ayuda.. "Hoy por mi mañana por ti" |
|
|
|