Ver Mensaje Individual
  #6  
Antiguo 18-06-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Creo haber encontrado el error, pero no borro todo el mensaje que ya había escrito:
Código Delphi [-]
if q_agentes.RecordCount>0 then
nom_agente:=q_agentes['nombre']
else
nom_agente:='NULL'
ojito con los nulos que la sintaxis en sql es distinto a cualquier otro valor, ejemplo correcto:
Código SQL [-]
select * from tabla where Micampo is null

Ejemplo incorrecto (dará fallo en ejecución):
Código SQL [-]
select * from tabla where Micampo = null


... y ahora el resto del mensaje:

Lo primero que veo es eso del if copy (..... ) <> '00' ¿seguro que la consulta va a tener registros que cumpla esa condición siempre ?

if q_parfac.RecordCount>0 then sustitúyelo por if not q_parfac.IsEmpty then
El recordCount puede no estar implementado según el motor de bases de datos y devolver cero o menos uno "-1" pero no el valor correcto.

En cuanto al fallo de parámetros, normal, lo primero es que no tienes parámetros en tus sqls, los parámetros se definen dentro del sql, por ejemplo:

Código Delphi [-]
   query1.sql.text := 'select nombre from tabla where nombre = :MiNombre';
  query1.parambyname('MiNombre').AsString:= 'lo que sea y del tipo que sea';
  query1.open;
Pero tú no usas nada de eso, es lógico que el debugger te diga que los parámetros están vacíos.

tus sqls son dinámicas y no tienen parámetros. De hecho, se inventaron los parámetros para no montar el lío ese de "QuotedStr(TRIM("

Es muy probable que el error venga por el valor de algún campo involucrado en el where de esas consultas.

El que no aparezca en el debugger puede ser tan simple como por ejemplo, no mostrarlo por optimización.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita