Visual Basic.NET - vb.NET & ORACLE 11g

 
Vista:
Imágen de perfil de franco

vb.NET & ORACLE 11g

Publicado por franco (3 intervenciones) el 09/12/2016 21:27:59
Bueno pasa que no encuentro documentación sobre vb.net con ORACLE y si encuentro es muy pobre... quería pedir ayuda a la comunidad a solucionar mi problema y entenderlo, documentare todo para que quede claro mi problema y la funcionalidad que busco en esta aplicación.

Para el desarrollo, he usado:
-SQL datamodeler 11g (en donde he diseñado mis modelos fisico y relacional, a su vez saque los DDL (CREATE USER y ALTERATE TABLE) desde aqui para el developer)
-SQL developer 11g (en donde cree el usuario "a_comer" con pass "aco_123" con el DDL generado en datamodeler e hice la inserción de datos por mi cuenta repartidos en todas las tablas)
-VISUAL STUDIO 2012 (en donde trabajo con Visual Basic .NET conectada con la base de datos de ORACLE)

MINI_INDICE:
En este punto mostrare mis modelos lógico y relacional creados para el problema en SQL Datamodeler de ORACLE.
Aquí se mostrara como debiese funcionar el sistema propuesto con los Mockups respectivos y mi problema.
Mi código actual.

1. Los modelos desarrollados en SQL datamodeler son :
MODELO LÓGICO
LINK FOTO DIRECTA: https://www.dropbox.com/s/a62teu6ifp82839/logico.png?dl=0



MODELO RELACIONAL
LINK FOTO DIRECTA: https://www.dropbox.com/s/s6posjckr5dwd95/relacional.png?dl=0



*nose porque se ve tan chico siendo que las imagenes son grandes y las puse en full size, bueno y adjunte links directos de las imagenes para que las puedan ver mejor.
* bueno y el informe de las tablas creado esta en pdf y no lo quiero pegar aca ya que seria un post bastante largo, por ende dejo el link a dropbox por si sea necesario revisar el informe de tablas.
LINK FOTO DIRECTA: https://www.dropbox.com/s/z2y0y38h40zsyw7/informe_tablas.pdf?dl=0

2. Bueno parto mencionando por si acaso que he trabajado con:

-ORACLE 11g : datamodeler 11g & developer 11g
-Visual Studio 2012 : Visual Basic.net o mas bien conocido como vb.net

​Una vez poblada la base de datos empece a conocer el entorno de desarrollo que propone Visual Studio y lo primero que intente hacer fue conectar mi base de datos con Oracle, lo cual me costo demasiado encontrar la documentación necesaria para vb.net y oracle ya que siempre encontraba oracle con c# o con asp.net, etc. y cuando encontraba algo respecto a vb.net era con MySql o acces.
La cosa es que me ha sido realmente imposible encontrar documentacion suficiente para implementar este sistema como yo necesito, es por esto que recurro a uds.
Sin mas atochamiento vamos al problema.
Bueno mi aplicacion consiste en un sistema basico de restaurant en donde se pueda gestionar la informacion que se maneja en este.
Mi problema aparece aqui en donde quiero hacer un formulario para el ingreso de pedidos.
LINK FOTO DIRECTA: https://www.dropbox.com/s/quhr9a9hzhu00bx/INGRESO_PEDIDOS%20vb.net.png?dl=0


INFORMACION BASICA DE REGLA DE NEGOCIOS APLICADAS EN ESTE FORMULARIO
- puedo hacer uno o muchos pedidos para una misma cuenta
- en un pedido puedo almacenar uno o muchos productos con sus respectivas cantidades
- cada pedido puede tener solo un garzon y numero de mesa

QUE HE LOGRADO HACER?
-lamentablemente he gastado mas de 72 horas en solo conectarme a la base de datos y aprendi a llenar los combobox con la lista de datos que requiero y almaceno en una variable los datos seleccionados... hasta ahora puedo obtener el nombre de garzón , numero de mesa y los nombres de productos.

COMO DEBE FUNCIONAR LA APLICACIÓN
-inicialmente el boton agregar productos y solicitar pedido estaran inactivos hasta que se haga una seleccion en los combobox nom_garzon (combobox1) y num_mesa (combobox2)
-luego se habilitara el combobox agregar producto (combobox3) y el textbox cantidad (textbox6)
-el usuario debera seleccionar un producto y cantidad, de no escribir cantidad se asume que sera 1.
*Al seleccionar un producto en el textbox agregar producto el boton agregar productos (button1) se habilitara.
-en el momento que seleccione un producto y presione agregar producto, el boton debera:
+buscar en la tabla pedido el id_pedido mas alto o si se entiende mejor el MAX(id_pedido) para que automaticamente se refleje el max(pedido) que se rescato y sumarle +1, esto en el textbox id_pedido (textbox4),
+mostrar en el datagridview cuadrado que esta al lado de estos botones, que indica producto v/s cantidad, de esta forma se iran agregando uno a uno los productos por cada click en este datagridview (datagridview2)
-se habilitara el boton solicitar pedido en caso de que halla al menos un producto ingresado en el datagridview
-cuando e usuario termine de agregar los productos en el datagridview2, podra apretar el boton solicitar pedido (button2) en donde el boton tendra que:
+verificar si la mesa esta disponible o no, ¿para que? para decidir si anidar el id_pedido a una cuenta o generar cuenta_nueva

