![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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 |
|
#2
|
||||
|
||||
|
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
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.
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 |
|
#3
|
||||
|
||||
|
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. |
|
#4
|
||||
|
||||
|
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:
que
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#5
|
||||
|
||||
|
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....
|
|
#6
|
||||
|
||||
|
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 |
|
#7
|
||||
|
||||
|
Ya le busque por todas partes, no se si sean los componentes IBX, De todas formas Gracias....!!!!
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|