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 12-08-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Unhappy Ultimo valor por Parámetro

Tengo un detalle, lo que pasa es que quiero que me regrese el ultimo valor de un campo entero con una sentencia SQL, lo que pasa es que por código me marca errores que no encuentra algun campo, siendo que existe fisicamente, ya lo hice por medio de un proc. almacenado el detalle es que tendria UN proc. almac. por cada Tabla y solo quiero aprovechar una utileria por todas las tablas... a continucion dejo el codigo de la sentencia...

Tabla.Active:=false;
Tabla.SelectSQL.Clear;
Tabla.SelectSQL.Add('SELECT Max('+Campo+')+1 FROM '+NombreTabla);

//Me marca error al abrir la tabla, siendo que esta misma sentencia la tengo en el proc. almacenado

Tabla.Active:=true;
if not Tabla.IsEmpty then
result:=Tabla.FieldByName(campo).Value;
Tabla.Active:=false;
Responder Con Cita
  #2  
Antiguo 12-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Red face

Bueno... fijate que hoy olvidé mi varita mágica, y por mas que he intentado concentrarme, no logro ver el mensaje de error que aparece en tu monitor. Quizas la frecuencia de actualización no esté dentro de mis parámetros.

Sería mucha molestia si haces favor de pegar el MENSAJE DE ERROR EXACTO que te aparece, y de ser posible, la CLASE DE LA EXCEPCIÓN que se eleva.

Mil disculpas por la molestia... pero es que hoy mis poderes andan algo bajos.

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
  #3  
Antiguo 14-08-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Ok....

function DameUltimoRegistro(Tabla:tIBDataSet; Campo,NombreTabla:String):String;
var cadena:string;
begin
Tabla.Active:=false;
Tabla.SelectSQL.Clear;
Tabla.SelectSQL.Add('SELECT Max('+Campo+')+1 FROM '+NombreTabla);
Tabla.Active:=true;
if not Tabla.IsEmpty then
result:=Tabla.FieldByName(campo).Value;
Tabla.Active:=false;
end;

**Este es la funcion completa que tengo y el error este... Raised exception Class EDatabaseError with message 'bdCalcIva' :Field 'CalculoIva' No Found. Procees Stoped
Lo raro que el campo que me señala si existe fisicamente, ya agregue los campos al dataset y me marca error en otro campo y asi se la pasa con otros campos, siendo que si existen en la base de datos FireBird 1.5
Responder Con Cita
  #4  
Antiguo 15-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Hola AGAG4.

Has intentado hacer una traza paso a paso de este procedimiento. Estoy casi seguro que la excepción se eleva en la línea

result:=Tabla.FieldByName(campo).Value;

Esto es porque, al hacer un

Código SQL [-]
Select max(campo)
  from tabla

En ninguno de los motores que conozco el campo resultante se llamara "campo". Algunos le pondran Max(campo) otros, expr1, y asi. Estando seguro que es el único campo resultante de la consulta, creo que podes sustituir esa línea librememte por:


result := Tabla.Fields[0].Value;


o bien requerir explicitamente que el resultado se llame de la misma forma que el campo que estas sumarizando.

Código SQL [-]
  Select max(campo) as campo
    from tabla;

Por último, y esperando que el problema quede resuelto, te recomiendo aprender a usar las etiquetas [code], [delphi], [sql] y [php] que se hallan disponibles en los foros, para publicar trozos de código.

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
  #5  
Antiguo 16-08-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Unhappy :(

Ya agregue lo que me dijo:
Tabla.SelectSQL.Add('SELECT Max('+Campo+')+1 as '+Campo+' FROM '+NombreTabla);
pero de todas formas me marca el mismo error cuando activo(abrir) el dataset. No se que es lo que esta pasando siendo que la misma instruccion la hago dentro del IB Expert y si me corre el script.
Responder Con Cita
  #6  
Antiguo 16-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Si estas usando dialecto 3, debes tener cuidado de que Campo esté declarado en mayúsculas en la tabla. Si las has creado visualmente con el IB-Expert, lo mas probable es que hayan quedado registrados con la combinación de mayúsculas y minúsculas usada durante la creación de la tabla.

Para salir de dudas, mejor encerrá el nombre del campo entre comillas dobles, con el case apropiado.

En dialecto 3, no es lo mismo:

Código SQL [-]
Select "campo"
  from tabla;

que

Código SQL [-]
Select "Campo"
  from tabla;

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
  #7  
Antiguo 16-08-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Unhappy ????

Ya lo probe como me dice, pero no me funciona, ya hice una prueba desde el Ib-Expert y alli si me funciona no importa si el campo este en mayusclas y en minusculas. La verdad no se que estará pasando, estoy usando el Dialecto 3, pero lo raro que hago pruebas como lo tengo originalmente y si me funciona. De todas formas Gracias....
Responder Con Cita
  #8  
Antiguo 16-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Lo único que se decirte es que el server de IB se comportará igual (en este aspecto) independientemente del cliente que uses para conectarte, asi que o te estas conectando a una base de datos distinta, o la sentencia SQL no es la misma en IB-Expert que desde tu aplicación.

Son las únicas dos posibilidades que se me ocurren...

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 17-08-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Wink oki

Ya le busque por todas partes, no se si sean los componentes IBX, De todas formas Gracias....!!!!
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 18:21:00.


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