*ejemplo1= la mesa numero 6 esta disponible por lo que se creara una nueva cuenta que se reflejara en el textbox id_cuenta(textbox3), esta sera verificando la ultima cuenta de igual forma que con el pedido, un MAX(id_cuenta) a este se le sumara 1 y esa sera la nueva cuenta para el pedido, ademas que el estado o disponibilidad de la mesa cambiara de F (false) a T (true) y tambien se registrara la fecha y hora del sistema.

*ejemplo2= la mesa numero 3 no esta disponible (siendo su disponibilidad = F) por lo que se asume que la mesa esta consumiendo y ya tiene uno o mas pedidos en la misma asociados a una cuenta, por lo que este seria un pedido mas para la misma mesa, por ende se debe buscar el numero de cuenta para la mesa 3 con disponibilidad F y rescatar ese numero de cuenta y agregarlo en el id_cuenta (textbox3)

+insertar en la base de datos todos los productos agregados y mostrados en el datagridview cuadrado de arriba (datagridview2) sabiendose ya el numero de pedido de estos y a la cuenta que le pertenecen.

+se debe actualizar el datagridview reactangular que esta en la parte inferior mostrando la siguiente informacion sobre la cuenta actual con el fin de saber todos los productos que ha consumido actualmente dicha mesa:

*id_cuenta, id_pedido,mesa,nombre_garzon, nombre_producto, cantidad, precio_producto, fecha,hora.
3.Mi Codigo Actual en VB.NET



ESTE ES EL POCO CODIGO QUE HE PODIDO CREAR EN VISUAL BASIC.NET + ORACLE 11G
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Imports System.Data.OracleClient
Imports System.Data.Sql
Public Class Form1
Dim cadena As String = " server = FRANCO ; user id = a_comer ; password = aco123 ; unicode = true "
Dim cn As New OracleConnection(cadena)
 
Dim nombre_completo_garzon As String
Dim numero_mesa As String
Dim maximo_pedido As String
 
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Call mostrar_empleado()
Call combobox_garzon()
Call combobox_mesa()
Call combobox_producto()
End Sub
 
Sub mostrar_empleado()
Try
Dim da As New OracleDataAdapter("select * from empleado", cn)
Dim ds As New DataSet
 
da.Fill(ds, "emp")
Me.DataGridView1.DataSource = ds.Tables("emp")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
 
Sub combobox_garzon()
Try
Dim sql As String = "select nombre||' '||paterno_ape||' '||materno_ape from empleado join tipo_empleado on empleado.id_cargo=tipo_empleado.id_cargo where tipo_empleado.id_cargo='12'order by nombre,paterno_ape,materno_ape"
Dim cmd As New OracleCommand(sql, cn)
cmd.CommandType = CommandType.Text
Dim da As OracleDataAdapter
Dim ds = New DataSet()
da = New OracleDataAdapter(cmd)
da.Fill(ds)
ComboBox1.DataSource = ds.Tables(0)
ComboBox1.DisplayMember = "nombre||''||paterno_ape||''||materno_ape" 'lo que se muestra
ComboBox1.ValueMember = "nombre||''||paterno_ape||''||materno_ape" 'lo que se almacena
ComboBox1.Text = ""
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
 
Sub combobox_mesa()
Try
Dim sql As String = "select num_mesa from mesa"
Dim cmd As New OracleCommand(sql, cn)
cmd.CommandType = CommandType.Text
Dim da As OracleDataAdapter
Dim ds = New DataSet()
da = New OracleDataAdapter(cmd)
da.Fill(ds)
ComboBox2.DataSource = ds.Tables(0)
ComboBox2.DisplayMember = "num_mesa" 'lo que se muestra
ComboBox2.ValueMember = "num_mesa" 'lo que se almacena
ComboBox2.Text = ""
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
 
Sub combobox_producto()
Try
Dim sql As String = "select nombre_producto from producto"
Dim cmd As New OracleCommand(sql, cn)
cmd.CommandType = CommandType.Text
Dim da As OracleDataAdapter
Dim ds = New DataSet()
da = New OracleDataAdapter(cmd)
da.Fill(ds)
ComboBox3.DataSource = ds.Tables(0)
ComboBox3.DisplayMember = "nombre_producto" 'lo que se muestra
ComboBox3.ValueMember = "nombre_producto" 'lo que se almacena
ComboBox3.Text = ""
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
 
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
nombre_completo_garzon = ComboBox1.SelectedValue.ToString 'aqui se almacena el valor del combobox1 en este caso el rut
End Sub
 
Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
numero_mesa = ComboBox2.SelectedValue.ToString
End Sub
 
End Class
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

vb.NET & ORACLE 11g

Publicado por arbol (166 intervenciones) el 10/12/2016 14:44:22
saludos

yo podria colaborarte en realizar unos ejemplos

instala anydesck y enviame el id para guirte en una parte de la codificacion.

Estare a tus ordenes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de franco

vb.NET & ORACLE 11g

Publicado por franco (3 intervenciones) el 12/12/2016 00:09:16
Muchas gracias "arbol"!!!
te he mandado un correo con el codigo de anydesk.
De verdad muchas gracias estaré atento a tu respuesta...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar