quiero pedirte una pequeña ayuda acerca de un inconveniente con el desarrollo de un sistema en PHP el cual trabaja conjuntamente los archivos de ADS con un aplicativo desarrollado en FWH ACE32.DLL, el problema que se me presenta es que no logro encontrar la forma en PHP de saber si un registro esta lock por otro usuario, lo que sucede es que el cliente que accede a travez del sistema en FWH coloca lock un registro al acceder en la web en PHP como hago para saber que el mismo registro esta lock por otro usuario ?

De antemano mil gracias por tu colaboración

José David

asked 14 Jan '13, 08:35

Jos%C3%A9%20David's gravatar image

José David
41225
accept rate: 0%


Existen stored procedures que puedes usar para consultar que records están locked y por quien. sp_mgGetAllLocks(), sp_mgGetLockOwner()... Seguramente sea más fácil si creas tu propio stored procedure dentro del data dictionary que haga mas fácil la consulta.

Por ejemplo, algo así:

   oAdsQuery:cSql += ;
      "CREATE PROCEDURE sp_mgGetAllLocksAllTablesAllUsers ( \n" + ;
      "     TableName CICHAR ( 255 ) OUTPUT, \n" + ;
      "     RecNumber INTEGER OUTPUT,        \n " + ;
      "      UserName CICHAR ( 50 ) OUTPUT,  \n" + ;
      "     IPAddress CICHAR ( 30 ) OUTPUT,  \n" + ;
      "DictionaryUser CICHAR ( 50 ) OUTPUT ) \n" + ;
      "         BEGIN                        \n " + ;
      "       DECLARE cTbls CURSOR AS EXECUTE PROCEDURE sp_mgGetAllTables(); \n" + ;
      "       DECLARE cLocks CURSOR;         \n " +;
      "       DECLARE cUser CURSOR;          \n " + ;
      "                                      \n" + ;
      "          OPEN cTbls;                 \n" + ;
      "                                      \n" + ;
      "WHILE FETCH cTbls DO                  \n" +;
      "   OPEN cLocks AS EXECUTE PROCEDURE sp_mgGetAllLocks(cTbls.TableName); \n"+;
      "   WHILE FETCH cLocks DO              \n"+;
      "      OPEN cUser as EXECUTE PROCEDURE sp_mgGetLockOwner(cTbls.TableName, cLocks.LockedRecNo); \n"+;
      "      WHILE FETCH cUser DO            \n"+;
      "         INSERT INTO __output VALUES (cTbls.TableName, cLocks.LockedRecNo, cUser.UserName, cUser.Address, cUser.DictionaryUser); \n"+;
      "      END WHILE;                      \n"+;
      "      CLOSE cUser;                    \n"+;
      "   END WHILE;                         \n"+;
      "   CLOSE cLocks;                      \n"+;
      "END WHILE;                            \n"+;
      "CLOSE cTbls;                          \n"+;
      "END;                                  \n"

Y ya una vez se ha creado el stored procedure en tu dd, entonces lo puedes usar desde fwh o desde php o cualquier otro cliente cada vez que quieras:

"EXECUTE PROCEDURE sp_mgGetAllLocksAllTablesAllUsers()"

Observa que el stored procedure te va a devolver un cursor con el nombre de la tabla, el # de record, el nombre del usuario y el ip de la estación que tiene el lock. Una vez tienes el cursor, pues ya sabrás que hacer con el -como por ejemplo buscar la tabla y # de record en cuestión....?

Espero te sirva,

link

answered 14 Jan '13, 08:42

Reinaldo's gravatar image

Reinaldo
816202346
accept rate: 6%

Your answer to the original question.
If responding to a request for additional information, please edit the question or use the comment functionality.
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "Title")
  • image?![alt text](/path/img.jpg "Title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×20

Asked: 14 Jan '13, 08:35

Seen: 2,025 times

Last updated: 14 Jan '13, 08:42

Advantage Developer Zone Contact Us Privacy Policy Copyright Info


Powered by Advantage Database Server and OSQA
Disclaimer: Opinions expressed here are those of the poster and do not necessarily reflect the views of the company.