Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Decompilar un Programa Hecho en Access (https://www.clubdelphi.com/foros/showthread.php?t=82033)

kurono 18-01-2013 01:52:20

Decompilar un Programa Hecho en Access
 
hola amigo como estan les cuento que tengo un cliente el cual posee un sistema hecho completamente en access 2007 el cual pienso migrarlo a delphi pero a la hora de abrir el archivo me muestra directamente las ventanas del sistema y no puedo ver el diseno de la base de datos ni la relaciones que existen y todo lo demas ,hise una conexion con delphi y la base de datos pero no es suficiente ya que al momento de modificar la base de datos no podre hacerlo

alguien tiene una idea de como abrir este archivo en modo de diseno

Delphius 18-01-2013 03:32:08

Cita:

Empezado por kurono (Mensaje 453597)
hola amigo como estan les cuento que tengo un cliente el cual posee un sistema hecho completamente en access 2007 el cual pienso migrarlo a delphi pero a la hora de abrir el archivo me muestra directamente las ventanas del sistema y no puedo ver el diseno de la base de datos ni la relaciones que existen y todo lo demas ,hise una conexion con delphi y la base de datos pero no es suficiente ya que al momento de modificar la base de datos no podre hacerlo

alguien tiene una idea de como abrir este archivo en modo de diseno

Vaya... así que ahora resulta ser que en Access se programa :D ¡Que bien! ¿Cómo es la sintáxis y gramática? :rolleyes:

kurono 18-01-2013 04:09:43

por si no lo sabias en access hay un cierto grado de programacion mediante macro y procedimientos VBA

Delphius 18-01-2013 05:07:00

Cita:

Empezado por kurono (Mensaje 453602)
por si no lo sabias en access hay un cierto grado de programacion mediante macro y procedimientos VBA

Ha... ¿Y sólo porque se puede poner esas macros y tocar algo de script VB (guácala) y hacer formularios como "ventanas ABM" merece ser etiquetado como un programa? Y que peor... ¿que hasta incluso se pudiera descompilar?

Piensa un poquito. ¿Cómo vas a descompilar algo que no está compilado? Access no es más que una fachada del verdadero motor Jet4. Ofrece algunas herramientas de diseño para hacer más "fácil la vida" pero eso no lo convierte ni tiene el potencial de llamarse un programa; hasta ni merece ser llamado un motor de base de datos (que se sobrentiende de lo que he dicho antes sobre fachada del Jet4). En Access no programas; punto.
En todo caso si haces uso de VB en macros y/o módulos no estás usando Access, es una herramienta externa llamada Microsoft Visual Basic. Luego es que Access invoca a estas macros y módulos pero programación en Access... nada de nada.

Combat-F2D 18-01-2013 07:56:20

Cita:

Empezado por Delphius (Mensaje 453604)
Piensa un poquito. ¿Cómo vas a descompilar algo que no está compilado?

a lo mejor no lo sabe y por eso pregunta.... o no lo tiene tan claro

Casimiro Noteví 18-01-2013 09:58:09

Cita:

Empezado por kurono (Mensaje 453597)
hola amigo como estan

Seguramente es alguna opción configurable para que se abra una pantalla determinada directamente.
No conozco access, pero puede que con un programita de esos "manager" puedas acceder a la base de datos.

fjcg02 18-01-2013 11:21:37

Que yo sepa, una bbdd de access puede convertirse en una "especie de ejecutable"

Además, se puede indicar que se ejecute o lance algo ( script, formulario, ... ) automáticamente al arrancar.
Además se puede proteger con contraseña.

Qué haría yo:
Para intentar cortar el comando lanzado al inicio, arrancar pulsando Shift/mayúsculas. Te tendría que salir la ventana de diseño, para seleccionar tablas, formularios, ...
Si está protegida con contraseña, buscar por ahí un programilla de los que borran la password, por lo que te permitiría acceder a la bbdd.

Nos cuentas cómo te ha ido.

Informaros además de que Access es una herramienta estupenda para realizar informes, extracciones de datos de diferentes fuentes, ... Yo lo uso habitualmente, ya que estoy todo el día haciendo ñapas, informes de diferentes fuentes ( ficheros excell, sqlServer, otros ficheros access,...) , cruzo datos, ... Me ha salvado de muchos marrones, por lo que no deberiais mirarlo tan mal.

Un saludo

Neftali [Germán.Estévez] 18-01-2013 12:01:34

Pues aunque parezca mentira sí se puede programar en Access, y no sólo con macros y demás, sino de una forma bastante completa
Antes de nada, para aclarar cosas, debemos llamar cada cual por su nombre.

Access no es una Base de datos ni un Motor de Base de Datos; El motor de Base de Datos es Jet4 y la Base de datos son los ficheros MDB (similares a DBF o cualquier otro). Simplemente que los ficheros MDB además de almacenar tablas de la Base de Datos, pueden almacenar otras cosas (forms, listados, código,...).

Siendo así:
Podemos utilizar el motor Jet4 con otros ficheros que no sean MDB (por ejemplo DBF).
Podemos utilizar Jet4 con ficheros MDB, sin usar Access (ADO).

Entonces qué es Access.

Access no es más que:
(1) Programa de Gestión de Base de Datos, como puede ser IBConsole, IBExperts, SQLManager,... o cualquier otro que hay por ahí.
(2) Access es un IDE de programación.

La mayoría utilizan Access como Programa Gestor de Bases de Datos (con ficheros MDB), pero también hay quien programa con él.

Access como he comentado también es un IDE de programación y muy potante aunque no lo parezca.
La programación se hace utilizando Visual Basic. La "gracia" de este entorno es que además de la potencia de la programación tienes acceso a una serie de funciones a las que no tienes acceso desde fuera (desde el IDE de visual Basic o desde otros).

Me explico. Desde VisualBasic/Delphi, puede llamar a una consulta SQL y para ello necesitas 10 líneas de código (por ejemplo). Desde Access puedes crear esa consulta de forma visual y llamarla por su nombre, con una línea.
Desde VisualBasic/Delphi puedes crear listados y visalizarlos y para ello necesitas componentes externos. Desde Access puedes crear los listados y llamarlos con una sóla línea. Y el diseñados no tiene nada que envidiar a los que utilizamos nosotros.

Access como entorno provee infinidad de procedimientos ya programados (por ejemplo en temas de exportaciones y busquedas), que puedes llamar directamente desde el código.
Access tiene programadas muchas funciones a utilizar directamente en SQL que Jet4 no tiene. Sería como una extensión del SQL de Jet4, de forma que desde Access puedes utilizar un SQL más rico y potente que desde fuera contra Jet4.
El diseñador de formularios y el generador de listados son similares al que podemos encontrar en Visual Basic o muchos otros lenguajes.

Hablamos de lenguaje "interpetado".
Por supuesto Debugger, ejecución por pasos, logs, watches, sintaxis,... bueno, todas las herramientas de cualquier IDE.
Se pueden instalar componentes, ActiveX,...

En cuanto a la ejecución, sí que hay alguna utilidad de Microsoft que permite generar un ejecutable, aunque personalmente no la he utilizado nunca.

Lo que se suele hacer para "generar" los que llamamos programas es utilizar la Macro "autoexec". Si la macro está creada, se ejecuta de forma automática al entrrar. En esa macro lo que solemos hacer es inicializar lo que necesitemos y abrir el formulario Principal (Main). Esta es la manera de "arrancar" el programa.
Hay una combinación de teclas (búscala por Internet) que al iniciar Access, si la tienes pulsada no ejecuta la macro autoexec; Esta es la manera de entrar, si quieres acceder al programa sin "arrancarlo". De esta forma tendrás acceso a las tablas, forms, listados, consultas, macros y los módulos de código.

Por último, hay que decir que Access no sólo trabaja con MDB/Jet4, sino que lo que se suele hacer si se necesita potencia es generar la Interface de los programas con Access (formularios, listados, consultas,...) y utilizar como Gestor de Bases de datos algo más potente como SQL Server.
Es decir, puedes crear una pequeña aplicación monopuesto/multipuesto(pocos) con Acces y si más adelante "necesitas más", hay un asistente de MS que te permite migrar eso a una estructura (Access+SQLServer), de forma que posees el "programa" en local con Access y las Tablas+SP+Vistas,... en un servidor SQL.

Creo que ya está (lo que quería comentar).

Espero haber ayudado a aclarar las cosas.

Un saludo.

WkaymQ48 18-01-2013 12:43:55

Siguiendo con la respuesta de Neftali, yo personalmente conozco una aplicación para restaurantes, multipuesto y multicentro, con todo lo que te quieras imaginar: planos de mesas, control de stock, envíos entre locales, facturas, informes de ventas, etc ... todo hecho en access 2.0 :eek:

Hace unos años no era tan entraño ver aplicaciones hechas en access, ahora ya es mas raro, pero poder se puede :)

