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

Varias personas accediendo a una bd desde una aplicación VB

Estas en el tema de Varias personas accediendo a una bd desde una aplicación VB en el foro de Visual Basic clásico en Foros del Web. Hola a todos Voy a hacer una aplicación en Visual Basic que me permita vender boletas de un evento por abono, es decir, abonando cierta ...
  #1 (permalink)  
Antiguo 10/07/2006, 17:33
 
Fecha de Ingreso: julio-2005
Mensajes: 53
Antigüedad: 18 años, 8 meses
Puntos: 1
Exclamación Varias personas accediendo a una bd desde una aplicación VB

Hola a todos

Voy a hacer una aplicación en Visual Basic que me permita vender boletas de un evento por abono, es decir, abonando cierta cantidad para apartar la boleta. La aplicación me debe permitir también generar un recibo, imprimir un recibo con la información de la persona, el tipo de boleta, el valor abonado y el saldo.

Es necesario también, permitir el acceso al mismo tiempo de varias personas a la bd las cuales se encargarán de la venta, esto significa que habrán varios computadores en red. Esto implica que se introducirán datos y se harán consultas al mismo tiempo. No sé cual sea la forma de hacer esto y si lo mas indicado sea usar access.

Por favor, alguien que me explique la forma en que se puede imprimir esta información y el acceso a la base de datos por parte de varias personas al mismo tiempo. Cuentemen donde encuentro información completa para comenzar a desarrollar esta aplicación.

Gracias

Claudia Arias
  #2 (permalink)  
Antiguo 10/07/2006, 19:51
 
Fecha de Ingreso: diciembre-2004
Mensajes: 475
Antigüedad: 19 años, 4 meses
Puntos: 4
Bueno yo hice algo similar...pero aplicado a un Depto. de control escolar...
varios usario concentados a la misma base de datos...consultando, editando y capturando datos....
y la base de datos esta en access... y lo demas igual....}

saludos....
  #3 (permalink)  
Antiguo 11/07/2006, 08:35
 
Fecha de Ingreso: diciembre-2004
Mensajes: 129
Antigüedad: 19 años, 4 meses
Puntos: 0
Usa conexiones para la BD, para q cada vez que tengas que leer o escribir en la BD, abres la conexion, haces lo vas hacer y luego cierras, para que siempre este disponible para los demas usuarios, sobre los # de boletas quien los va ha proporcionar?, el sistema?, pon tu e-mail y para mandarte un ejemplo
  #4 (permalink)  
Antiguo 11/07/2006, 10:27
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Respecto al acceso simultaneo a una base de datos.

Probablemente lo más indicado no sea emplear Access, sino una base de datos como SQL Server u Oracle, o la tecnología conocida como WAMP (Windows/Apache/MySQL/PHP); pero por si tienes que usar Access, te cuento lo que yo hago.

En una LAN local, con un servidor y equipos clientes, copio el ejecutable del programa en una carpeta del servidor y luego mapeo dicha carpeta como una unidad de red en las máquinas clientes.

Yo uso la unidad Z:\
Supongamos que tenemos una base llamada Base1.mdb

Es decir.

1) En el servidor creas una carpeta C:\Programa (por ejemplo). Esa carpeta está compartida para los usuarios del dominio con acceso de lectura y escritura.
2) En las máquinas clientes/usuario mapeas esa carpeta como una unidad de disco duro, z:\ (por ejemplo)
3) En el programa, en cualquier lugar que uses una conexión a la base de datos (que obviamente está en esa carpeta del servidor) tendrás que poner una referencia semejante a ésta:

Public Const vConnectStringPHN As String = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=Z:\Base1.mdb; DefaultDir=" & Ruta & ";" & _
"Uid=Admin;Pwd=hola;"

(Varía según el método de conexión que estés usando, obviamente)

De este modo, cada vez que un usuario se conecta a la base, abre un recordset, y están todos trabajando sobre la misma base y el mismo programa.

