Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-06-2004
Tio Tio is offline
Miembro
 
Registrado: jun 2003
Ubicación: El Ejido - Almería - España
Posts: 10
Poder: 0
Tio Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 01-06-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
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

Código SQL [-]
select Propietario, Ubicacion, Nota 
from PELICULAS
WHERE ID = :MyID

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

Código Delphi [-]
with Query, Parameters do
begin
  Close;
  ParamByName('MyID').Value:= 1000; //por ejemplo
  Open;
end;

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:

Código Delphi [-]
edPropietario.Text := qPeliDetalle.FieldByName('Propietario').Value;
edubicacion.Text := qpeliDetalle.FieldByName('Ubicacion').Value;
mNota.Lines.Text := qPeliDetalle.FieldByName('nota').value;

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.
Responder Con Cita
  #3  
Antiguo 01-06-2004
Tio Tio is offline
Miembro
 
Registrado: jun 2003
Ubicación: El Ejido - Almería - España
Posts: 10
Poder: 0
Tio Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 01-06-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
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...
Responder Con Cita
  #5  
Antiguo 02-06-2004
Tio Tio is offline
Miembro
 
Registrado: jun 2003
Ubicación: El Ejido - Almería - España
Posts: 10
Poder: 0
Tio Va por buen camino
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.
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 05:49:20.


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