MAXIUM 18-01-2013 13:29:18

Ok, todos odiamos Access.

Neftali [Germán.Estévez] 18-01-2013 13:36:48

Cita:

Empezado por MAXIUM (Mensaje 453617)
Ok, todos odiamos Access.

No todos.
¿Porqué?

nlsgarcia 18-01-2013 15:04:18

Club Delphi,

Cita:

Empezado por Wikipedia

Microsoft Access, also known as Microsoft Office Access, is a database management system from Microsoft that combines the relational Microsoft Jet Database Engine with a graphical user interface and software-development tools.

Tomado del link: http://en.wikipedia.org/wiki/Microsoft_Access

Cita:

Empezado por Wikipedia

JET stands for Joint Engine Technology, sometimes being referred to as Microsoft JET Engine or simply Jet. Microsoft Access and Visual Basic use or have used Jet as their underlying database engine. It has since been superseded for general use, however, first by Microsoft Desktop Engine (MSDE), then later by SQL Server Express. Jet is now part of Microsoft Windows and is no longer a component of Microsoft Data Access Components (MDAC). For larger database needs, Jet databases can be upgraded (or, in Microsoft parlance, "up-sized") to Microsoft's flagship database product, SQL Server

Tomado del link: http://en.wikipedia.org/wiki/Microso...atabase_Engine

