Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-10-2017
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
Argumentos incorrectos fuera del intervalo permitido o en conflicto con otros

Buen día, me arroja este error en c++ builder cuando intento hacer un consulta a la Base de datos (Maria DB) con esta francción de código

Código:
DM->ADOQuery->Close();
DM->ADOQuery->SQL->Clear();
DM->ADOQuery->SQL->Add("call loadPaciente(:cadena, 'Paciente_Identificador')" );      
DM->ADOQuery->Parameters->ParamByName("cadena")->Value = Clave;
DM->ADOQuery->Prepared;
DM->ADOQuery->Open();
Anteriormente estaba intentando realizar esta consulta sin el procedimiento almacenado pero me arroja el mismo error.
He visto otros hilos con este tema pero ningun ha sido de ayuda
De antemano muchas gracias
Responder Con Cita
  #2  
Antiguo 12-10-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pon la definición del procedimiento almacenado para que podamos examinar qué pasa.

LineComment Saludos
Responder Con Cita
  #3  
Antiguo 12-10-2017
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
Aqui esta el procedimiento almacenado

Código SQL [-]
Delimiter $$
Drop procedure if exists loadPaciente;
create procedure loadPaciente (cadena varchar(70), filtro varchar(25))
BEGIN
  select cl00_Identificador, cl00_Nombre, cl00_ApellidoPaterno, TIMESTAMPDIFF(year, cl00_FechaNacimiento, CURDATE()), cl00_Telefono, cl00_Celular
  from cl00
  WHERE filtro like CONCAT('%', cadena, '%')
  ORDER BY filtro;
END $$

Filtro = nombre de la columna que debe consultar
cadena = texto para hacer el filtro

Última edición por roman fecha: 12-10-2017 a las 18:54:39. Razón: Corregir la etiqueta SQL
Responder Con Cita
  #4  
Antiguo 12-10-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por arturoio Ver Mensaje
Anteriormente estaba intentando realizar esta consulta sin el procedimiento almacenado pero me arroja el mismo error.
¡Ah! Disculpa, no había visto esta parte. O sea que el error no está en la llamada al procedimiento. ¿Podrías poner el código que usabas antes de hacerlo con un procedimiento?

LineComment Saludos
Responder Con Cita
  #5  
Antiguo 12-10-2017
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
Código:
DM->ADOQuery->Close();
DM->ADOQuery->SQL->Clear();
DM->ADOQuery->SQL->Add( "SELECT cl00_Identificador, cl00_Nombre, cl00_ApellidoPaterno,"
                        "TIMESTAMPDIFF(year, cl00_FechaNacimiento, CURDATE()),"
                        "cl00_Telefono, cl00_Celular FROM cl00 ");
//Lo agrego en lineas diferentes porque aqui se toma una desición con un SWITCH para saber cual tabla va a consultar
DM->ADOQuery->SQL->Add("WHERE cl00_Identificador like :cadena "
                                "ORDER BY cl00_Identificador;" );

DM->ADOQuery->Parameters->ParamByName("cadena")->Value = Clave + '%';
DM->ADOQuery->Prepared;
DM->ADOQuery->Open();
Este código me arrojaba el mismo error. Por eso había intentado con un SP porque creí que me solucionaria el problema
Saludos
Responder Con Cita
  #6  
Antiguo 12-10-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Qué pasa si antes de asignar valor al parámetro pones:

Código:
DM->ADOQuery->Parameters->ParamByName("cadena")->DataType = ftString;
?

LineComment Saludos
Responder Con Cita
  #7  
Antiguo 12-10-2017
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
Cita:
Empezado por roman Ver Mensaje
¿Qué pasa si antes de asignar valor al parámetro pones:

Código:
DM->ADOQuery->Parameters->ParamByName("cadena")->DataType = ftString;
?

LineComment Saludos

Sigue mostrando el mismo error.

Roman eh encontrado el error aunque no se como solucionarlo.

Hice una prueba de la siguiente forma:

Código:
 DM->ADOQuery->SQL->Add("call loadPaciente( 'ma' , 'cl00_ApellidoPaterno') " );
En esta ocación en lugar de tener el parametro ":cadena", lo sustitui por el cadena tal cual y funciono. Asi que el problema es que no logro que el parametro ":cadena" me tome las comillas simples para enviarlas al SP
Responder Con Cita
  #8  
Antiguo 12-10-2017
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
Solucion

Ya pude solucionar el problema.
Hice uso del componente ADOStoredProcedures
El cual me permite enviar los parametros de la siguiente forma:

Código:
DM->ADOStoredProcedure->Parameters->ParamByName("cadena")->Value = filtro;
DM->ADOStoredProcedure->Parameters->ParamByName("filtro")->Value = "Paciente_ApellidoPaterno";
filtro = Es el primer parametro de mi SP
"cadena" = nombre del parametro en el SP
"filtro" = nombre del segundo parametro en el SP

Muchas gracias por tu apoyo Roman
Saludos
Responder Con Cita
  #9  
Antiguo 13-10-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por arturoio Ver Mensaje
Muchas gracias por tu apoyo Roman
Pues, literalmente, no hay de qué Estuve tentado a a mencionar el componente que ahora usas pero, aunque es el más adecuado, en teoría de la otra forma debía servir. Y habría que ver porqué la consulta directa sin el procedimiento almacenado no funcionaba. Pero lo bueno es que ya lo has solucionado.

LineComment Saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mikropascal , La asignación a la variable de bucle no está permitido gaston260 ASM y Microcontroladores 3 02-11-2010 03:04:53
1. Aún no tienes permitido poner enlaces ni imágenes ESarger La Taberna 5 25-03-2010 23:10:59
Instalar BDE manualmente ¿esta permitido?, ¿es legal? Wonni Varios 2 03-08-2006 00:25:23
Udf y argumentos rastafarey Firebird e Interbase 2 29-07-2005 22:12:44


La franja horaria es GMT +2. Ahora son las 12:27:30.


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