Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2020
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Delphi INSERT clave Primaria

Estimados, estoy por empezar un nuevo proyecto con Delphi XE5, Firebird 2.5 y una fuente de dato externa.

Diariamente realizaré una consulta a la fuente externa de los datos de ese día y los resultados los voy a registrar en Firebird por medio de Delphi.
Si por algún motivo realizo la consulta más de una vez en el día se podrían duplicar registros.

La idea es recorrer los registros de la consulta e ir Insertándolos en Firebird, pero quiero evitar consultar por la llave primaria previamente si existe el registro antes de insertarlo.

Como puedo hacer más eficiente esto, quizás el mismo motor de Firebird pueda descartar cuando esto ocurra y que la sentencia INSERT este dentro de un TRY.

Código Delphi [-]
...
clientdataset1.First;
while not clientdataset1.Eof do
begin

inc(contador);

try

ibsql1.sql.Clear;
ibsql1.SQL.Add('insert into tabla (llave, descripcion, monto)');
ibsql1.SQL.Add('values');
ibsql1.SQL.Add('(:llave, :descripcion, :monto)');
ibsql1.ExecQuery;
except

end;


clientdataset1.Next;
end;
...


Se les ocurre alguna otra forma de hacerlo ??

Saludos.
Responder Con Cita
  #2  
Antiguo 22-05-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mś bien:
Código Delphi [-]
ibsql1.sqltext := 'insert into tabla (llave, descripcion, monto) values :llave, :descripcion, :monto)';

clientdataset1.First;
while not clientdataset1.Eof do
begin
  try
    ibsql1.close;
    ibsql1.params[0].asloquesea := clientedatset1....
    ibsql1.params[1].asloquesea := clientedatset1....
    ibsql1.params[2].asloquesea := clientedatset1....
    ibsql1.ExecQuery;
  except
  end;
  clientdataset1.Next;
end;
Responder Con Cita
  #3  
Antiguo 22-05-2020
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Puedes usar update or insert

Código SQL [-]
ibsql1.sql.Clear;
ibsql1.SQL.Add('update or insert into tabla (llave, descripcion, monto)');
ibsql1.SQL.Add('values(:llave, :descripcion, :monto)');
ibsql1.ExecQuery;

Saludos cordiales
Responder Con Cita
  #4  
Antiguo 22-05-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por cloayza Ver Mensaje
Puedes usar update or insert
Responder Con Cita
  #5  
Antiguo 23-05-2020
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
Cita:
Empezado por cloayza Ver Mensaje
Puedes usar update or insert
No sabía que se podía hacer eso
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Clave primaria a 0 aromigaret Conexión con bases de datos 15 05-02-2016 23:55:03
Ayuda Con Clave Primaria pablo2244 MySQL 4 30-05-2005 21:49:01
cambiar la clave primaria con SQL User_Baja_2 SQL 8 18-06-2004 08:41:31
Cambiar clave primaria pinoxito Firebird e Interbase 7 13-01-2004 21:51:26
cambiar una clave primaria User_Baja_2 SQL 3 06-10-2003 18:03:38


La franja horaria es GMT +2. Ahora son las 21:41:45.


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
Copyright 1996-2007 Club Delphi