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:
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.