Leer DBF en modo compartido con Microsoft Visual FoxPro Driver

Iniciado por almita, 30 Septiembre 2010, 17:20 PM

0 Miembros y 2 Visitantes están viendo este tema.

almita

Hola buenos días, alguien sabe que puedo hacer ya que estoy haciendo una Conexión a un dbf con el siguiente código y funciona pero si esta tabla está siendo usada por otro sistema me dice error al leer el archivo y que no encontró el dbf, cabe mencionar que estos sistemas toman la tabla en modo compartido al igual que mi conexión pero aún así me manda este error.
Sé que es esto porque ya ejecute mi aplicación cuando nadie usa esta tabla o si no tienen ningún registro tomado y si funciona mi aplicación.  Alguna idea?



                sConn = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;Exclusive=NO;SourceDB=" & _
                System.IO.Path.GetDirectoryName("\\IP\Conta" & Mid(fecha, 5, 4) & "\tabla.dbf")
                query = "select cuenta,subcuenta,partida,subpartida,cargo,abono,concepto from tabla WHERE substr(No_poliza,1,1)='I' and month(fecha_ref)=" & txtFRef.Text


[D4N93R]

Posiblemente las otras aplicaciones marcan una transacción sobre esa base de datos o archivo, entonces no se puede hacer nada al respecto, dado que no tiene un manager como tal, sino que estas consultando al archivo directamente.

Una pregunta, los demás sistemas que usan esa BD estan en FoxPro? o también están en .Net u otro lenguaje?

Te lo digo ya que usar dbf es un poco arcaico ya y que además limita mucho la escalabilidad de la aplicación.

Saludos.

almita

definitivamente si es arcaico y estan en dbase (ms-dos) usan este archivo de forma compartida pero no se si pasa esto por que toman los rows en exclusiva por lo que el .net no puede leer el dbf?

almita

cabe mencionar que es solo para darles un LayOut por lo que solo debo leer este dbf

salu2

[D4N93R]

No es que .Net no lo lea, es el driver, porque supongo que estás haciendo una conexión ODBC?

Prueba este connection string: Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\ruta_al_archivo;

a ver que tal:!

almita

Cambie la dinámica para evitar el error para ello genere un .bat para que copie por ms_dos los dbf a un directorio local e el servidor de la aplicación, pero resulta que cuando debuegeo sigue funcionando de la manera que lo haga pero al publicarlo en IIS no funciona puse mensajes para ver donde se queda y no está entrando al código donde ejecuto el bat que es el siguiente código.
    Sub exec(ByVal nom As String)
        Dim WSH
        Dim enlace
        Dim objScriptExec, strExeOut
        enlace = "C:\scrpt_dbf\" & nom
        WSH = CreateObject("WScript.Shell")
        objScriptExec = WSH.Exec(enlace) 'Ejecuto el bat pasandole el nombre del archivo con sus parametros
        strExeOut = objScriptExec.StdOut.ReadAll 'Coge la salida del bat
        Dim mensaje As String = "<script language='javascript'> alert('COPIO DBF');</script>"
        ClientScript.RegisterStartupScript(Page.GetType(), "msj", mensaje)
    End Sub


insisto esto funciona cuando debugeo en .net pero en IIS no entra al parecer a este código o por lo menos no me manda el mensaje pero si me manda el mensaje de que entro a la conexión aún que no trae nada ya que no copio la tabla si checo el directorio donde debió copiarla y cabe mencionar que ejecutando el bat si copia las tablas no se si debo agregar algún otro usuario ya que agregue a las carpetas de la aplicación y directorio donde debe estar la tabla el usuario aspnet,IUSR_...,IWAM_...,DISTRIBUTED COM users,IIS_WP6

Alguna otra idea que ya me desespere porfis y me urge  gracias por su atención chavos.

almita

se me paso mencionar que esto ultimo ya lo probé desactivando el firewall de Windows tanto en el servidor como en la maquina donde redice la aplicación y en esta pequeña red no hay firewall de red por lo que no hay quien cierre puertos por lo que ya no se que mas puedo hacer ayuda porfas