Cita:

Empezado por Wikipedia

With version 2007 onwards, Access includes an Office-specific version of Jet, initially called the Office Access Connectivity Engine (ACE), but which is now called the Access Database Engine. This engine is fully backward-compatible with previous versions of the Jet engine, so it reads and writes (.mdb) files from earlier Access versions. It introduces a new default file format, (.accdb), that brings several improvements to Access, including complex data types such as multivalue fields, the attachment data type and history tracking in memo fields. It also brings security and encryption improvements and enables integration with Microsoft Windows SharePoint Services 3.0 and Microsoft Office Outlook 2007.

Tomado del link: http://en.wikipedia.org/wiki/Microso...atabase_Engine

Cita:

Empezado por Microsoft

Visual Basic for Applications (VBA) is the programming language for Microsoft Office and its associated applications. You use it for the same reason you use macros—to tie the objects in your application together into a coherent system. The difference is that VBA provides more power and a finer degree of control than you get by using macros alone.

VBA is a modern programming language that strongly resembles most of the popular, structured programming languages. If you're a Pascal or C programmer, you'll find all the program structures you're used to—loops, If...Then...Else statements, Select Case statements, functions, and subroutines—with only superficial differences. With all its improvements from earlier versions of Basic, VBA retains its English-like flavor and ease of use.

Tomado del link: http://msdn.microsoft.com/en-us/libr...ice.10%29.aspx

En resumen: Concuerdo plenamente con Neftali.

Espero sea útil :)

Nelson.

MAXIUM 18-01-2013 15:56:59

¿Es como Clipper?

Neftali [Germán.Estévez] 18-01-2013 16:02:27

Cita:

Empezado por MAXIUM (Mensaje 453631)
¿Es como Clipper?

No. Clipper era un sistema de programación que se creó inicialmente para trabajar con Bases de datos de DBase.

Clipper es anterior a Access. Piensa que clipper trabajaba en MS-DOS, en las versiones que tuvieron más éxito. recuero que hubo versiones para Windows, pero cuando salieron ya había perdido terreno frente a otros productos visuales como VisualBasic y Delphi.

Delphius 18-01-2013 16:38:14

Disculpame Neftali pero difiero totalmente de tus dichos.
Access no es más que un "editor" de formularios e informes, que gracias a sus asistentes logra interactuar de una manera más sencilla con el motor Jet4.
Pero de allí a asegurar de que es un verdadero IDE de programación, estamos muy errados. En el momento en que creas una macro o un módulo abandonas Access y entras a Visual Basic... ergo no haces programación en Access; solo es que tiene cierta característica de comunicarse con VB y se acabó. Que por como se ha diseñado Office se le permita ejecutar cosas escritas en VB es un agregado, una característica más. Pero eso no hace de Access un verdadero lenguaje de programación... Tendrá sus apariencias en el hecho de que en Access uno puede hacerse sus forms como por ejemplo en VB o Delphi, o para hacer Informes como cual lo hace uno en QuickReport.

