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
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.
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?
cabe mencionar que es solo para darles un LayOut por lo que solo debo leer este dbf
salu2
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:!
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.
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