No es la mejor variante, pero funciona.

Espero haberme explicado.

Salu2
  #5 (permalink)  
Antiguo 12/07/2006, 12:33
Avatar de black_devil  
Fecha de Ingreso: junio-2006
Mensajes: 89
Antigüedad: 17 años, 9 meses
Puntos: 1
No se si es más fácil tener la BD en un PC, obviamente en RED, donde la BD se encuentra en origenes de datos (OBDC) (Dentro de panel de control - herramientas administrativas), bueno la conexion de tu programa va con el proveedor de Microsoft OLE DB Provider For ODBC Drivers, ten en cuenta que para cada equipo en RED vas a origenes de datos (ODBC) y seleccionas la BD en el etorno de RED para acceder al equipo remoto donde tienes la BD, eso hago para que los equipos ocupen la BD al mismo, espero te sirva...

EJEMPLO

RED OFICINA
PC01 --------------------------------------------> PCO2
<--------------------------------------------
(BD.MDB) ----> ORIGENES DE DATOS ODBC <------- CONEXION REMOTA A BD
UNICA
  #6 (permalink)  
Antiguo 13/07/2006, 04:58
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 5 meses
Puntos: 2
???????????
no le estamos complicando mucho la vida para una aplicación muy sencilla?????

No es más sencillo que en una de las máquinas que están en red esté tanto el ejecutable como la base de datos y los demás equipos lo usen de ese equipo?????

PC-MASTER .EXE + BDD
PC-SLAVE1 EJECUTA .EXE en RED y trabaja directamente con BDD original
PC-SLAVE2 EJECUTA .EXE en RED y trabaja directamente con BDD original
PC-SLAVE3 EJECUTA .EXE en RED y trabaja directamente con BDD original

No es más sencillo para una aplicación de esta índole, usar BD ACCESS con conexiones MS JET y dejarse de ODBC's, conexiones y desconexiones, y de otras tareas que pueden llegar a cargar mucho una aplicación sencillisima?????

No sé,.... es mi opinión

Saludos
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #7 (permalink)  
Antiguo 13/07/2006, 09:58
Avatar de black_devil  
Fecha de Ingreso: junio-2006
Mensajes: 89
Antigüedad: 17 años, 9 meses
Puntos: 1
He ahi distintas opiniones...
  #8 (permalink)  
Antiguo 14/07/2006, 02:34
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Ok, Laforge, pero en ese caso... dentro del programa... ¿como pones tu cadena de conexión a la base? ¿Qué pones? ¿La dirección IP?

Porque para mi el problema surge en que es necesario mapear una unidad del servidor en el cliente para que puedas estructurar la cadena de conexión. Por eso yo pongo la unidad llamada Z:\ en la cadena de conexión.

Public Const vConnectStringPHN As String = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=Z:\Base1.mdb; DefaultDir=" & Ruta & ";" & _
"Uid=Admin;Pwd=hola;"

Lo otro que se me ocurre, que sería algo como esto...

Public Const vConnectStringPHN As String = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=//192.168.1.1/C:\Base1.mdb; DefaultDir=" & Ruta & ";" & _
"Uid=Admin;Pwd=hola;"

... hasta ahora no lo he visto, y no sé si se pueda hacer. También me gustaría conocer si existen otras posibilidades, pues no las he probado.

Gracias

Salu2
  #9 (permalink)  
Antiguo 14/07/2006, 02:42
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Este es un tema que, aunque no lo he empezado yo, me interesa muchísimo. Y explico el motivo.

El VB6 no es gratuito. Tampoco el VB2005 (excepto la versión Express). Pero en VB6, utilizando la forma que planteo es posible hacer un programa que simule un entorno cliente/servidor.

Hasta donde yo sé VB2005 Express impide el trabajo con carpetas mapeadas (se dieron cuenta de que es una forma más de crackearle el programa). Dado que esto permite hacer grandes aplicaciones que funcionen de modo multiusuario.

