Access
Soy nuevo programando en delphi y quisiera saber como relaciono una base de datos hecha en access con delphi
1 Respuesta
Respuesta de antipauli
1
1
antipauli, Analista/Programador de Sistemas Oracle
Si no te encuentra la tabla es que seguramente cuando has creado el ODBC no le has indicado la ruta y nombre correctos del fichero.
Para que no te pida clave debes poner un tdatabase entre el alias y el tquery y asignarle un nombre que es el que usarás en la property database de la query.
En este componente database, seleccionas el alias que te interesa y asignas un nuevo nombre que usará toda la aplicación. Después le das al botón Defaults y escribes la contraseña, así no te la pedirá luego. Y no te olvides de desactivar la casilla de Login Prompt que está en la parte inferior.
La lógica es:
BBDD - TDatabase - TQuery - TDatasource - TDbgrid
Para que no te pida clave debes poner un tdatabase entre el alias y el tquery y asignarle un nombre que es el que usarás en la property database de la query.
En este componente database, seleccionas el alias que te interesa y asignas un nuevo nombre que usará toda la aplicación. Después le das al botón Defaults y escribes la contraseña, así no te la pedirá luego. Y no te olvides de desactivar la casilla de Login Prompt que está en la parte inferior.
La lógica es:
BBDD - TDatabase - TQuery - TDatasource - TDbgrid
1. Creas un ODBC desde Panel de Control/Origenes de datos ODBC de tipo Access, si no tienes el driver instalado, deberás instalarlo.
2. Introduces un componente TQuery con la property Requestlive a true y con la linea: select * from tabla en la property SQL.
3. Introduces una dbgrid y un tdatasource y unes la dbgrid con el tdatasource mediante la property datasource y el tdatasource lo unes a la query mediante la property dataset.
4. Activas el tquery y verás los datos en la dbgrid.
5. Para editarlos introduce componentes tdbedit, tdbmemo, etc. para cada campo de la tabla a modificar/insertar y une las propertys datafield y dataset para que también se muestren allí los datos cuando te muevas por la grid. Puedes modificar también directamente en la dbgrid pero queda poco profesional hacer llenar al usuario una rejilla.
6. Finalmente, para entrar en modo edición, introduce los botones siguientes con el código:
6.1 "Crear registro" Dataset. Append;
6.2 "Editar registro" Dataset. Edit;
6.3 "Cancelar edición" Dataset. Cancel;
6.4 "Aceptar edición" Dataset. Post;
6.3 "Eliminar registro" Dataset.Delete;
2. Introduces un componente TQuery con la property Requestlive a true y con la linea: select * from tabla en la property SQL.
3. Introduces una dbgrid y un tdatasource y unes la dbgrid con el tdatasource mediante la property datasource y el tdatasource lo unes a la query mediante la property dataset.
4. Activas el tquery y verás los datos en la dbgrid.
5. Para editarlos introduce componentes tdbedit, tdbmemo, etc. para cada campo de la tabla a modificar/insertar y une las propertys datafield y dataset para que también se muestren allí los datos cuando te muevas por la grid. Puedes modificar también directamente en la dbgrid pero queda poco profesional hacer llenar al usuario una rejilla.
6. Finalmente, para entrar en modo edición, introduce los botones siguientes con el código:
6.1 "Crear registro" Dataset. Append;
6.2 "Editar registro" Dataset. Edit;
6.3 "Cancelar edición" Dataset. Cancel;
6.4 "Aceptar edición" Dataset. Post;
6.3 "Eliminar registro" Dataset.Delete;
Quiero agradecerte por ayudarme, solo que cuando le cambio la propiedad de active al TQuery me sale un error que no se encuentra la tabla o que no existe el directorio, esta mal direccionada ya se pero no se como redireccionarla para que me salga la dirección donde se encuentra la bases de datos. El error es el siguiente:
table does not exist.
file or directory does not exist.
File:C:\Archivos de programa\Borland\Delphi4\projects\TablaClientes.db.
la carpeta en la cual tengo la base de datos es
C:\Documents and Settings\Mauricio\Mis documentos\Nuevo Proyecto\Sisincopa.mdb,
Te agradezco que me puedas ayudar, gracias.
table does not exist.
file or directory does not exist.
File:C:\Archivos de programa\Borland\Delphi4\projects\TablaClientes.db.
la carpeta en la cual tengo la base de datos es
C:\Documents and Settings\Mauricio\Mis documentos\Nuevo Proyecto\Sisincopa.mdb,
Te agradezco que me puedas ayudar, gracias.
Otra duda, tu que me recomiendas, como de la anterior forma no me salia, cree el formulario por el form wizard, la base de datos no se encontraba a simple vista, en la sección donde tenia que seleccionar el nombre de la base de datos y el alias y todo lo demás, seleccione el alias que cree al momento de configurar el dbe, me sale todo a excepción de que en vez de un query hay una tabla, al momento de ejecutar la aplicación me pide una clave de access y hay quedo por que no me la se y segundo, como podría cambiar o mejor a un quitar esa parte y que lo de la contraseña la de yo pero por código dentro de la aplicación para así llevar los niveles de seguridad del software, te agradezco que me ayudes.
pdta: que pena molestarte tanto es solo que en mi empeño de aprender muchísimo de delphi y ganarle a mi mismo y a mis compañeros estoy tan apurado.
pdta: que pena molestarte tanto es solo que en mi empeño de aprender muchísimo de delphi y ganarle a mi mismo y a mis compañeros estoy tan apurado.
me sirvio muchismo tu colaboracion, yo puedo hacer lo mismo si creara la base de datos por interbase, si me puedes explicar mas detalladamente o explicarme una forma mas segura si la hay. muhisimas gracias
Por Interbase es el mismo procedimiento, sólo que cambiando el ODBC.
En cuanto a seguridad o manera de hacer, creo que el uso del Tdatabase es la forma más segura y adecuada.
En cuanto a seguridad o manera de hacer, creo que el uso del Tdatabase es la forma más segura y adecuada.
Disculpame por molestarte otra vez, la duda que tengo es la siguiente, en modo de diseño, dentro del Tdatamodule pongo un datasurce y un ttable, los relaciono, en el table escojo la base de datos escojo la tabla de la base de datos que en este caso es Clientes pero al momento de cambiar la propiedad a true del active de la tabla me sale un error que dice invalid field type.. no se que querrá decir por que con otras tablas si se puede activar la tabla, no se que pasa estoy parado en este punto y no se que hacer, te pido de favor que me colabores, muchísimas gracias.
Esto suele ocurrir cuando has creado campos persistentes en la table y luego has cambiado su tipo en la bbdd y por lo tanto no coinciden los campos. En la tdbgrid también puedes crear columnas pero no recuerdo si hay tanta implicación de tipos.
En cualquier caso, haz doble clic sobre el ttable y elimina los campos persistentes que aparezcan y luego vuelve a ñadirlos si así lo deseas, botón derecho Add All Fields. Prueba ahora. Si no lo consigues, borra el componente y pon otro o usa tquerys que es una forma de trabajar más óptima en el caso de que trabajes con muchos registros. Piensa que el ttable te carga todos los registros cada vez.
Si usas tquery, parametrízala de la manera:
Pon un tquery con el código en la property SQL:
select * from tabla where cantidad = :pcant
Para abrirla:
procedure consulta(valor : integer);
begin
with tquery do
begin
parambyname('pcant').AsInteger := valor;
open;
end;
end;
En cualquier caso, haz doble clic sobre el ttable y elimina los campos persistentes que aparezcan y luego vuelve a ñadirlos si así lo deseas, botón derecho Add All Fields. Prueba ahora. Si no lo consigues, borra el componente y pon otro o usa tquerys que es una forma de trabajar más óptima en el caso de que trabajes con muchos registros. Piensa que el ttable te carga todos los registros cada vez.
Si usas tquery, parametrízala de la manera:
Pon un tquery con el código en la property SQL:
select * from tabla where cantidad = :pcant
Para abrirla:
procedure consulta(valor : integer);
begin
with tquery do
begin
parambyname('pcant').AsInteger := valor;
open;
end;
end;
- Compartir respuesta
- Anónimo
ahora mismo