Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-04-2004
Edu Rod Edu Rod is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mexico
Posts: 13
Poder: 0
Edu Rod Va por buen camino
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"
Responder Con Cita
  #2  
Antiguo 07-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #3  
Antiguo 07-04-2004
Edu Rod Edu Rod is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mexico
Posts: 13
Poder: 0
Edu Rod Va por buen camino
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"
Responder Con Cita
  #4  
Antiguo 07-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #5  
Antiguo 07-04-2004
Edu Rod Edu Rod is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mexico
Posts: 13
Poder: 0
Edu Rod Va por buen camino
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"
Responder Con Cita
  #6  
Antiguo 07-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #7  
Antiguo 07-04-2004
Edu Rod Edu Rod is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mexico
Posts: 13
Poder: 0
Edu Rod Va por buen camino
Vistas

Este error lo he tenido siempre, es por eso que no puedo avanzar...el tipo de dato si esta entero en los dos parametros, lo que no tengo es el param type, ahi no se si se ponga algo o no....

Gracias
__________________
Gracias a Todos Por su ayuda..
"Hoy por mi mañana por ti"
Responder Con Cita
  #8  
Antiguo 07-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por Edu Rod
Este error lo he tenido siempre, es por eso que no puedo avanzar...
Este no es el error que indicaste en el primer mensaje

Cita:
Empezado por Edu Rod
pero me da un error de que no encuentra el registro siendo que yo lo revise y si esta ahi.
Aqui pareces indicar que el Query se abre correctamente, pero sin devolver el registro esperado (es decir que no lo encuentra).

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).
Responder Con Cita
  #9  
Antiguo 07-04-2004
Edu Rod Edu Rod is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mexico
Posts: 13
Poder: 0
Edu Rod Va por buen camino
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"
Responder Con Cita
  #10  
Antiguo 14-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por Edu Rod
....
el query de la vista en la sentencia sql tiene:
select * from VW_Contado where idcliente =:z and idauto =:y

....
frmReportes.qryContado.ParamByName('idcliente').AsInteger := z;
frmReportes.qryContado.ParamByName('idauto').AsInteger := y;
....
He cambiado el orden para que tenga sentido... pero es que los parámetros no se llaman "idcliente" e "idauto"... se llaman z e y!!!!

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
Responder Con Cita
  #11  
Antiguo 14-04-2004
Edu Rod Edu Rod is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mexico
Posts: 13
Poder: 0
Edu Rod Va por buen camino
Gracias

Código:
    alert("select * from vw_credito where idcliente =:z and idauto =:y");
    alert("Espero asi se utilice esta etiqueta");
Si me funciono era cosa de los parametros como tu me decias, me salvaste de una y espero publicar bien la etiqueta, Gracias Amigo..
__________________
Gracias a Todos Por su ayuda..
"Hoy por mi mañana por ti"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:31:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi