Recordset . acceder a campos mimso nombre

24/05/2005 - 20:52 por Icaro320d | Informe spam
Me gustaría saber como puedo acceder en un recordset ADO a dos campos de una
base de datos que se llaman igual, están en tablas diferentes evidentemente.
La conexión es a SQL Server. Alguno me direis que no debería haber diseñado
asi la base de datos, lo se, pero no la he hecho yo. Un saludo y gracias.

Preguntas similare

Leer las respuestas

#1 Manuel Vera
24/05/2005 - 21:08 | Informe spam
Creo que la consulta SELECT te debe dar error en el recordset si haces algo
como:
select t1.nombre, t2.nombre
from t1 join t2 on t1.id1=t2.id2

Si no te da error, entonces el motor (ADO?) se encarga de asignarle un
nombre distinto que puede ser:
FIELD1, EXPRE2 o que se yo.
Si tu tienes acceso a crear la consulta puedes evitar eso haciendo algo
como:
select t1.nombre AS A, t2.nombre AS B
from t1 join t2 on t1.id1=t2.id2
o
select A=t1.nombre, B=t2.nombre
from t1 join t2 on t1.id1=t2.id2
o
simplemente abriendo el recordset sin errores puedes referirte a la columna
por su posicion:
RS.open(SQL)
nomA = rs(0)
nomB=rs(1)

Salu2
MV

"Icaro320d" wrote in message
news:
Me gustaría saber como puedo acceder en un recordset ADO a dos campos de


una
base de datos que se llaman igual, están en tablas diferentes


evidentemente.
La conexión es a SQL Server. Alguno me direis que no debería haber


diseñado
asi la base de datos, lo se, pero no la he hecho yo. Un saludo y gracias.
Respuesta Responder a este mensaje
#2 Manuel Vera
24/05/2005 - 21:12 | Informe spam
Es decir, que en el recordset puedo escribir algo como:
nomA = rs("t1.nombre")
nomB = rs("t2.nombre")
???

MV
Respuesta Responder a este mensaje
#3 Icaro320d
24/05/2005 - 21:24 | Informe spam
Ya había probado la sintaxis nombre_de_tabla.nombre_de_campo y no funciona,
me da error, la opción del "as" tambien la había pensado, pero son muchos
campos y yo muy vago así que *. Una vez extraido el recorset parece que no
hay manera de distinguir de que tabla viene cada valor. Me parece que me
quedaré con la opción de llamarlo por su número, aunque tendré que hacer
pruebas hasta que lo encuentre.
"Manuel Vera" escribió:

Creo que la consulta SELECT te debe dar error en el recordset si haces algo
como:
select t1.nombre, t2.nombre
from t1 join t2 on t1.id1=t2.id2

Si no te da error, entonces el motor (ADO?) se encarga de asignarle un
nombre distinto que puede ser:
FIELD1, EXPRE2 o que se yo.
Si tu tienes acceso a crear la consulta puedes evitar eso haciendo algo
como:
select t1.nombre AS A, t2.nombre AS B
from t1 join t2 on t1.id1=t2.id2
o
select A=t1.nombre, B=t2.nombre
from t1 join t2 on t1.id1=t2.id2
o
simplemente abriendo el recordset sin errores puedes referirte a la columna
por su posicion:
RS.open(SQL)
nomA = rs(0)
nomB=rs(1)

Salu2
MV

"Icaro320d" wrote in message
news:
> Me gustaría saber como puedo acceder en un recordset ADO a dos campos de
una
> base de datos que se llaman igual, están en tablas diferentes
evidentemente.
> La conexión es a SQL Server. Alguno me direis que no debería haber
diseñado
> asi la base de datos, lo se, pero no la he hecho yo. Un saludo y gracias.



Respuesta Responder a este mensaje
#4 Matias Iacono
24/05/2005 - 23:59 | Informe spam
Generalmente, cuando son palabras reservadas, se colocan los nombres entre
[].

En tu caso, no se como estas sacando los datos para que los dos se llamen
iguales y la consulta no te genere error.

En esos casos, siempre el nombre del campo esta presedido por el nombre de
la tabla a la que pertenece, y puedes accederlo de la misma forma.

Por ejemplo:

Tabla1.Campo1

Tabla2.Campo2

Saludos,

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3

Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
"Icaro320d" escribió en el mensaje
news:
Me gustaría saber como puedo acceder en un recordset ADO a dos campos de
una
base de datos que se llaman igual, están en tablas diferentes
evidentemente.
La conexión es a SQL Server. Alguno me direis que no debería haber
diseñado
asi la base de datos, lo se, pero no la he hecho yo. Un saludo y gracias.
Respuesta Responder a este mensaje
#5 Matias Iacono
25/05/2005 - 00:16 | Informe spam
Pues no lo probe con un recordset especificamente.

De cualquier manera, si usa SQL Server, podria usar la clausula AS para
cambiarle de nombre.

Con la explicacion anterior solo trataba de entender donde estaba la falla.

Saludos,

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3

Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
"Manuel Vera" escribió en el mensaje
news:
Es decir, que en el recordset puedo escribir algo como:
nomA = rs("t1.nombre")
nomB = rs("t2.nombre")
???

MV


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida