Ver Mensaje Individual
  #1  
Antiguo 16-03-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Reputación: 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