Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-03-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
insertar en tablas paradox

hola tengo un problema cuando intenmnto insertar varios registros nuevos a la ves con un ciclo while en la tabla el primero me lo acepta pero en el segundo me da key violation este es el codigo que estoy utilizando


Código Delphi [-]
if edt2.Text=edt1.Text then
begin
qry1.Active:=False;
qry1.SQL.Text:='SELECT MAX(NUM_REG) AS NUM_REG FROM '+Tab+'';
qry1.Active:=True;
A:= qry1.fieldbyname('NUM_REG').AsInteger+1;
qry2.Active:=False;
qry2.SQL.Text:='select * from Modelos where NUM_REG='+frmPrincipal1.dbedtNUM_REG.Text+'';
qry2.Active:=True;


  try
    qry2.First;
    While not qry2.Eof do
    begin
      qry1.Active:=False;
qry1.SQL.Text:='SELECT MAX(NUM_REG) AS NUM_REG FROM '+Tab+'';
qry1.Active:=True;
A:= qry1.fieldbyname('NUM_REG').AsInteger+1;
    tbl1.Insert;
    tbl1.FieldByName('NUM_REG').AsInteger := A+1;
    //A:=A+1;
    tbl1.FieldByName('TIPO_POLI').AsString := cbb1.Text;
    tbl1.FieldByName('NUM_CTA').AsString := qry2.FieldByName('NumCta').AsString;
    tbl1.FieldByName('CONCEP_PO').AsString := qry2.FieldByName('ConcepPoliz').AsString;
    tbl1.FieldByName('DEBE_HABER').AsString := qry2.FieldByName('DebeHaber').AsString;
    tbl1.FieldByName('MONTOMOV').AsFloat := qry2.FieldByName('Monto').AsFloat;
    tbl1.FieldByName('NUMDEPTO').AsInteger := qry2.FieldByName('Depto').AsInteger;
    tbl1.FieldByName('TIPCAMBIO').AsFloat := qry2.FieldByName('NUM_REG').AsFloat;
    tbl1.FieldByName('REFERENCIA').AsString := qry2.FieldByName('TipoCambio').AsString;
    tbl1.FieldByName('NUM_PART').AsInteger := qry2.FieldByName('Partidas').AsInteger;
    tbl1.FieldByName('CONTRAPAR').AsString := '0';
    tbl1.FieldByName('NUM_POLIZ').AsString := '    '+dbedtNUM_REG.Text;
    tbl1.FieldByName('FECHA_POL').AsDateTime := qry2.FieldByName('Fecha').AsDateTime ;
    tbl1.Post;
    qry2.Next;
    end;
    ShowMessage('La Partida ha sido contavilizada');
    frmPrincipal1.Query1.Active:=False;
    frmPrincipal1.Query1.SQL.Text:='UPDATE INTCOI01 SET STATUSCLI='+QuotedStr('C')+' WHERE NUM_REG='+frmPrincipal1.dbedtNUM_REG.Text+'';
    frmPrincipal1.Query1.ExecSQL;

  except
    ShowMessage('La partida ya ha sido contavilizada con anterioridad');
  end;

gracias por la ayuda
Responder Con Cita
  #2  
Antiguo 17-03-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
A=

creo que tu problema esta cuando asignas el valor de A

Código Delphi [-]
 
A:= qry1.fieldbyname('NUM_REG').AsInteger+1;

 
    tbl1.Insert;

 
    tbl1.FieldByName('NUM_REG').AsInteger := A+1;

aun cuando le sumas uno el valor siempre sera el mismo, por que toma como valor el numero de registros que te arroja la consulta que esta fuera del ciclo.

lo correcto seria dejar
Código Delphi [-]
 
 
A:= qry1.fieldbyname('NUM_REG').AsInteger+1;

antes de comenzar el ciclo y colocar

Código Delphi [-]
 
A:=A+1;


dentro del ciclo, justo antes de
Código Delphi [-]
qry2.Next;
Saludos...
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita
  #3  
Antiguo 17-03-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
muchas gracias por responder mira eso ya lo intente y aun asi me tira el error pero lo raro es que tengo 7 documento en los cuales la diferencia solo es el nombre y uno de los documento si me lo guarda pero los otros 6 no y son iguales en todo porque incluso los traigo de la misma tabla no se si me doy a entender bien.
Responder Con Cita
  #4  
Antiguo 17-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jomah.

Al igual que kapcomx, pienso que el error anda por ahí...

De este modo tendría que funcionar:
Código Delphi [-]
function ProxNumReg(AQuery: TQuery; tbName: string): Integer;
begin
  with AQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Text:= 'SELECT MAX(NUM_REG) AS NUM_REG FROM '+tbName;
    Open;
    Result:= FieldByName('NUM_REG').AsInteger + 1;
    Close;
  end;
end;

...
begin
var
  Num: Integer;
begin
  Num:= ProxNumReg(qry1, Tab);
  qry2.First;
  try
    while not qry2.Eof do
    begin
      tbl1.Insert;
      tbl1.FieldByName('NUM_REG').AsInteger:= Num;
      tbl1.FieldByName('TIPO_POLI').AsString := cbb1.Text;
      tbl1.FieldByName('NUM_CTA').AsString := qry2.FieldByName('NumCta').AsString;
      tbl1.FieldByName('CONCEP_PO').AsString := qry2.FieldByName('ConcepPoliz').AsString;
      tbl1.FieldByName('DEBE_HABER').AsString := qry2.FieldByName('DebeHaber').AsString;
      tbl1.FieldByName('MONTOMOV').AsFloat := qry2.FieldByName('Monto').AsFloat;
      ...      
      tbl1.Post;
      Inc(Num);
      qry2.Next;
    end;
  except
    ...
  end;
  ...
Claro que luego tendrías que actualizar el valor de NUM_REG en la tabla correspondiente.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 17-03-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
key violation

el key violation te lo arroja por que estas intentando agregar un valor repetido en un campo del tipo primary key, y estoy casi seguro que el problema radica en el valor de A (lo cual tambien confirma el compañero ecfisa).

por eso razon el primero lo agrega bien y como no se actualiza al intentar agregar el segundo ahi es donde te avienta el error.

Checa la solucion del compañero Ecfisa, me parece que esa seria la solucion.

Saludos
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita
  #6  
Antiguo 19-03-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
si me pone el siguiente numero pero por alguna razon la tabla me sigue tirando error puse un memo para q pusiera toda la informacion hay y en efecto pone 16 y a la siguiente vuelta el 17 pero aun asi tira error y noce que otra parte puede estar mal.
Responder Con Cita
  #7  
Antiguo 19-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jomah.

Una consulta, ¿ Revisaste si el campo NUM_REG de tbl1 está declarado como autoincremental ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 20-03-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
gracias ya lo he solucionado era que al ingresar los registros no estaban ordenados y tenian que insertarse en orden y por eso daba el error
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
Insertar dato en Tabla Paradox Abuelo7 Conexión con bases de datos 11 09-10-2008 23:09:12
Insertar numero en tabla paradox dayser C++ Builder 8 24-07-2006 20:23:47
Insertar con Paradox User_Baja_2 Conexión con bases de datos 3 25-04-2006 18:46:38
al insertar algo en una tabla paradox..... Rafe Conexión con bases de datos 4 02-08-2005 17:44:10
Insertar una imagen JPG en una tabla paradox David Tablas planas 2 24-11-2004 17:04:05


La franja horaria es GMT +2. Ahora son las 08:44:56.


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