Hola a todos. solo quería saber cuanta informacion se puede almacenar en cada casilla de una array unidimencional:
Lo que ocurre es que estoy pasando los datos de tres campos por Winsock al cliente. Pero me arroja error en una fila donde los tres campos estan con datos. de ahí que creo que a lo mejor es porque hay mucha informacion?
'Server
Dim Transmitir As String
Transmitir = Hoja1 & "|" & Hoja2 & "|" & Hoja3
Winsock1.SendData Transmitir
Cliente
Dim Transmicion As String
Dim Datos() As String
Winsock1.GetData Transmicion, vbString
Datos = Split(Transmicion, "|")
Text1.Text= Datos(0)
Text2.Text= Datos(1)
Text3.Text= Datos(2)
Hay 20 filas con datos en el primer campo. Solo en la fila 16 los tres campos estan con datos. con información de una hoja Word. Y justo ahi salta un error y pasa a la fila 17. Salta porque capuré el error.
Será porque en la fila 16 hay mucho texto?, ayuda porfa...
Dudo que sea eso ps en una variable tipo string se puede almacenar mucho, que error te manda el vb y que tipo de datos son hoja1, hoja2 y hoja3?
Bueno he revisado todo. En un lan pasa todo los datos, intentaré de nuevo a traves de internet... ya les comentaré
Hola, saben he intentado en una LAN y pasa normal todos los datos, pero cuando lo hago desde internet, trabajo a casa, no llega datos en el campo 3. Lo que estoy pensando es que se pierden datos. Ya, que solo pasa con ese registro donde hay gran cantidad de informacion.
En realidad, lo de arriba es solo un ejemplo. Lo que intento pasar son 100 registros con 10 campos. De esos campos hay 03 con Hoja1, Hoja2, Hoja3, donde guardo comentarios de 20 lineas.
Todos los registros tienen comentarios de 20 lineas en la hoja1. pero en los registros donde tienen comentarios en la hoja2, hoja3 llegan sin datos.
hay, algun limite para pasar datos de un porramos con el Winsock.?
eso seguro es perdida de datos, usa un doevents antes de el sendata
doevents: ws.senddata datos
yen el servidor o resector ue no tenga nintun doevents en el evento dataarrival (si pones un doevents se volveara el estring: es por esperiencia propia con el winsock ).
otra cosa, no uses el select case en el data arrival, solo usalo para obtener los datos, y usa algo asi como Switch para pasar datos GraNDES
Winsock emisor[/i]
botonSend ()
{
ws.senddata "EnvOn" ' // Peticion para saber si esta listo el resector
}
DataArrival()
{
dim datos as string
dim spli()
spli = split(datos,"|")
select case spli(0)
case "Envon"
if cbool(spli(1) then
doEvents: ws.senddata Tramision ' // Se envian los datos de la variable "Transmison"
doEvents: ws.sendata "Envoff" ' // Le indico al resector el termino y la ultilizacion del proceso select case
end if
case "Envon"
if cbool(spli(1) then
' // Me dio weba seguir con el codigo asi ue lo lo demas es cosa tuya
end if
' // Otros select case etc...
end select
}
WinSock Receptor[/i]
DataArrival()
{
dim datos as string
static resect as boolean
ws.getdata datos, vbstring
if right(datos,len("Envon"))="Envon" then
resect = true
Ws.sendata "Envon|" & true
elseif right(datos,len("Envoff"))="Envoff" then
resect = false
Ws.sendata "Envoff|" & true
else
call procesodondeestaelselectcase(datos) ' // en este proceso hacer el split con la variable en el parametro.
end if
}
Dulces Lunas!¡.
OK. Intentaré arreglar todo eso. Luego les comento. como va..
Saludos,
Hola, ░▒▓BlackZeroҖ▓▒░
Los 100 registros los descargo con un Timer
Private Sub Timer1_Timer()
If Winsock1.State = sckConnected Then
Dim ID As Long
ID = FuncionMaximo("Registros", "ID")
ID = ID + 1
Winsock1.SendData "DESGARGAR" & Format(ID, "0000000000")
Timer1.Enabled = False
End If
End Sub
Luego en el Server DataArribal
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Transmicion As String
Dim Mandato As String
Winsock1.GetData Transmicion, vbString
Mandato = Left(Transmicion, 9)
If Mandato = "DESCARGAR" Then
RS.Open "", DBConex, adOpenStatic, adLockReadOnly
If RS.RecordCount > 0 Then
Dim Trasmitir As String
Transmitir = Transmitir & RS(0) & "|"
Transmitir = Transmitir & RS(1) & "|"
Transmitir = Transmitir & RS(2) & "|"
Etc, Etc, Etc
Winsock1.SendData "AGREGARSI" & Transmitir
Else
Winsock1.SendData "AGREGARNO" 'Informamos que no hay el registro solicitado.
End If
Rs.Close
Set Rs = Nothing
End IF
End Sub
Nuevamente en el Cliente:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Transmicion As String
Dim Mandato As String
Winsock1.GetData Transmicion, vbString
Mandato = Left(Transmicion, 9)
If Mandato = "AGREGARSI" Then
'hago el correspondiente Split. Es decir extraido los campos
'luego los agrego en la base de datos
'como existe más datos en el server. activo el Timer para que saque el
'nuevo máximo valor y lo envié para descargar el siguiente
Timer1.Enabled = True
End If
End Sub
Bueno, eso es el código. Crees que sea por el Do Events. XQ cuanto solicité la descargar de Registros con un FOR en el DataArribal se mesclaban todos los registros; ya que, lo hacía muy rápido. Por eso el Timer solicitará un nuevo registro una vez se se haya agregado el registro descargado, sino se mantendrá Inactivo.
Más claro, lo que no entiendo si el problema es:
1.) ¿Pido muy rápido el registro a descargar?
2.) ¿Problema con el Split, porque no soporta muchos datos. Por lo que me sugieres que use Switch?
Ayuda, porfa...