Programación General > Visual Basic 6.0 e inferiores
Base De Datos Remota Con Winsock
(1/1)
martin campos quintero:
Hola amigos, tengo un pequeño problemota.
Les cuento.
Hice un programa de administración de laboratorios del centro de cómputo de mi escuela.
El cual está compuesto por:
- Servidor: Registra automáticamente todos los accesos a cada computadora.
- Cliente para administrador: Manda órdenes al servidor de que apague, desbloquee/bloquee, mande mensajes a todas las pcs por laboratorio.
- Cliente: Bloquea cada computadora para que no pueda ser usada sin registrarse un alumno.
Bueno, el problema está en la aplicación cliente para administradores, porque esa aplicación es la que me muestra los reportes. Es decir esta aplicación se conecta con la aplicación servidor y le pide que le mande todos los registros en determinada fecha. Cuando el servidor recibe esa orden, hace la búsqueda y guarda los datos en un MSflexgrid y después los manda linea por linea a la aplicación cliente para administradores, pero resulta que para que me los mande correctamente debo poner un tiempo de retardo muy grande. Les pongo algo de código:
--- Código: Text --- If Left(datos, 15) = "/dame_reporte1:" Then tabla.Clear z = Len(datos) - 15 aux = Right(datos, z) c = 1 While (Mid(aux, c, 1) <> ",") palabra = palabra & Mid(aux, c, 1) c = c + 1 Wend anio.Text = palabra palabra = "" c = c + 1 While (Mid(aux, c, 1) <> ",") palabra = palabra & Mid(aux, c, 1) c = c + 1 Wend If palabra = "ENERO - JULIO" Then semestre.Text = "1" End If If palabra = "AGOSTO - DICIEMBRE" Then semestre.Text = "2" End If palabra = "" c = c + 1 While (Mid(aux, c, 1) <> ",") palabra = palabra & Mid(aux, c, 1) c = c + 1 Wend laboratorio.Text = palabra palabra = "" c = c + 1 While (Mid(aux, c, 1) <> ";") palabra = palabra & Mid(aux, c, 1) c = c + 1 Wend carreras.Refresh enc = 0 While Not (carreras.Recordset.EOF) And enc = 0 If carreras.Recordset.nombre_materia = palabra Then enc = 1 carrera.Text = carreras.Recordset.clave_materia End If carreras.Recordset.MoveNext Wend ' For c = 1 To 30' tabla.TextMatrix(c, 2) = ""' tabla.TextMatrix(c, 3) = ""' Next Command2_Click ' guarda los datos en el MSflexgrid llamado tabla If Winsock1(Index).State = 7 Then c = 0 While c < tabla.Rows Winsock1(Index).SendData "/envio_reporte1:" & c & "," & tabla.TextMatrix(c, 0) & "," & tabla.TextMatrix(c, 1) & "," & tabla.TextMatrix(c, 2) & "," & tabla.TextMatrix(c, 3) & ";" Delay (2) c = c + 1 Wend End If End If
Como se habrán dado cuenta utilizo el control winsock.
En este código tiene un tiempo (delay) de 2, funciona cuando corro el cliente para administradores en la misma máquina donde está el servidor, pero si lo hago desde otra tengo que poner un tiempo (delay) de 20, el cual tarda una eternidad en mandarme cerca 30 lineas, si no lo hago así, me llegan los datos desordenados.
Espero pudieran decirme como hacer para que en menos tiempo me mande los datos. De antemano gracias por responderme.
Navegación
Ir a la versión completa