Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: fernandos85al@hotmail.com en Diciembre 09, 2010, 03:44:36 pm
-
Hola gente, nuevamente consultando una gran duda..el trema es el siguiente... tengo varias PCS CONECTADAS EN RED, DESARROLLE UN PROGRAMITA QUE MANEJA BASE DE DATOS DE ACCESS PARA CARGAR INFORMACION.. EN LA PC Nº 1 INSTALE EL SERVIDOR, EL CUAL PUEDE CARGAR INFORMACION EN LA BASE DE DATOS, Y EN LA PC Nº2, Nº3, Nº4, Nº5, ETC ESTA INSTALADO UN CLIENTE,, EL CUAL DEBERIA PERMITIR CARGAR EN LA BASE DE DATOS DEL PC Nº1 LA INFORMACION.. LO QUE QUIERO ES QUE VARIAS COMPUITADORAS SE PUEDA CARGAR AL MISMO TIEMPO.. TENDRIA QUE HACER CONEXIONES MULTIPLES??? CON EL CONTROL WINSOCK??
OTRA CONSULTA...
EN EL SERVIDOR PONGO ESTO:
pRIVATE SUB Form1_Load()
Winsock1.close
Winsock1.localport="5656" ' o el peurto que sea excepto 8888
winsock1.listen
end sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
WINSOCK1.CLOSE
WINSOCK1.ACCEPT REQUESTID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Datos as string
winsock1.getdata datos
msgbox datos ' para ver lo que llega del cliente
End Sub
en los cliente:
Private sub Form1_Load()
Winsock1.Connect "xxxx", "yyy" ' IpRemota='xxx"; PuertoRemoto="yyy"
End Sub
Private Sub Command1_Click()
Winsock1.senddata "Esto es un ejemplo"
End sub
El problema es que a veces me funciona bien, potras veces me da este error
Error '40006' en tiempo de ejecucion
Protocolo o estado de conexion errorneo para la transaccion o peticion solicitada..
que hago mal?? o donde hay error?? mire los puertos, IPS, TODO BIEN...
TANTTO EN EL CLIENTE CONMO EN EL SERVIDOR SON LOS MISMOS..
CREO QUE DEBE SER QUE ESTOY EXPERIMENTANDO PROBLEMAS CON EL SERVICIO DE INTERNET, SE CAE EL SERVICIO DE A RATOS A VECES, PERO AUN CON CONEXION EL PROBLEMA PERSISTE..
SI ALGUUIEN ME PUEDE AYUDAR LO AGGRADECERIA DE ANTEMANO.. DISCULPEN QUE SEA TAN EXTENSO
MIL GRACIAS GENTE!!
-
Fernando Utiliza las etiquetas de codigo [ code ] [ / code ] asi se hace mas fácil la lectura
en cuanto a tu problema hay un par de formas para encarar la situación
una es ante de enviar un dato comprobar si estas conectado
Private Sub Command1_Click()
If Winsock1.State = sckConnected Then
Winsock1.SendData "Esto es un ejemplo"
Else
MsgBox "No Conecto"
End If
End Sub
otra es utilizando los eventos para saber cuando conecto o si hubo un error.
Private Sub Winsock1_Connect()
MsgBox "Conectado"
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox Description, vbCritical, "Error: " & Number
End Sub
de todas formas ese error no deberia existir, quizás sea problema de la red que no esta estable.
Saludos.
-
Hola!
Apartir de esto (http://www.mediafire.com/?fxyo8od59cv6pfe (http://www.mediafire.com/?fxyo8od59cv6pfe)) te puedo recomentar de que al control Winsock, lo utilices con Indices
Como ejemplo :
ws(0),ws(1),ws(2).. xd
Revisa el source de arriba y lo comprenderas
-
Me rompiste el coco.
1.- Porque hacerlo con winsock si tienes PCs conectadas por red (red local imagino)??? es pura curiosidad, nunca he necesitado hacer eso cuando de base de datos se trata.
2.- La conexion debiera ser por ADO y es bastante transparente, en algunos clientes que tengo tienen hasta 7 PCs todas en red local y trabajando a la vez contra una BD de Access, sin mayor problema que la propia base de datos pueda brindar, ya que Access no gestiona un BeginTranss, CommitTrans y Rollback lo que si hace un servidor propiamente dicho (SQLServer, Oraclar, Firebird, etc).
3.- hay una confusion en tu enunciado, dices:
"EN LA PC Nº 1 INSTALE EL SERVIDOR, EL CUAL PUEDE CARGAR INFORMACION EN LA BASE DE DATOS..."
Me imagino que te refieres a Insertar datos en la base de datos, ok
", Y EN LA PC Nº2, Nº3, Nº4, Nº5, ETC ESTA INSTALADO UN CLIENTE,, EL CUAL DEBERIA PERMITIR CARGAR EN LA BASE DE DATOS DEL PC Nº1 LA INFORMACION" (Cuidado de decir una costra porosa)
Estas PCs estan haciendo lo mismo que la PC1... ¿cual es la diferencia?, dado que usas la misma palabra: "Cargar" me genera confusión. Imagino que las PCs 2, 3, 4 y 5 LEEN de la BD que esta instalada en la PC1. Sin embargo es posible también que las 5 PCs inserten, actualicen y lean. Pero imagino que por "orden" tu aplicación cliente no permite inserciones, no lo se.
-
Este tema va en Bases de Datos......... bueno aqui te dejo un pequeño aporte que prepare para ti con access, estudialo esta bien comentado.
http://www.mediafire.com/?5xbsdlnfkpc13qp (http://www.mediafire.com/?5xbsdlnfkpc13qp)
-
Hola si, fue una confusion.. lo que se hace desde las pc Nº 2, 3, 4, 5, 6, ETC, ES "ENVIAR DATOS" POR MEDIO DE WINSOCK AL PC Nº1 DONDE ESTE LOS RECIBE, Y POR MEDIO DE SQL AGREGO, MODIFICO Y ELIMINO INFORMACION; SIEMPRE Y CUANDO DESDE LA PC Nº1 ESTEN PERMITIDAS ESTAS ACCIONES. (Desde aqui se restrige lo que en cada cliente instalado en el resto de las pcs se puede hacer).
Al mismo tiempo la PC Nº 1 SERVIDOR, TAMBIEN PUEDE "INGRESAR DATOS, MODIFICAR Y ELIMINAR". LE AGREGUE LA OPCION DE QUE CADA USUARIO QUE INGRESE A SERVIDOR O AL LOS CLIENTES, PUEDEN LOGEARSE COMO Administradores, (para permitir realizar cosas que como usuario invitado NO SE PUEDEN HACER)
DESDE YA MIL GRACIAS POR LA AYUDA, DE TODOS.. EN UNOS DIAS DEJO EL PROGRAMITA, PARA QUE LO VEAN, LO MODIFIQUEN A SU GUSTO.. Y OTROS QUE TENGO..
SALUDOS