conexion con dbf
Publicado por aldo (111 intervenciones) el 16/08/2007 15:04:55
Hola,
estoy haciendo pruebas con conexion a dbf que estan en un servidor Unix, a traves de samba.
la conexion es la siguiente:
Set dbAfi = New Connection
dbAfi.Provider = "Microsoft.Jet.OLEDB.4.0"
dbAfi.ConnectionString = "//Sistnvo/prusamba"
dbAfi.Properties("Extended Properties") = "dBASE 5.0;"";"
dbAfi.Open
y a la vez tengo otra conexion a otro directorio dentro del Unix para consultar otras DBF's
Set dbTram = New Connection
dbTram.Provider = "Microsoft.Jet.OLEDB.4.0"
dbTram.ConnectionString = "//Sistnvo/ibank"
dbTram.Properties("Extended Properties") = "dBASE 5.0;"";"
dbTram.Open
ambas conexiones funcionan.
si hago una consulta comun para que simplemente me traiga datos o grabe o modifique algun dato de una sola tabla, anda todo bien...
como por ejemplo esto...
Set rs = New Recordset
rs.Open "Select * from tramites where carnet=" & _
Val(Trim(txtCarnet)) & " and niv=" & _
Val(Trim(txtNiv)), dbTram, adOpenDynamic, adLockOptimistic
me trae los datos, me los graba si quiero, o modifico los mismos...
pero si quiero hacer la conexion con otras DBF's que estan con otra conexion (ya que estan en otro directorio dentro del Unix, por eso tuve que crear otra conexion), todo se me hace muy lento...
por ejemplo este caso...
'//CONEXION A DBF's (2 TABLAS EN DISTINTOS DIRECTORIOS - 2 conexiones)
Set rs = New Recordset
rs.Open "Select * from tramites where carnet=" & _
Val(Trim(txtCarnet)) & " and niv=" & _
Val(Trim(txtNiv)), dbTram, adOpenDynamic, adLockOptimistic
If Not rs.EOF And Not rs.BOF Then
Set rs2 = New Recordset
rs2.Open "select apenom from afilia where " & _
"numero=" & rs!numero & _
" ", dbAfi, adOpenDynamic, adLockOptimistic
If Not rs2.EOF And Not rs2.BOF Then
txtApenom = rs2!apenom
txtNroExp = Nulo(rs!nroexp)
txtNivExp = Nulo(rs!nivexp)
txtTipo = Nulo(rs!tipo)
txtMonto = Nulo(rs!montosol)
Else
MsgBox "dato inexistente en afiliados", vbCritical, "error"
End If
rs2.Close: Set rs2 = Nothing
End If
rs.Close: Set rs = Nothing
esto anda bien, pero es muy lento...
cuando hago una consulta me trae los datos pero luego de 2 o 3 segundos y simplemente es una consulta... (ni grabo, ni modifico nada... igual probe esto y es tan lento como lo otro).
Alguien me puede ayudar??
Gracias
Aldo
pd: espero no haber aburrido
estoy haciendo pruebas con conexion a dbf que estan en un servidor Unix, a traves de samba.
la conexion es la siguiente:
Set dbAfi = New Connection
dbAfi.Provider = "Microsoft.Jet.OLEDB.4.0"
dbAfi.ConnectionString = "//Sistnvo/prusamba"
dbAfi.Properties("Extended Properties") = "dBASE 5.0;"";"
dbAfi.Open
y a la vez tengo otra conexion a otro directorio dentro del Unix para consultar otras DBF's
Set dbTram = New Connection
dbTram.Provider = "Microsoft.Jet.OLEDB.4.0"
dbTram.ConnectionString = "//Sistnvo/ibank"
dbTram.Properties("Extended Properties") = "dBASE 5.0;"";"
dbTram.Open
ambas conexiones funcionan.
si hago una consulta comun para que simplemente me traiga datos o grabe o modifique algun dato de una sola tabla, anda todo bien...
como por ejemplo esto...
Set rs = New Recordset
rs.Open "Select * from tramites where carnet=" & _
Val(Trim(txtCarnet)) & " and niv=" & _
Val(Trim(txtNiv)), dbTram, adOpenDynamic, adLockOptimistic
me trae los datos, me los graba si quiero, o modifico los mismos...
pero si quiero hacer la conexion con otras DBF's que estan con otra conexion (ya que estan en otro directorio dentro del Unix, por eso tuve que crear otra conexion), todo se me hace muy lento...
por ejemplo este caso...
'//CONEXION A DBF's (2 TABLAS EN DISTINTOS DIRECTORIOS - 2 conexiones)
Set rs = New Recordset
rs.Open "Select * from tramites where carnet=" & _
Val(Trim(txtCarnet)) & " and niv=" & _
Val(Trim(txtNiv)), dbTram, adOpenDynamic, adLockOptimistic
If Not rs.EOF And Not rs.BOF Then
Set rs2 = New Recordset
rs2.Open "select apenom from afilia where " & _
"numero=" & rs!numero & _
" ", dbAfi, adOpenDynamic, adLockOptimistic
If Not rs2.EOF And Not rs2.BOF Then
txtApenom = rs2!apenom
txtNroExp = Nulo(rs!nroexp)
txtNivExp = Nulo(rs!nivexp)
txtTipo = Nulo(rs!tipo)
txtMonto = Nulo(rs!montosol)
Else
MsgBox "dato inexistente en afiliados", vbCritical, "error"
End If
rs2.Close: Set rs2 = Nothing
End If
rs.Close: Set rs = Nothing
esto anda bien, pero es muy lento...
cuando hago una consulta me trae los datos pero luego de 2 o 3 segundos y simplemente es una consulta... (ni grabo, ni modifico nada... igual probe esto y es tan lento como lo otro).
Alguien me puede ayudar??
Gracias
Aldo
pd: espero no haber aburrido
Valora esta pregunta


0