Aplicación cliente-servidor en ODBC
Somos dos programadores con poca experiencia en aplicaciones en red, y estamos desarrollando una aplicación cliente-servidor en visual basic 6.0 con una base de datos creada con Access.
Uno de los PC (el servidor), contiene la base de datos con la que operará cada uno de los PC cliente. De momento hemos conseguido hacer una conexión que no acaba de funcionar del todo bien. A continuación incluiré un fragmento del código (solo la parte referente a conexión):
Private Sub Form_Load()
'Abrir una conexión
Set cn = New ADODB.Connection
cn.Open "filedsn=c:\prueba"
'prueba.dsn es como se llama
'el origen de datos
'Abrir un recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.CursorType = adOpenDynamic
rs.LockType = adLockPessimistic
rs.ActiveConnection = cn
rs.Source = ("select * from tabla")
rs.Open
End Sub
'la siguiente funcion es la que trata las modificaciones de registros
Private Sub Command6_Click()
While rs.EditMode <> adEditNone
DoEvents
Wend
For i = 1 To rs.Fields.Count - 1
rs.Fields(i).Value = Text1(i).Text
Next i
On Error GoTo tratarerror
rs.Update
Exit Sub
Tratarerror:
Rs. CancelUpdate
End Sub
Cuando intentamos modificar un registro de la base de datos al mismo tiempo, se produce una colisión, con lo cual aparentemente existe una conectividad multiusuario. Pero por otra parte, en el primer bucle de la función command6_click, (donde comprobamos si esta en modo de edición), nunca entra en el, por lo que parece que la conexión cliente-servidor no existe.
La gran duda que tenemos, es como especificar quien es el servidor, si esto hay que hacerlo a través de código, propiedades, fuera de la aplicación, etc., y como configurar quienes serán los clientes.
Uno de los PC (el servidor), contiene la base de datos con la que operará cada uno de los PC cliente. De momento hemos conseguido hacer una conexión que no acaba de funcionar del todo bien. A continuación incluiré un fragmento del código (solo la parte referente a conexión):
Private Sub Form_Load()
'Abrir una conexión
Set cn = New ADODB.Connection
cn.Open "filedsn=c:\prueba"
'prueba.dsn es como se llama
'el origen de datos
'Abrir un recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.CursorType = adOpenDynamic
rs.LockType = adLockPessimistic
rs.ActiveConnection = cn
rs.Source = ("select * from tabla")
rs.Open
End Sub
'la siguiente funcion es la que trata las modificaciones de registros
Private Sub Command6_Click()
While rs.EditMode <> adEditNone
DoEvents
Wend
For i = 1 To rs.Fields.Count - 1
rs.Fields(i).Value = Text1(i).Text
Next i
On Error GoTo tratarerror
rs.Update
Exit Sub
Tratarerror:
Rs. CancelUpdate
End Sub
Cuando intentamos modificar un registro de la base de datos al mismo tiempo, se produce una colisión, con lo cual aparentemente existe una conectividad multiusuario. Pero por otra parte, en el primer bucle de la función command6_click, (donde comprobamos si esta en modo de edición), nunca entra en el, por lo que parece que la conexión cliente-servidor no existe.
La gran duda que tenemos, es como especificar quien es el servidor, si esto hay que hacerlo a través de código, propiedades, fuera de la aplicación, etc., y como configurar quienes serán los clientes.
2 respuestas
Respuesta de harnish1
1
Respuesta de azuluaga
1