• Viernes 19 de Abril de 2024, 07:26

Autor Tema:  Base De Datos Remota Con Winsock  (Leído 1275 veces)

martin campos quintero

  • Miembro MUY activo
  • ***
  • Mensajes: 113
  • Nacionalidad: 00
    • Ver Perfil
Base De Datos Remota Con Winsock
« en: Sábado 29 de Octubre de 2005, 23:07 »
0
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
  1.  
  2.  
  3.   If Left(datos, 15) = "/dame_reporte1:" Then
  4.     tabla.Clear
  5.     z = Len(datos) - 15
  6.     aux = Right(datos, z)
  7.     c = 1
  8.  
  9.       While (Mid(aux, c, 1) <> ",")
  10.         palabra = palabra & Mid(aux, c, 1)
  11.         c = c + 1
  12.       Wend
  13.    
  14.       anio.Text = palabra
  15.    
  16.       palabra = ""
  17.       c = c + 1
  18.    
  19.       While (Mid(aux, c, 1) <> ",")
  20.         palabra = palabra & Mid(aux, c, 1)
  21.         c = c + 1
  22.       Wend
  23.      
  24.       If palabra = "ENERO - JULIO" Then
  25.         semestre.Text = "1"
  26.       End If
  27.       If palabra = "AGOSTO - DICIEMBRE" Then
  28.         semestre.Text = "2"
  29.       End If
  30.    
  31.       palabra = ""
  32.       c = c + 1
  33.    
  34.       While (Mid(aux, c, 1) <> ",")
  35.         palabra = palabra & Mid(aux, c, 1)
  36.         c = c + 1
  37.       Wend
  38.    
  39.       laboratorio.Text = palabra
  40.    
  41.       palabra = ""
  42.       c = c + 1
  43.    
  44.       While (Mid(aux, c, 1) <> ";")
  45.         palabra = palabra & Mid(aux, c, 1)
  46.         c = c + 1
  47.       Wend
  48.      
  49.       carreras.Refresh
  50.       enc = 0
  51.       While Not (carreras.Recordset.EOF) And enc = 0
  52.         If carreras.Recordset.nombre_materia = palabra Then
  53.           enc = 1
  54.           carrera.Text = carreras.Recordset.clave_materia
  55.         End If
  56.         carreras.Recordset.MoveNext
  57.       Wend
  58.    
  59. '  For c = 1 To 30
  60. '    tabla.TextMatrix(c, 2) = ""
  61. '    tabla.TextMatrix(c, 3) = ""
  62. '  Next
  63.  
  64.   Command2_Click  ' guarda los datos en el MSflexgrid llamado tabla
  65.  
  66.   If Winsock1(Index).State = 7 Then
  67.     c = 0
  68.     While c < tabla.Rows
  69.       Winsock1(Index).SendData "/envio_reporte1:" & c & "," & tabla.TextMatrix(c, 0) & "," & tabla.TextMatrix(c, 1) & "," & tabla.TextMatrix(c, 2) & "," & tabla.TextMatrix(c, 3) & ";"
  70.       Delay (2)
  71.       c = c + 1
  72.     Wend
  73.   End If
  74.  
  75.   End If
  76.  
  77.  
  78.  


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.