Buenas tardes estoy haciendo un programa para gestionar un inventario y tengo algunas
dudas, ya visité el sitio y recogí los requerimientos y siguiendo un consejo que vi aquí
mismo construí mi base de datos la cual explico a continuación:
nombre: sistcontpro
tabla: insumo
campos: id_insumo
categoria
descripcion
empaque
cantidad
nota_entrega
fecha_despacho
fecha_llegada
fecha_vencimiento
proveedor
lote
tabla: usuario
campos: id_usuario
nombre_usuario
clave_usuario
tipo_usuario
tabla: pedido
campos: id_pedido
insumo
cantidad
fecha_pedido
destino_pedido
no he relacionado las tablas ya que desconozco el proceso, este programa gestionará el
inventario de un ambulatorio los insumos son médicos, las categorías son medicamentos,
médico-quirúrgico, insumos de limpieza e insumos de oficina
en la tabla insumo me han dicho que necesitan registrar todos esos datos y al registrar que haga un reporte de la
llegada de esos insumos con todos los datos, hice un formulario con todo lo que me piden y logré registrar
en la base de datos, pero al registrar el mismo insumo me lo agrega a la base de datos, pensé en hacer otro
formulario para actualizar la cantidad y otros datos y de hecho creo que lo necesitaré, pero los demas datos son importantes para el reporte quisiera alguna sugerencia de que hacer, porque si llegan mas insumos que ya estén
en la base de datos voy a tener muchas veces el mismo insumo y la base crecería con muchos datos duplicados,
esta es una de las muchas preguntas pero voy a ir paso a paso, estoy usando gambas 3.8.4 en ubuntu 12.04
con apache, sistema manejador mysql y el entorno gráfico phpmyadmin pensé en usar sqlite pero creo que la base de datos
va a crecer mucho y a lo mejor no es el sistema indicado
este es mi código
gambas class file
Private hresul As Result
Private editando As Boolean
Public Sub runedit(data As Result)
If Not data.Available Then
Print "data(Result) es nulo"
Return
Endif
editando = True
hresul = data
txtId_Insumos.Text = hresul["id"]
cbxCategoria.Text = hresul["categoria"]
txtDescripcion.Text = hresul["descripcion"]
txtEmpaque.Text = hresul["empaque"]
vbxCantidad.Value = hresul["cantidad"]
txtNotaEntrega.Text = hresul["notaentrega"]
datebxDespacho.Value = hresul["fechadespacho"]
datebxLlegada.Value = hresul["fechallegada"]
datebxVencimiento = hresul["fechavencimiento"]
txtProveedor.Text = hresul["proveedor"]
txtLote.Text = hresul["lote"]
End
Public Sub btnCerrar_Click()
Me.close 'instruccion para cerrar el formulario activo
End
Public Sub btnRegistrar_Click()
'Dim agregar As Result
ModuloConexion.moduloconexion
If IsNull(cbxCategoria.Text) Then
Message.Warning("Debe escoger una opción")
cbxCategoria.SetFocus
Return
Else
If IsNull(txtDescripcion.Text) Then
Message("Debe llenar éste campo")
txtDescripcion.SetFocus
Return
Else
If IsNull(txtEmpaque.Text) Then
Message("Debe llenar éste campo")
txtEmpaque.SetFocus
Return
Else
If vbxCantidad.Value = 0 Then
Message("Debe llenar éste campo")
vbxCantidad.SetFocus
Return
Else
If IsNull(txtNotaEntrega.Text) Then
Message("Debe llenar éste campo")
txtNotaEntrega.SetFocus
Return
Else
If IsNull(datebxDespacho.Value) Then
Message("Debe llenar éste campo")
datebxDespacho.SetFocus
Return
Else
If IsNull(datebxLlegada.Value) Then
Message("Debe llenar éste campo")
datebxLlegada.SetFocus
Return
Else
If IsNull(datebxVencimiento.Value) Then
Message("Debe llenar éste campo")
datebxVencimiento.SetFocus
Return
Else
If IsNull(txtProveedor.Text) Then
Message("Debe llenar éste campo")
txtProveedor.SetFocus
Return
Else
If IsNull(txtLote.Text) Then
Message("Debe llenar éste campo")
txtLote.SetFocus
Return
Endif
Endif
Endif
Endif
Endif
Endif
Endif
Endif
Endif
Endif
If editando Then
Try hresul["id_insumos"] = txtId_Insumos.Text
Try hresul["categoria"] = cbxCategoria.Text
Try hresul["descripcion"] = txtDescripcion.Text
Try hresul["empaque"] = txtEmpaque.Text
Try hresul["cantidad"] = vbxCantidad.Value
Try hresul["notaentrega"] = txtNotaEntrega.Text
Try hresul["fechadespacho"] = datebxDespacho.Value
Try hresul["fechallegada"] = datebxLlegada.Value
Try hresul["fechavencimiento"] = datebxVencimiento.Value
Try hresul["proveedor"] = txtProveedor.Text
Try hresul["lote"] = txtLote.Text
Endif
ModuloConexion.$conexion.Exec("insert into insumos (id_insumos,categoria,descripcion,empaque,cantidad,notaentrega,fechadespacho,fechallegada,fechavencimiento,proveedor,lote) values (&1,&2,&3,&4,&5,&6,&7,&8,&9,&{10},&{11})", Null,
cbxCategoria.Text, txtDescripcion.Text, txtEmpaque.Text, vbxCantidad.Value, txtNotaEntrega.Text, datebxDespacho.Value, datebxLlegada.Value, datebxVencimiento.Value, txtProveedor.Text, txtLote.Text)
Message("Registro guardado")
limpiar
ModuloConexion.$conexion.Close
End
Public Sub txtCantidad_KeyPress() 'este código está comentado para que no se me olvide si lo llegara a necesitar
'este trozo de codigo me permite que solo reciba números la caja de texto pero también
'con un mensaje de advertencia si se pulsan teclas que no sean numéricas
'pero para datos enteros usé un valuebox
' Select Case Key.Code
'
' Case 48 To 57 'código ascii de los números
' Case Key.BackSpace 'permite la tecla de retroceso
' Case Key.Delete 'permite la tecla borrado (supr)
' Case Key.Tab 'permite la tecla tabulador
' Case Else
' Message.Warning("¡Disculpe, ingresar solo números")
' Stop Event
' End Select
End
Public Sub Form_Open()
End
Sub limpiar()
cbxCategoria.Text = ""
txtDescripcion.Clear
txtEmpaque.Text = Null
vbxCantidad.Value = Null
txtNotaEntrega.Text = Null
datebxDespacho.Value = ""
datebxLlegada.Value = Null
datebxVencimiento.Value = Null
txtProveedor.Text = Null
txtLote.Text = Null
End
Public Sub btnLimpiar_Click()
limpiar
'null es para limpiar las cajas de texto tambien se usan las comillas dobles ("") o
'.clear aquí las usé todas para ver si alguna daba problemas
cbxCategoria.Text = ""
txtDescripcion.Clear
txtEmpaque.Text = Null
vbxCantidad.Value = Null
txtNotaEntrega.Text = Null
datebxDespacho.Value = ""
datebxLlegada.Value = Null
datebxVencimiento.Value = Null
txtProveedor.Text = Null
txtLote.Text = Null
End
Gracias
Willian Suárez Venezuela