Access es un editor y fachada para hacer más fácil y llevadera algunas cosas. Tiene poderosos e interesantes asistentes visuales. Eso no lo voy a poner en duda si justo el año pasado le he hecho un archivo .mdb a mi prima con una base de datos, y unos formularios e informes para que les resulte más fácil organizarse en su trabajo. Algunos de los forms en verdad parecían una aplicación real con sus cuadros de texto, combos y botones. ¿Pero he programado? En realidad no... Más bien he diseñado "ventanitas".
Por debajo de todo esto estará el motor Jet4 haciendo el verdadero trabajo, por debajo corren ciertas macros prediseñadas... por debajo. Todo oculto, y sólo mostramos algo bonito y sencillo para el usuario.

Pero de todo eso a que se comporte como un lenguaje de programación que se precie como la gente... Por favor no podemos decir en serio que Access sirva para programar. Si quieres programar mal que menos elijes VB.

Respecto a su SQL, ¿En serio dices que su SQL es una extensión? ¡Vamos hombre! Tiene sus tiquismises que hasta se salta cosas del estándar.

Microsoft fue muy astuto e inteligente. Al dotar de la capacidad de llamar cosas de VBA y ofrecer esos asistentes a Access consiguió que al final muchos terminen llamando a Access como un verdadero motor de base de datos, y peor... que hasta lo comparen con un lenguaje de programación.

Ya que tu dices que es un lenguaje de programación espero que tenga una muy buena biblioteca sobre lógica difusa que tengo un proyectito en mente y Delphi me queda chico. :D

No es que sea anti-Access. Estoy en serio poniendo sus cosas en su lugar. Access es un asistente, puede ser muy útil, fácil e intuitivo. Para cosas medianas y básicas puede ser suficiente; pero tiene sus límites... límites en donde ya no basta unos formularios y la "programación" básica que le ofrece ese VBA, también se ve seriamente afectado a un tamaño máximo de archivo y la posibilidad de actuar en multi puestos.

Saludos,

Neftali [Germán.Estévez] 18-01-2013 17:05:25

Cita:

Empezado por Delphius (Mensaje 453637)
Disculpame Neftali pero difiero totalmente de tus dichos.
Access no es más que un "editor" de formularios e informes, que gracias a sus asistentes logra interactuar de una manera más sencilla con el motor Jet4.
Pero de allí a asegurar de que es un verdadero IDE de programación, estamos muy errados. En el momento en que creas una macro o un módulo abandonas Access y entras a Visual Basic...

Nada que disculpar, cada uno tiene su opinión.

