Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error Urgente (https://www.clubdelphi.com/foros/showthread.php?t=76762)

leandro_matiasp 25-11-2011 14:43:51

Error Urgente
 
por favor necesito saber si alguien saber por que me esta sucediendo esto, necesito presentar un trabajo y aun estoy tratando de entender por que
Código Delphi [-]
 if fconexion.qbuscar['nombre']= enombre_usuario.Text then
          begin
            nombre_usuario:=fconexion.qbuscar['nombre'];
            idusuario:=fconexion.qbuscar['idempleados'];

me de un ERror de Edatabase error de field 'nombre' not found, cuando en realidad el campo existe con ese nombre en la tabla en la base de datos. no se si necesitan algo mas. Por favor realmente es urgente sino no lo hubiese puesto asi, perdon el error me de en la primera linea que puse lo otro es un poco mas de codigo.

Casimiro Notevi 25-11-2011 15:19:29

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

oscarac 25-11-2011 15:28:42

que cosa es qbuscar?
un query donde capturas el nombre del usuario?

si es un query podrias hacerlo asi

Código Delphi [-]
  NombreUsuario := fconexion.qbuscarNombre.AsString;

leandro_matiasp 25-11-2011 15:36:23

qbuscar es un componente del tipo TQuery donde se le pasa una sentencia sql para que ejecute

oscarac 25-11-2011 15:41:10

Cita:

Empezado por leandro_matiasp (Mensaje 419473)
qbuscar es un componente del tipo TQuery donde se le pasa una sentencia sql para que ejecute

entonces prueba como te dije si es que en el query estan los campos persistentes o tambien puedes hacerlo asi

Código Delphi [-]
 
NombreUsuario := fconexion.qbuscar.fieldbyname('Nombre').AsString

roman 25-11-2011 16:16:38

Cita:

Empezado por leandro_matiasp (Mensaje 419467)
me de un ERror de Edatabase error de field 'nombre' not found, cuando en realidad el campo existe con ese nombre en la tabla en la base de datos.

Siendo una consulta SQL, que el campo exista en la base de datos no necesariamente implica que exista en tu componente. Asegúrate de que la consulta incluya dicho campo en el SELECT.

¡Ah! Y cuando se termine la urgencia, por favor, lee la guía de estilo ;)

// Saludos

Neftali [Germán.Estévez] 25-11-2011 16:51:39

Para más datos, pon exactamente la consulta que estás utilizando.
Que la consulta incluya el campo nombre, no quiere decir que en el Dataset resultante esa columna se llame nombre necesariamente si no se lo has especificado tú.

roman 25-11-2011 17:07:31

Cita:

Empezado por Neftali (Mensaje 419495)
Que la consulta incluya el campo nombre, no quiere decir que en el Dataset resultante esa columna se llame nombre necesariamente si no se lo has especificado tú.

¡Ah caray! Esto sí me confundió. ¿Cómo puede suceder que difiera el nombre en el dataset a menos que se use un alias en el SELECT?

// Saludos

Neftali [Germán.Estévez] 25-11-2011 17:17:05

Cita:

Empezado por roman (Mensaje 419499)
¡Ah caray! Esto sí me confundió. ¿Cómo puede suceder que difiera el nombre en el dataset a menos que se use un alias en el SELECT?

Tal vez no me expliqué.
Quiero decir, que si no usas ALIAS, puede ser que dependiendo de cómo sea la consulta (por ejemplo si utiliza JOIN), lo que en la tabla es un campo nombre, en el resultado de la consulta no lo sea (por ejemplo si es una JOIN de dos tablas que las dos poseen un campo NOMBRE).

No se si me explico.

AÑADO: Pongo un ejemplillo. Si yo lanzo una consulta como esta:

Código SQL [-]
Select TablaUsuario.*, TBase.* from TablaUsuario 
inner join TBase
on TBase.ID=TablaUsuario.ID

Como las dos tablas poseen el campo ID, en el dataset resultante, el primero llega con el nombre ID y el segundo con el nombre ID_1.

roman 25-11-2011 17:24:34

Mmm. No recuerdo ahora qué hace delphi en esos casos. Si dos campos tienen el mismo nombre (en un join, como dices), ¿qué pasa en el dataset? ¿Se les pone nombre1 y nombre2? ¿Se omite uno de los dos? :confused: Me da la impresión que or lo menos uno quedaría con su nombre original y que no presentaría el error que menciona el compañero. Pero habrá que hacer la prueba...

// Saludos

oscarac 25-11-2011 17:36:57

coloca la cadena o la consulta de qbuscar para salir de dudas

ecfisa 25-11-2011 17:40:57

Hola.

Interesante... no me lo había cuestionado nunca por que siempre nombro el campo ID_NOMBRE_DE_TABLA.

Hice la prueba (con IBQuery y Firebird) y devuelve: ID e ID1, tanto en IBExpert como desde Delphi.

Saludos.

roman 25-11-2011 17:49:01

Cita:

Empezado por ecfisa (Mensaje 419508)
Hola.

Interesante... no me lo había cuestionado nunca por que siempre nombro el campo ID_NOMBRE_DE_TABLA.

Hice la prueba (con IBQuery y Firebird) y devuelve: ID e ID1, tanto en IBExpert como desde Delphi.

Saludos.

Je, je. Yo hacía lo mismo hasta que se me hizo redundante llamar id_cliente a un campo de la tabla cliente :p Qué bueno que hiciste la prueba, ahora ya sabemos :)

// Saludos

Neftali [Germán.Estévez] 25-11-2011 18:07:01

En SQLServer, tienes razón Román, en que mantiene siempre el primero con el nombre original (supongo que para evitar dentro de todo lo posible los errores); En el caso de repetición utiliza el UNDERSCORE; De forma que si el primero es ID, el segundo es ID_1.

Al González 25-11-2011 18:39:37

Cita:

Empezado por roman (Mensaje 419509)
Je, je. Yo hacía lo mismo hasta que se me hizo redundante llamar id_cliente a un campo de la tabla cliente :p

Esto me hizo recordar viejos tiempos, y no tan viejos también. :)

ElDioni 29-11-2011 10:07:45

Solo por dar el dato,

yo utilizo access y cuando uno dos tablas que tienen nombres de campos iguales, si quiero acceder luego a sus valores tengo que poner tabla1.campo o tabla2.campo, así es como me los diferencia.

Saludos.

ASAPLTDA 29-11-2011 23:50:27

Error Urgente
 
Cita:

Empezado por leandro_matiasp (Mensaje 419467)
por favor necesito saber si alguien saber por que me esta sucediendo esto, necesito presentar un trabajo y aun estoy tratando de entender por que
Código Delphi [-]
 if fconexion.qbuscar['nombre']= enombre_usuario.Text then
          begin
            nombre_usuario:=fconexion.qbuscar['nombre'];
            idusuario:=fconexion.qbuscar['idempleados'];

me de un ERror de Edatabase error de field 'nombre' not found, cuando en realidad el campo existe con ese nombre en la tabla en la base de datos. no se si necesitan algo mas. Por favor realmente es urgente sino no lo hubiese puesto asi, perdon el error me de en la primera linea que puse lo otro es un poco mas de codigo.

Revisa que el campo nombre este en minusculas o mayusculas


La franja horaria es GMT +2. Ahora son las 19:02:17.

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