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)
-   -   Error en FireDac y Access (https://www.clubdelphi.com/foros/showthread.php?t=92116)

Tecnofacil 01-08-2017 13:40:54

Error en FireDac y Access
 
Buenas equipo.
Estoy armando un pequeño programa para llevar un registro de los trabajos de un amigo mecánico, como su PC es vieja ni a palos corría MySQL o similar así que le hice una base en Access y lo conecto con Firedac, todo funciona de maravillas excepto en la tabla clientes que al darle Append a Firedac me queda en el ultimo registro, le agregue varios registros a mano en access pensando que era por ser el primer registro pero nada, sigue en lo mismo, la clave principal es autoincremental como todas las otras tablas. Alguna idea de lo que puede estar fallando, o alguna alternativa "liviana" a access?.

Casimiro Notevi 01-08-2017 15:54:56

Cambia a Firebird, que ocupa menos y es rápido, ágil, potente, escalable, libre y gratis...
En cuanto al problema, ¿qué quieres decir con que queda el último?

bitbow 01-08-2017 18:49:24

Firebird o Sqlite (si no vas a manejar storeprocedures).

Salidos.

Tecnofacil 01-08-2017 22:14:44

Cita:

Empezado por Casimiro Notevi (Mensaje 519905)
Cambia a Firebird, que ocupa menos y es rápido, ágil, potente, escalable, libre y gratis...
En cuanto al problema, ¿qué quieres decir con que queda el último?

Supongamos que tengo tres registros de clientes, (los cuales cargue desde access),
Cita:

Pedro
Juan
Pablo
cuando quiero agregar un cliente nuevo por ejemplo "Daniel" haciendo
Código Delphi [-]
fdq_clientes.append;
//Código 
fdq_clientes.post;
Lo que hace es grabar "Daniel" en el lugar de "Pablo"
Cita:

Pedro
Juan
Daniel

De todos modos ya estoy incursionando en SQLite

Gracias a todos

Neftali [Germán.Estévez] 03-08-2017 10:27:44

Yo te diría que para hacer una simple prueba, pruebes a hacer lo mismo utilizando ADO en lugar de FireDAC.

Tecnofacil 04-08-2017 16:37:14

Cita:

Empezado por Neftali (Mensaje 519938)
Yo te diría que para hacer una simple prueba, pruebes a hacer lo mismo utilizando ADO en lugar de FireDAC.

Hola Neftali.
No quiero sacrificar demasiado tiempo a ese mini-proyecto, (ad-honorem), así que la solución rápida fue ponerle una condicional
Código Delphi [-]
if dbedit_dominio <> '' // Si tiene texto es porque se quedó en el ultimo registro
   begin
      fdq_clientes.cancel;
      fdq_clientes.append;
   end;
Eso porque descubrí que la primera vez que le das "Nuevo" se quedaba en el ultimo registro pero si le daba "Cancelar" y de nuevo al botón "Nuevo" lo hacia bien.

Casimiro Notevi 04-08-2017 17:04:51

Un registro no se inserta en ningún sitio fijo, puede ser al final, al principio, realmente en cualquier sitio que tenga espacio, por ejemplo en un registro borrado, etc.
Tú eres el encargado de mostrarlo en el orden que quieras:
Código SQL [-]
select * from tbClientes order by codigo

Tecnofacil 07-08-2017 15:55:23

Cita:

Empezado por Casimiro Notevi (Mensaje 520009)
Un registro no se inserta en ningún sitio fijo, puede ser al final, al principio, realmente en cualquier sitio que tenga espacio, por ejemplo en un registro borrado, etc.
Tú eres el encargado de mostrarlo en el orden que quieras:
Código SQL [-]
select * from tbClientes order by codigo

Correcto, el problema es que reemplaza al ultimo registro agregado.

Casimiro Notevi 07-08-2017 17:37:40

Pon tu código fuente.

bitbow 07-08-2017 22:09:19

Tu caso es muy raro por lo cual mas bien creo tienes alguna linea de mas, seria bueno que pusieras la seccion de codigo donde inertas y tambien como editas.

Saludos.

Tecnofacil 07-08-2017 23:32:03

No hay mucho código. Firedac lo hace todo.
Código Delphi [-]
procedure TF_clientes.btn_nuevoClick(Sender: TObject);
begin
  fdq_clientes.append;
  pnl_campos.Enabled := True; // Habilito panel con cuadros de texto para agregar datos
  DBEdit1.SetFocus ;  // Me posiciono en el primer campo
  // Deshabilito/habilito botones
  btn_editar.Enabled := False;
  btn_nuevo.Enabled:= False;
  btn_grabar.Enabled := True;
  btn_cancelar.Enabled := True;
  btn_salir.Enabled := False;
  DBGrid1.Enabled := False;
end;

Casimiro Notevi 07-08-2017 23:41:12

Seguro que hay más código :)


La franja horaria es GMT +2. Ahora son las 07:41:08.

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