Yo creo que sí es un IDE de Programación. Y el lenguage en el que programa es similar a visual basic (no igual).
Yo en su momento (y esto es muy importante, porque no estamos hablando de IDE's actuales, sino de los IDE que había en 1998/2000) desarrollaba con Access y no tenía Visual Basic instalado. Ni el IDE, ni el compilador, ni ninguna de las herramientas relacionadas con VisualBasic, por lo tanto considero que Access era el IDE. No tenía otro. Más básico que los actuales, pero bastante avanzado con respecto a los otros que había en ese momento.

IDE son las siglas de "Entorno de Desarrollo Integrado" y eso exactamente es lo que era Access en su momento. Desarrollabas desde Access y sin necesidad de nada más.

Es muy fácil decir ahora que Jet4/MDB no es ni siquiera una Base de Datos, pero habría que ver qué "Bases de Datos" había en aquellos tiempos. ¿DBF's? ¿DataBase Desktop y los ficheros relacionados? es como decir que DBase ni siquiera es una Base de Datos. Está claro que ahora nos queda muy lejos, pero eso no quita lo que es.
No podemos compararlos con la BD o gestores actuales, ni se les acercan, pero eso no quita lo que son.

Creo que muchos de los comentarios que haces, es porque tienes en mente "lenguajes actuales", "entornos actuales", "Gestores actuales",...

Personamente no lo escogería como IDE de desarrollo a día de hoy, no tiene sentido, pero en su día era de lo mejorcito que había en el mercado para determinados programas con determinadas características.

Combat-F2D 18-01-2013 17:20:15

de verdad que siento tener que escribir esto... pero este tema se abrio por un miembro, el que sea, haciendo una consulta, lo cual deduzco que si la hace es porque desconoce el asunto, o bien necesita y AGRADECE información....

he leido las contestaciones, y sin querer se ha abierto un debate que me parecería de lo más normal, lógito y correcto, peoi el motivo de este post creo e intento hacer llegaros que si mal no lo he entendido y leído, NO se le debe de haber dejado muy claras las ideas al iniciador de éste; eso si se le ha contestado, y aclaro antes de nada, a lo que en mi modesto entender NO ha sido todo lo correcto que se debiera:

Cita:

que si piensa un poco
que si tu tal,
que si no es un IDE
aqui parece que alguno, ojo puedo incluirme yo, parecemos los master del universo

el que se tenga que dar por aludido que se de, que me ponga a mi a parir, me da lo mismo, pero ante todo recordemos la finalidad de esta comunidad

para malas contestaciones seguro que hay otros sitios

y perdonar por mi chorreo, pues no soy ni miembro premium, ni moderador ni leches, es más seguro que soy el más ignorante de todos.......

Casimiro Noteví 18-01-2013 17:24:31

Creo que Neftali le contestó en el mensaje #8 :)

Neftali [Germán.Estévez] 18-01-2013 17:38:45

Cita:

Empezado por Combat-F2D (Mensaje 453646)
de verdad que siento tener que escribir esto... pero este tema se abrio por un miembro, el que sea, haciendo una consulta, lo cual deduzco que si la hace es porque desconoce el asunto, o bien necesita y AGRADECE información....
he leido las contestaciones, y sin querer se ha abierto un debate que me parecería de lo más normal, lógito y correcto, peoi el motivo de este post creo e intento hacer llegaros que si mal no lo he entendido y leído, NO se le debe de haber dejado muy claras las ideas al iniciador de éste; eso si se le ha contestado, y aclaro antes de nada, a lo que en mi modesto entender NO ha sido todo lo correcto que se debiera:

En parte creo que tienes razón Combat-F2D; Por una lado sí que tal vez hemos divagado un poco, pero por otro lado sí se ha contestado a lo que ha pedido el usuario.
Tal vez al no decir nada más, no hemos ido por los "cerros de Úbeda". :-)

PREGUNTA
Cita:

Empezado por kurono (Mensaje 453597)
...pero a la hora de abrir el archivo me muestra directamente las ventanas del sistema y no puedo ver el diseno de la base de datos ni la relaciones que existen y todo lo demas ,
...alguien tiene una idea de como abrir este archivo en modo de diseno

RESPUESTA
Cita:

Empezado por Casimiro Notevi (Mensaje 453609)
Seguramente es alguna opción configurable para que se abra una pantalla determinada directamente.
No conozco access, pero puede que con un programita de esos "manager" puedas acceder a la base de datos.

RESPUESTA
Cita:

Empezado por fjcg02 (Mensaje 453611)
Qué haría yo:
Para intentar cortar el comando lanzado al inicio, arrancar pulsando Shift/mayúsculas. Te tendría que salir la ventana de diseño, para seleccionar tablas, formularios, ...

RESPUESTA
Cita:

Empezado por Neftali (Mensaje 453612)
Lo que se suele hacer para "generar" los que llamamos programas es utilizar la Macro "autoexec". Si la macro está creada, se ejecuta de forma automática al entrrar. En esa macro lo que solemos hacer es inicializar lo que necesitemos y abrir el formulario Principal (Main). Esta es la manera de "arrancar" el programa.
Hay una combinación de teclas (búscala por Internet) que al iniciar Access, si la tienes pulsada no ejecuta la macro autoexec; Esta es la manera de entrar, si quieres acceder al programa sin "arrancarlo". De esta forma tendrás acceso a las tablas, forms, listados, consultas, macros y los módulos de código.

PREGUNTA
Cita:

Empezado por kurono (Mensaje 453597)
hise una conexion con delphi y la base de datos pero no es suficiente ya que al momento de modificar la base de datos no podre hacerlo


RESPUESTA
Tal vez sobre esto, es sobre lo que no hemos comentado nada, lo que sí necesitaríamos es más información. ¿Qué quiere decir que no puedes modificarla?
Desde Delphi+ADO puedes modificar tanto los datos como la estructura de la Base de Datos, utilizando TADOTable o TADOQuery.
¿Te da algún error?

kurono 18-01-2013 18:16:18

hare el intento de Shift/mayúsculas luego les cuento


La franja horaria es GMT +2. Ahora son las 00:40:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi