Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] El nombre de columna 'almacen' es ambiguo. -2147217900

Estas en el tema de El nombre de columna 'almacen' es ambiguo. -2147217900 en el foro de Mysql en Foros del Web. Hola que tal buenas tardes, estoy realizando un reporte pero sale el siguiente error El nombre de columna 'almacen' es ambiguo. -2147217900 este es mi ...
  #1 (permalink)  
Antiguo 28/12/2011, 18:57
 
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 12 años, 3 meses
Puntos: 0
El nombre de columna 'almacen' es ambiguo. -2147217900

Hola que tal buenas tardes, estoy realizando un reporte pero sale el siguiente error
El nombre de columna 'almacen' es ambiguo. -2147217900

este es mi codigo

Sub Main()

' Colocamos los datos del rango
ParamData.ParametrosRequeridos "Articulos", "Artículo inicial", "Articulos", "Artículo final"
ParamData.Check = True
ParamData.CheckValue = True
ParamData.CheckLeyend = "Solo con existencia"

' Mostramos la ventana de rangos
Rangos Ambiente, False

' Si se presiono el boton cancelado detenemos la operación
if Cancelado Then
Exit Sub
end if

nAlmacen = 0
nAlmacen = InputBox( "Almacén: ", "Almacén", 0 )

If nAlmacen = 0 Then
Exit Sub
End If

Reporte.Titulo = "Existencia por artículo del almacén: " & nAlmacen

cCondicion = ""

if Not ParamData.Todos1 Then
cCondicion = cCondicion & " AND prods.articulo >= '" & ParamData.BusquedaIni & "' AND prods.articulo <= '" & ParamData.busquedaFin & "'"
Reporte.Titulo2 = "Articulos entre el siguiente rango " & Trim(ParamData.BusquedaIni) & " - " & Trim(ParamData.BusquedaFin)
End if

if ParamData.CheckValue Then
Reporte.Titulo2 = Reporte.Titulo2 & " (Solo artículos con existencia)"
cCondicion = " AND existenciaalmacen.existencia > 0 "
end if


IniciaDocumento()
strSQL = ""
strSQL = strSQL & "SELECT "
strSQL = strSQL & "prods.articulo, "
strSQL = strSQL & "prods.descrip, "
strSQL = strSQL & "prods.existencia, "
strSQL = strSQL & "SUM( pedpar.cantidad ) AS apartado "

strSQL = strSQL & "FROM prods INNER JOIN existenciaalmacen ON prods.articulo = existenciaalmacen.articulo " & _
"INNER JOIN pedpar ON pedpar.articulo = prods.articulo "

strSQL = strSQL & "WHERE prods.articulo <> 'SYS' AND almacen = " & nAlmacen
strSQL = strSQL & cCondicion
strSQL = strSQL & "ORDER BY prods.articulo "

Reporte.SQL = strSQL
Reporte.RetrieveColumns

Reporte.Columns("articulo").Titulo = "ARTICULO"

Reporte.Columns("Descrip").Titulo = "DESCRIPCION"
Reporte.Columns("Descrip").Ancho = 25

Reporte.Columns("existencia").Titulo = "Existencia"
Reporte.Columns("existencia").Formato = Ambiente.FDinero
Reporte.Columns("existencia").Font = "Terminal"
Reporte.Columns("existencia").FontSize = 7
Reporte.Columns("existencia").Ancho = 9
Reporte.Columns("existencia").AnchoCelda = 8
Reporte.Columns("existencia").AnchoTitulo = 13
Reporte.Columns("existencia").Align = 1



Reporte.ImprimeReporte
FinDocumento()
End Sub
  #2 (permalink)  
Antiguo 28/12/2011, 20:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: El nombre de columna 'almacen' es ambiguo. -2147217900

Es un posible error de diseño de las tablas (se infiere): Tanto prods como existenciaalmacen poseen una columna denominada "almacén", y tu la estás invocando en el WHERE sin determinar de qué tabla la tiene que tomar.
Una de las cosas que no se entienden es por qué existe una columna "almacén" en la tabla prods, que sólo debería tener la denominación y otros detalles propios de los artículos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/04/2012, 17:21
 
Fecha de Ingreso: abril-2012
Mensajes: 1
Antigüedad: 12 años
Puntos: 0
Respuesta: El nombre de columna 'almacen' es ambiguo. -2147217900

De acuerdo a lo que escribes en el foro, parece ser que en la tabla "EXISTENCIAALMACEN" tienes una columna que se llama "ALMACEN", si es asi, la solucion es que en la siguiente linea, debe de quedar como sigue:

strSQL = strSQL & "WHERE prods.articulo <> 'SYS' AND existenciaalmacen.almacen = " & nAlmacen

espero que te sirva mi humilde comentario.

salu2

Etiquetas: ambiguo, columna, join, nombre, select, sql, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:55.