Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Operaciones con Datagrid

Estas en el tema de Operaciones con Datagrid en el foro de Visual Basic clásico en Foros del Web. Me estoy rompiendo la cabeza buscando formás pero aun no encuentro la mejor forma de trabajar conversiones dentro de un datagrid el problema es el ...
  #1 (permalink)  
Antiguo 03/12/2009, 23:19
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años
Puntos: 0
Operaciones con Datagrid

Me estoy rompiendo la cabeza buscando formás pero aun no encuentro la mejor forma de trabajar conversiones dentro de un datagrid el problema es el siguiente:

hago un query a una DB en donde visualizo las siguientes columnas ( Empresa, Precio, Presentación ), hasta aqui todo marcha bien. Pero el caso es que tengo que definir de preferencia en otra columna (nueva) el valor minimo por kg. Teniendo en cuenta que existen diferentes presentaciones (kg, arroba,tn,etc..). Ejemplo

Empresa | Precio | Presentacion
empresa1 | 10 | saco20
empresa2 | 1.2 | kg
empresa1 | 1.4 | kg
empresa3 | 150 | tn

Entonces nose como hacer de tal forma que en otra columana salga el precio / kg ( el saco20 es saco de 20 kg). ( Esto para el load, osea el problema )

y la otra función es que en otro boton me diga en un msgbox cual es del minimo costo / kg.

Espero alguien me pueda iluminar.. gracias de antemano
  #2 (permalink)  
Antiguo 05/12/2009, 04:57
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Operaciones con Datagrid

Parece un poco complicado, ya que tendrías que asegurarte de conocer todos los modos de presentación y que formatos puedes encontrar para lo mismo: kg => kg. => kilo

De todos modos intentaré aportar alguna idea:

Como no controlo el datagrid te dejo a ti su manejo.

Código :
Ver original
  1. Funcion preciokilo (precio As String, presentacion As String) As String
  2.  
  3.     ' si es precio por saco
  4.   If InStr(1, UCase$(presentacion), "SACO") Then
  5.     preciokilo = precio/ Replace(UCase$(presentacion), "SACO", "")
  6.  
  7.     ' si es precio por kilo
  8.   ElseIf InStr(1, UCase$(presentacion), "KG.") Then
  9.     preciokilo = precio
  10.   ElseIf InStr(1, UCase$(presentacion), "KG") Then
  11.     preciokilo = precio
  12.     ' si quiero poder usar "kg" y "kg." tengo que comprobar
  13.     ' si es "kg." con punto antes que mirar si es "kg" sin punto.
  14.  
  15.     ' si es precio por tonelada
  16.   ElseIf InStr(1, UCase$(presentacion), "TN.") Then
  17.     preciokilo = precio / 1000
  18.   ElseIf InStr(1, UCase$(presentacion), "TN") Then
  19.     preciokilo = precio / 1000
  20.  
  21.   Else
  22.     ' si es precio por unidad, caja o lo que sea
  23.     ' puedes ponerlo sin mas
  24.     preciokilo = precio
  25.  
  26.     ' o avisar que no se conoce
  27.     ' el tipo de presentación
  28.     'msgbox "error en presentacion"
  29.    
  30.   End If
  31.  
  32. End Function
Es el modo más básico de ver el asunto y con tu ejemplo funcionaría bien.

Suerte.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 05/12/2009, 10:40
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Operaciones con Datagrid

Hola, yo creo que con tener una tabla con todos los modos de presentación y despues que a cada empresa le asignes uno de estos modos,ya estaria solucionado.despues haces las relaciones en las tablas y te trae todo la consulta sin tener que estar calculando nada.

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #4 (permalink)  
Antiguo 05/12/2009, 21:28
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años
Puntos: 0
Respuesta: Operaciones con Datagrid

Muchas gracias por su colaboración, le di una solucion practica, para evitar el trauma con el datagrid entonces al momento de añadir un producto a la DB ahi calcule el costo por kg, y haga las converciones para el caso que sea.

Este es el codigo que usa para saber que presentacion se usara, y en base al precio de la presentación determine el calculo del costo por kg, de esta manera lo guarda en la DB
Código:
Private Function convertir() As String
If (presentacion.Text = "tn") Then
    convertir = Round((precio.Text / 1000), 2)
ElseIf (presentacion.Text = "saco45") Then
    convertir = Round((precio.Text / 45), 2)
ElseIf (presentacion.Text = "kg") Then
    convertir = precio.Text
ElseIf (presentacion.Text = "saco30") Then
    convertir = Round((precio.Text / 30), 2)
ElseIf (presentacion.Text = "saco25") Then
    convertir = Round((precio.Text / 25), 2)
ElseIf (presentacion.Text = "arroba") Then
    convertir = Round((precio.Text / 11.5), 2)
ElseIf (presentacion.Text = "quintal") Then
    convertir = Round((precio.Text / 46), 2)
End If
End Function
Ah, el presentacion.text (es un combo, con ya todas las presentación previamente ingresadas), el Round es una funcio de aproximación Round(valor, decimales).
De esta manera cuando deseo hallar el producto de menor costo por kg, lo hago con un query a la DB.

Muchas gracias a todos por su colaboración.
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 21:21.