¿Alguien sabe si en VB2005 Express hay forma de implementar un procedimiento que permita el trabajo en un entorno de varios usuarios accediendo a una aplicación? Pues si es así, no sería necesario comprar la versión Pro del VB2005.

Gracias de nuevo.
  #10 (permalink)  
Antiguo 14/07/2006, 08:45
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Por si acaso... si van a utilizar Access recordar que no soporta más de 10 usuarios concurrentes.

En los casos donde el capital es pequeño y no se tiene para comprar un SQL Server, se podría trabajar con SQL Server en desarrollo y en producción se puede instalar MSDE y un administrador gratis de esos que funcionan por 30 días, subir la base y listo. Así cada una de las aplicaciones se puede conectar a un servidor real y no a ese chistesito llamado access.

Alguien habló de MS Jet!!! : te quedaste en la edad de piedra

Al utilizar ODBC y entrar en un begintransaccion se bloquean las tablas que se están utilizando, de lo contrario se pueden tener problemas con la integridad de los datos, esa es la manera segura de hacerlo, además no es nada del otro mundo abrir una conexion, entrar en una transaccion, hacer un commit o rollback y cerrar la conexion. Esa es mi opinion
  #11 (permalink)  
Antiguo 14/07/2006, 09:17
Avatar de black_devil  
Fecha de Ingreso: junio-2006
Mensajes: 89
Antigüedad: 17 años, 9 meses
Puntos: 1
acaso odbc no es seguro?, se bloquean las tablas...?


Cita:
Iniciado por Developer9
Por si acaso... si van a utilizar Access recordar que no soporta más de 10 usuarios concurrentes.

En los casos donde el capital es pequeño y no se tiene para comprar un SQL Server, se podría trabajar con SQL Server en desarrollo y en producción se puede instalar MSDE y un administrador gratis de esos que funcionan por 30 días, subir la base y listo. Así cada una de las aplicaciones se puede conectar a un servidor real y no a ese chistesito llamado access.

Alguien habló de MS Jet!!! : te quedaste en la edad de piedra

Al utilizar ODBC y entrar en un begintransaccion se bloquean las tablas que se están utilizando, de lo contrario se pueden tener problemas con la integridad de los datos, esa es la manera segura de hacerlo, además no es nada del otro mundo abrir una conexion, entrar en una transaccion, hacer un commit o rollback y cerrar la conexion. Esa es mi opinion
  #12 (permalink)  
Antiguo 15/07/2006, 08:01
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Mira, yo soy partidiario de lo siguiente...

(OJO ES MAS COMPLICADO QUE CUALQUIERA DE LAS COSAS HABLADAS, PERO MAS EFICIENTE)

Si vos tenes una LAN, o cada computadora cliente esta a 2000 km de distancia cada una... Lo que yo hago y haria es lo siguiente...

Un Software Servidor, que es el que va a manejar la base de datos...
Cada ves que se quiera hacer algo, hay que abrir y cerrar la base de datos... PARA EVITAR PROBLEMAS.

Un Software cliente (terminal boba), que lo que va a hacer, mediante paquetes TCP (podes utilizar Winsock) envie lo que necesita al servidor...
Por ejemplo, pones un ListView en el cliente, y le pide al servidor la lista, el servidor manda los datos por paquetes y el cliente cuando recive arma la lista en el ListView...

Asi, el que maneja todo es el servidor y se evitan todos los problemas... Como dije antes, es bueno si los clientes no estan en LAN, por que le das la IP o el HOST del servidor y listo.
  #13 (permalink)  
Antiguo 15/07/2006, 10:42
Avatar de black_devil  
Fecha de Ingreso: junio-2006
Mensajes: 89
Antigüedad: 17 años, 9 meses
Puntos: 1
bueno no es lo mismo q LAN o WAN o MAN...
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 15:29.