Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/08/2011, 06:55
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Problemas para calcular valor medio con MySQL

Tienes mal escrita la consulta.
Si copio literalmente lo que pones sería:
Código MySQL:
Ver original
  1.     AVG(general_precio)
  2.     tabla_general
  3.     general_maid= '" & valormarcaid & "AND
  4.    general_moid= " & valormodeloid & "'
Por lo que si remplazo valormarcaid y valormodeloid por "1! y "2", por ejemplo, la consulta quedaría:
Código MySQL:
Ver original
  1.     AVG(general_precio)
  2.     tabla_general
  3.     general_maid= '1AND general_moid= 2'
Como puedes ver, en realidad estás comparando general_maid con la cadena "1AND general_moid= 2", lo que puede estar dandote cuálquier resultado, e incluso ninguno.

Consejos:
- Si son valores numéricos, no los pongas entre apóstrofes ('), no lo necesitan y reducen la performance.
- Si son valores de cadena, sí necesitan apóstrofes.
- Respeta los espacios entre los valores y las cláusulas, o generarás errores de sintáxis o de lógica, sin darte cuenta.
- Trata de usar sentencias parametrizadas. Tienden a generar menos errores y permiten escribir las sentencias SQL con más claridad.
- Usa alias para los campos cuando utilizas funciones. Evitarás nombres de columna que te pueden causar problemas.

La cosa podría ser mas o menos:
Código vb:
Ver original
  1. formPrincipal.conexda = New MySqlDataAdapter("SELECT AVG(general_precio) media_precio FROM tabla_general WHERE general_maid = " & valormarcaid & " AND general_moid= " & valormodeloid, formPrincipal.conexionbd)
  2. formPrincipal.conexdt = New DataTable()
  3. formPrincipal.conexda.Fill(formPrincipal.conexdt)
  4.  
  5. MsgBox(formPrincipal.conexdt.Rows(0)("media_precio"))
  6.  
  7. If (IsDBNull(formPrincipal.conexdt.Rows(0)("media_precio"))) Then
  8.     lbmedia.Text = "No hay vehículos insertados."
  9. Else
  10.     varMedia = formPrincipal.conexdt.Rows(0)("media_precio")
  11.     lbmedia.Text = "El precio medio del modelo " & cbmodelof.Text & " de " & cbmarcaf.Text & " es de " & varMedia & " €."
  12. End If
Prueba y veamos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)