Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-01-2011
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Red face Consultas con párametros

Hola a tod@s:


la situación que se me presenta en el día de hoy es la siguiente:

Estoy haciendo mantenimiento a una aplicación desarrollada utilizando delphi 6 y que emplea BDE, en orden de ideas el mantenimiento me lleva a aplicar la utilización de consultas con parámetros; hasta ahí no hay nada nuevo ni que lamentar, tan solo lo siguiente:

debe utilizar parámetros dentro de una instrucción In del SQL, el código es el siguiente:

Código Delphi [-]
  QTarifas_local:= CrearConsulta;
  QTarifas_local.OnCalcFields:= QTarifas_localCalcFields;
  Qtarifas_local.SQL.Text:= ' SELECT Tarifas.Zona, Tarifas.CodigoTipoServicio, Tarifas.Estrato '+
                            ' FROM  Tarifas ' +
                            ' Where CodigoAno =CodigoAno '+
                            ' And CodigoPeriodoPago =CodigoPeriodo ' +
                            ' And CodigoTipoServicio =CodigoTipoServicio'+
                            ' And Zona =Zona ' +
                            ' And Tarifas.CodigoServicio in (CodigoServicio)' +
                            ' GROUP BY Tarifas.Zona, Tarifas.CodigoTipoServicio, Tarifas.CodigoServicio, Tarifas.Estrato ';

ahora sigo como la alimento

Código Delphi [-]
    with QTarifas_local do
      begin
        Close;
        ParamByName('pCodigoAno').AsInteger:= StrToInt(Self.edtTarifaAno.Text);
        ParamByName('pCodigoPeriodo').AsInteger:= Self.dblkcbbCodigoPeriodoPago.KeyValue;
        ParamByName('pCodigoTipoServicio').AsInteger:= Self.dblkcbbCodigoTipoServicio.KeyValue;
        ParamByName('pZona').AsInteger:= Self.dblkcbbZona.KeyValue;
        ParamByName('pCodigoServicio').AsString := '4,5';
        try
         Open;
        except on e: Exception do
          ShowMessage(e.Message);
        end;
      end;

y al ejecutarlo obtengo el siguiente mensaje de error

General SQL error
Data Type mismatch in criteria expression.


En un principio pense que habia algun error en la forma en la que estaba escrita la consulta y la probe por fuera dgitado la sentencia de SQL y corriendola; a continuación elimine cada parámetro encontrando que el error provenía del parámtero en string.

Entonces la pregunta es como puedo ingresar este tipo de parámteros en la consulta ?



Agradezco de antameno la colaboración que me puedan prrestar



gertorresm
Colombia
Responder Con Cita
  #2  
Antiguo 08-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No entiendo la parte de Self.dblkcbbCodigoPeriodoPago.KeyValue
Pero intenta asi:
Código Delphi [-]
with QTarifas_local do
      begin
        Close;
        ParamByName('pCodigoAno').Value:= StrToInt(Self.edtTarifaAno.Text);
        ParamByName('pCodigoPeriodo').Value:= Self.dblkcbbCodigoPeriodoPago.KeyValue;
        ParamByName('pCodigoTipoServicio').Value:= Self.dblkcbbCodigoTipoServicio.KeyValue;
        ParamByName('pZona').Value:= Self.dblkcbbZona.KeyValue;
        ParamByName('pCodigoServicio').Value:= '4,5';
        try
         Open;
        except on e: Exception do
          ShowMessage(e.Message);
        end;
      end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 08-01-2011
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Exclamation Parámetro de la consultas

Carnal:


Gracias por tu tiempo, intente en la forma en la que me dices, pero sigue enviándome el mismo error, y con referencia a tu comentario "No entiendo la parte de Self.dblkcbbCodigoPeriodoPago.KeyValue" hace referencia a un parámetro que ingresa por un DBLookComboBox.


Gracias de antemano


gertorresm
Colombia
Responder Con Cita
  #4  
Antiguo 08-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
As intentado correr el programa con f7 o f8 ?.
Ahi te dira la linea exacta donde esta el problema.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 08-01-2011
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Cool Otra Forma de Hacerlo

Gracias a to@as y es especial a Caral

Verificando en otros foros encontre una serie de contenidos que me permite plantear lo siguiente:


Código Delphi [-]
  QTarifas_local:= CrearConsulta;
  QTarifas_local.OnCalcFields:= QTarifas_localCalcFields;
  TextoQTarifas:= ' SELECT Tarifas.Zona, Tarifas.CodigoTipoServicio, Tarifas.Estrato '+
                  ' FROM  Tarifas ' +
                  ' Where CodigoAno =:pCodigoAno '+
                  ' And CodigoPeriodoPago =:pCodigoPeriodo ' +
                  ' And CodigoTipoServicio =:pCodigoTipoServicio'+
                  ' And Zona =:pZona ' +
                  ' And Tarifas.CodigoServicio in (%s)' +
                  ' GROUP BY Tarifas.Zona, Tarifas.CodigoTipoServicio, Tarifas.CodigoServicio, Tarifas.Estrato ';

y ejecutar las cosas de la siguiente forma

Código Delphi [-]
    with QTarifas_local do
      begin
        Close;
        SQL.Text:= (Format(TextoQTarifas, ['4,5,6,7']));
        ParamByName('pCodigoAno').AsInteger:= StrToInt(Self.edtTarifaAno.Text);
        ParamByName('pCodigoPeriodo').AsInteger:= Self.dblkcbbCodigoPeriodoPago.KeyValue;
        ParamByName('pCodigoTipoServicio').AsInteger:= Self.dblkcbbCodigoTipoServicio.KeyValue;
        ParamByName('pZona').AsInteger:= Self.dblkcbbZona.KeyValue;
      end;

Ahora bien se había podido reemplazar la totalidad de los parámetros por %s, pero lo deje para poder comprobar que efectivamente el error sucedía cuando se intentaba ingresar mediante parámetros un string


gracías de antemano


gertorresm
Colombia
Responder Con Cita
  #6  
Antiguo 08-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se si lo pudiste solucionar o te queda alguna duda ?.
Saludos
__________________
Siempre Novato
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Adicionar parámetros en consultas creadas por código GerTorresM OOP 3 02-08-2010 02:01:16
Automatizar seteo de parámetros para consultas rochi Conexión con bases de datos 2 11-10-2008 18:37:29
Consultas SQL V.S. Consultas Clipper AGAG4 SQL 7 20-12-2005 15:59:31
consultas con y sin parámetros. fjardelphi Conexión con bases de datos 4 06-05-2005 22:49:15
Parametros en consultas Walterdf Conexión con bases de datos 2 09-03-2005 21:31:30


La franja horaria es GMT +2. Ahora son las 00:41:05.


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