Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Access!! (https://www.clubdelphi.com/foros/showthread.php?t=9053)

PTW 13-04-2004 12:01:49

Access!!
 
Tengo una aplicacion en Delphi que trabaja con una base de datos en Access.
En mi aplicacion, tengo mis componentes TTable asociado a cada tabla de la base de datos

Al intentar añadir un nuevo registro a una Tabla (A), utilizo los metodos

TablaA.Open;
TablaA.Append;
..........
Inserto los campos de la tabla;
..........
TablaA.Post;
TablaA.CLose;

Pues al hacer eso, me da un error (en el TablaA.Post) diciendo que "No se puede agregrar o cambiar el registro porque se necesita un registro"

¿Por que me da ese error? Antes habia trabajado con Paradox, y nunca me habia dado ese problema. ¿Para manipular una base de datos Access hay que utilizar otros metodos del componente Table?

Muchas gracias por todo

guillotmarc 13-04-2004 12:10:43

Hola.

Para acceder a Access te recomiendo que utilizes los componentes ADO en lugar de los componentes BDE.

Saludos.

PTW 13-04-2004 12:48:07

Ado
 
Muchas gracias po responder tan rapido :)

Mis dudas sobre ADO son:

Para utilizar ADO, ¿solo tengo k configurar los componentes ADOCOnnection (cadena de conexion...) ,ADOTable y ADOQuery (en el caso de utilizar consultas)? ¿No hace falta definir la base de datos en ningun otro lado (como suele ocurrir con BDE?

Cuando tienes la aplicacion terminada y vas a instalarla en el cliente ¿ no se debe configurar la base de datos en ningun lado, o ya va implicita en la programacion de la aplicacion (ADOCOnnection)? Me explico. con BDE, cuando tienes terminada la aplicacion, en el cliente debes definir la base de datos en el BDE. ¿EN aDO no se hace nada?

En ADO, ¿se pueden utilizar TADOTable.append, TADOTable.post,......? ¿o existen otros metodos mejores para trabajar con Access?

Y una ultima cosa, me puedes indicar una cadena de conexion para una tabla Access con usuario y contraseña. Como ves estoy un poco verde en ADO :rolleyes: , y me urge la terminacion de la aplicacion. De ahi que optara por utilizar BDE.

Muchas gracias por todo y a todos
Salu2

luchin001 13-04-2004 23:29:29

Hola
si utilisas BDE, por que en ves de append no utlisas table1.insert para agregar un registro?

table1.active := true;
table1.insert;
......tus campos;
table1.post;
table1.flushbuffers;

luis

guillotmarc 14-04-2004 17:26:34

Cita:

Empezado por PTW
Para utilizar ADO, ¿solo tengo k configurar los componentes ADOCOnnection (cadena de conexion...) ,ADOTable y ADOQuery (en el caso de utilizar consultas)? ¿No hace falta definir la base de datos en ningun otro lado (como suele ocurrir con BDE?

Exacto, solo tienes que configurarlo en el ADOConnection, no es necesario configurarlo en ningún otro lugar.

Cita:

Empezado por PTW
Cuando tienes la aplicacion terminada y vas a instalarla en el cliente ¿ no se debe configurar la base de datos en ningun lado, o ya va implicita en la programacion de la aplicacion (ADOCOnnection)?

No, no hace falta configurarla en ningún lado. Simplemente, actualiza la ConnectionString (por código, antes de hacer el Open de la conexión), para que la ruta a la base de datos sea la correcta en ese Ordenador.

Cita:

Empezado por PTW
Y una ultima cosa, me puedes indicar una cadena de conexion para una tabla Access con usuario y contraseña.

No es necesario, simplemente pulsa el botón que aparece en la propiedad ConnectionString del componente, y pulsa el botón Build para invocar un asistente que te ayudará a construir la cadena de conexión.

NOTA : Para conectar a Access, selecciona el Microsoft Jet 4.0 OleDB Provider.

Saludos.

agova 15-04-2004 02:00:10

tu problema inicial "no se puede agregar el registro por que se nesecita ...." vine dado por una sencilla razon INTEGRIDAD REFERENCIAL, esto quiere decir que las restricciones en las relaciones de tu base de datos access no te permiten dar de alta por que necesitas un registro maestro para poder agregar ese registro detalle.

en algunos manejadores SQL(PostgreSQL por ejemplo) esto viene dado por la clausula CONSTRAINT


La franja horaria es GMT +2. Ahora son las 19:07:37.

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