FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema parametros TAdoQuery
Utilizo delphi7, y tengo un problema de lo mas extraño desde que me he
pasado a SQL Server, con interbase no me sucedía. Al grano: Realizo una query para traer unos campos de una tabla de la base de datos, esta es la query: select Propietario, Ubicacion, Nota from PELICULAS WHERE ID = :MyID La consulta funciona bien, lo he comprobado, pero cuando quiero ver el único registro que me ha devuelto hago lo siguiente: edPropietario.Text := qPeliDetalle.Parameters.parambyname('Propietario').Value; edubicacion.Text := qpeliDetalle.Parameters.parambyname('Ubicacion').Value; mNota.Lines.Text := qPeliDetalle.Parameters.parambyname('nota').value; Y me dice que El campo pripietario no existe, asi como los otros 2, ¿que sucede?. He pinchado botón derecho sobre el query, y agregado todos los campos y si que aparecen en Fields, ..... ¿alguna idea?. Por cierto, el query es un TAdoQuery. |
#2
|
||||
|
||||
Buenas
Vamos a ver, si te he entendido bien (disculpa si no es así) tienes una pequeña confusión con dos funciones relacionadas con los query. Una es la función ParamByName que forma parte de la coleción Parameters del ADOQuery. La otra es la función FieldByName que se encuentra en la clase TDataSet. Si tu tienes una select del tipo
significa que que tienes un parámetro variable MyID que debe instanciarse durante la ejecución del programa. Como supongo que ya sabes, debes instanciarlo con un código del tipo
Ahora bien si lo que quieres es recuperar el valor de un campo mediante su nombre debes utilizar la otra función que mencionaba al principio, FieldByName. El código que tu quieres sería algo como:
Como ves el error que te salta es normal, dado que el único parámetro que existe en tu query es MyID. Lo otro son los campos resultantes. Espero haber entendido tu problema y haber sido de ayuda. Un saludo! Última edición por __marcsc fecha: 01-06-2004 a las 23:00:49. |
#3
|
|||
|
|||
Sigo con el problema.
¡Hola!
Muchas gracias por tu mensaje, es muy claro, pero no se que me sucede que no me va..... He corregido como tu dices, pongo mySTR := dmDatos.qPeliDetalle.fieldbyName('Propietario').Value; y me da error de "Acces violation".... El dmDatos está creado, y tengo unos storeProc en él que funcionan bien, uso delphi 7. ¿alguna otra idea?... No se que puede ser, creo que es cosa de los componentes TAdo |
#4
|
||||
|
||||
Hola de nuevo,
seguro que te devuelve registros el Query? Quizás el campo al que intentas acceder tiene algún evento asociado que hace que se vuelve loco? Has probado a usar .AsString, o .AsInteger (según el tipo) en lugar de .Value? Recuerda que Value, al ser usado desde TField, que es lo que devuelve FieldByName, devuelve un tipo Variant. No sé qué más decirte... |
#5
|
|||
|
|||
Hola!
Muchas gracias por tu ayuda y comentarios, la verdad es que loco de no saber que podía ser cambién un poco el planteamiento, cree nuevo formulario y en dicho formulario realicé la consulta y ahora si que va, no tengo ni la mejor idea de que puede haber sido, pero anoche me acosté con un tremendo dolor de cabeza. Mil gracias por tu paciencia!,,, un saludo, nos leemos. |
|
|
|