Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-03-2023
genyus00 genyus00 is offline
Miembro
 
Registrado: jun 2010
Posts: 31
Poder: 0
genyus00 Va por buen camino
Llegue a este tema dado que actualmente se me ha presentado el caso, pero bueno ya han pasado de esto vario añitos, y con ellos varias versiones de Delphi- Hoy en dia voy en Delphi Alexandria y las conexiones comunes o son con los Zeos o con Firedac, en todo caso el error es el mismo "Invalid parameter." sin mas informacion al respecto. en mi caso me tomo tiempo hasta que empece a probar cada uno de los campos que recupero en mi consulta, pues tengo campo que reemplazo por ser de un origen diferente al de mi base de datos. estos campo son de tipo texto y los reemplazao haciendole quotedstr(valor):

Código Delphi [-]
sSQL := 'SELECT (DT.IDENTIFICACION) AS "3_BEN_Numero identificacion",'+
'   (DT.APELLIDO1) AS "3_BEN_Primer apellido",'+
'   (DT.APELLIDO2) AS "3_BEN_Segundo Apellido",'+
'   (:nombre) AS "3_BEN_NombredeArrendador",'+
'   (:telefono) AS "3_BEN_TelefonoArrendador",'+
' FROM referencias_solicitud'+
'  WHERE SC.NUMPAG = 848701';

los parametros nombre y telefono los reemplazo con una funcion personal de nombre "cambiaen":

Código Delphi [-]
      sSQL := CambiaEn(sSQL,':nombre',quotedstr(strnomAfiliado));
      sSQL := CambiaEn(sSQL,':telefono',quotedstr(strtelfiliado));

cuando los parametros tiene infomacion se asigna la sql como :

Código Delphi [-]
   (''JOSE'') AS "3_BEN_NombredeArrendador",
   (''123455'') AS "3_BEN_TelefonoArrendador",

pero si el dato viene vacio al hacer el cambiaen queda:

Código Delphi [-]
   ('''') AS "3_BEN_NombredeArrendador",
   ('''') AS "3_BEN_TelefonoArrendador",

y aca nacio en mi caso el error "Invalid parameter." , la solucion fue que cuando la variable sea vacia, reemplazarla por un espacio de modo la sql quede como;

Código Delphi [-]
   ('' '') AS "3_BEN_NombredeArrendador",
   ('' '') AS "3_BEN_TelefonoArrendador",

Bueno, espero les sirva este analisis del caso que me trajo hasta esta link.

Última edición por Casimiro Noteví fecha: 27-03-2023 a las 12:29:16.
Responder Con Cita
  #2  
Antiguo 28-03-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
El problema es que cualquier parte de una SQL NO PUEDE ser un parámetro.
Es decir, puedes hacer esto:

Código SQL [-]
SELECT * FROM TABLA WHERE (NOMBRE=:Nombre)

Pero no puedes hacer esto:

Código SQL [-]
SELECT CAMPO1, CAMPO2, :OtroCampo FROM TABLA

Creo que lo que estás haciendo tú es lo segundo y no está permitido.

En este último caso, como en el tuyo, debes crear la SQL concatenando valores.

Código Delphi [-]
sSQL := 'SELECT CAMPO1, CAMPO2, ' + strNombreCampo + ' FROM TABLA';
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 11:39:21.


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